Archive for the 'Software Development is Sometimes Sorta Like' Category

Software Development is Sometimes Sorta Like… Driving to the Airport

This is the second in a series of draft chapters from the forthcoming book “Software Development is Sometimes Sorta Like… - 25 Things Almost, But Not Quite, Entirely Unlike Your Next Software Project”. This book does not yet have a publisher and so is not yet available for pre-order.

Software Development is Sometimes Sorta Like Driving to the Airport

Two people, Alice and Bob, unbeknownst to each other, needed to be at the airport Friday morning to catch a 10AM flight from Chicago to Oregon. Alice and Bob each have nice vacation homes in the Oregon hills near the ocean.

The night before the flight, Alice and Bob both packed their bags and made sure they had their plane tickets. They even both double-checked that they had toothpaste, since it is something they have both left behind on various business trips.

Alice spent ten more minutes thinking about her trip. Bob spent ten minutes reading the paper - he knew he had forgotten toothpaste before, but he figured if he forgot anything else, he could buy it after he lands.

Alice tried to make a list of things she needed for her trip. She started writing things down, and realized that she had already packed everything on her list. She kept writing, and after 10 minutes or so, it was easy for her to remember all of the stuff she had already packed, but she wrote it down anyway. She wrote down “keys to the vacation home”, “toothpaste”, “sexy nightgown”, “my book”, then did a double-take and realized the keys to the vacation home were in the kitchen drawer. She checked the rest of the list, marking everything but the keys as packed, then grabbed the keys out of the kitchen drawer and put them in her suitcase.

Bob finished reading the paper, glanced at his suitcase, noticed that he did, in fact, have plenty of underpants, and went to bed.

We now know what is going to happen to Bob. At some point, he, too, will realize that he is missing the keys to his vacation home. Even if he had made a packing list, he might have still forgotten to pack his keys. Bob doesn’t get much vacation, so it’s not surprising that he would forget.

What is important for Bob now is to understand how time gets more expensive as time goes on.

Bob put his bag in his car and started driving. It normally takes 30 minutes for him to drive to the airport. He left at 8:30 to give himself an hour to park and get through airport security. At 8:45, half way to the airport, he realized he had forgotten his keys. He thought about turning back, but it was another 5 miles to the next exit. He finally decided to continue to the airport - he had an unrefundable ticket that couldn’t be rescheduled, and if he missed his flight he would be out $200, plus there wasn’t another flight until Saturday.

He got to the airport early, at 8:50, and found out that his flight had been delayed a half hour to 11AM. Lucky break. He could drive home to get his keys, but he would have to get his car out of long-term parking (10 minute tram ride), pay for a day’s worth of parking ($14), drive home and back (30 minutes), park again (another 10 minute tram ride), and go back through security (another 10 minutes). There was time, but it would have been a huge pain, plus an extra $14 for the parking that just seemed unfair.

He could have called his neighbor, Carol, and asked her to drive the keys out to the airport for him, but he’d still have to go outside of the security gates, and he kind of liked Carol and would hate to ask her to go out of her way, and plus it would have been a bit embarassing to tell her that he forgot something.

Bob bought a magazine and sat down next to a charming young lady. He looked at the tags on her bag and noticed that her name was Alice. A nice name. As he read his magazine, he noticed Alice’s perfume. He liked it. He relaxed a bit and thought about his pending vacation, and wondered if Alice would be on his flight.

As Bob waited for his delayed flight, another announcement was made - another 40 minute delay! Not too surprising, this airline was cheap, but they were also usually late. He thought again about calling Carol, but Alice’s perfume kept distracting him. He decided he’d rather stare at Alice’s bare ankles while he pretended to read his magazine rather than call Carol to ask for his keys.

Finally, good news came over the public address system - the flight would be departing at 11:40, and boarding would begin immediately. Alice put her romance novel in her oversized purse and glanced fetchingly at Bob - “Guess this is us? Too bad I’m in row 39, I hope it’s not lonely back there.” Bob glanced at his boarding pass - seat 39C. He tried to act cool. “Yep, this is us! And it is a long flight, I hope you’re not too lonely back there.”

“We’ll see…”, says Alice with a smile, and Bob watched her walk slowly to the boarding line.

Bob headed back to Row 39 and saw Alice sitting in 39B. She was watching him walk back, as if she already knew he’d be sitting next to her. He sat down. “Well what do you know,” said Alice with a smile.

Suddenly, a stewardess made an announcement to the plane. “The engine that we repaired earlier has caught fire once again and it will be 45 minutes until the flames are out. You may return to the airport if you like, we will board again in 35 minutes.” Bob sat and chatted with Alice, and the 45 minute delay zipped by quickly. He couldn’t believe his good luck - Row 39 never looked better.

The plane finally pushed back from the gate, taxied to the runway, and was airborne. Goodbye Chicago! Hello Oregon! Bob and Alice talked the whole way. Alice laughed at all of Bob’s jokes, and stared deeply into his eyes when he talked about his hobbes, his work, and his dreams. When the plane touched down in Oregon, Bob was a bit disappointed that the flight had gone by so quickly.

As Bob waited for his suitcase at baggage claim, he wondered where Alice had gone. He also thought about his keys and how he would get into his vacation home. He didn’t have any extra keys in Oregon. He started making plans to call a locksmith. The vacation home was a two hour drive from town, so he resigned himself to spending 4 or 5 hours waiting for a locksmith to meet him up there. At least he could call from the airport to get the ball rolling.

He went to a payphone and dialed information. He got the number for two locksmiths. It was still early on Friday, so he didn’t anticipate any problems. The first locksmith he called didn’t pick up the phone. The second one was answered by a recording: “Thank you for calling Bumpers Locksmith Service. The Oregon Locksmith Union strike negotiations are still underway, though we don’t expect a resolution to our problems until the end of the month. Until then, our services are unavailable.”

“Locksmith Union?? Who are they striking against? What the hell is going on?,” Bob wondered to himself. That option was definitely out. He started thinking about how he could break in to his own home, but he knew he had meticulously secured his house against intruders the last time he was here, he knew he would be away for a long time and everything was locked down tight.

He called Carol’s cell phone. She could FedEx the keys, and he could have them tomorrow. He could spend the night in a hotel room, maybe get a nice deluxe room and order room service, that wouldn’t be too bad, then he’d have the keys tomorrow morning at 10AM. Carol picked up.

“Carol, this is Bob. I’m in Oregon.”

“Bob, how nice. It must be lonely there. You should think of bringing a guest the next time you go…”

“Carol, I need you to do be a favor.”

“Hm… too bad you didn’t think of me until after you left… but, anything you want, Bob, just tell me what it is. You need me to fly out there?”

“Carol, no. I need you to go in my kitchen and get my vacation home keys, put them in a FedEx envelope and ship them to me Saturday delivery. I left the keys there and I need them. The key to my house is under the door mat.”

“You want me to ship your keys to you? That’s it?”

“Carol, come on, I’ll owe you one…”

“Hm, Bob, I don’t know how to break this to you, but I’m on a bit of a vacation myself, I’m driving to see my parents and I’m already 5 hours out of town. By the time I got back to your place, it would be too late to send your keys…”

“Ah, nuts! Oh well. Talk to you later.” Bob hung up.

Carol eased back on to her couch, grabbed her copy of People, and looked out her side window at Bob’s house. “Am I being too cruel?,” she wondered. “Nah…”

An hour later, Bob had his bags and his rental car, and he hit the road to his vacation home. There had to be a way in. He would break a window if he had to… but he knew all of the first floor windows were boarded up for the winter.

Four hours later he arrived at his front door. He knew right away that all was lost. There was no way in, not without a crowbar, and by the time he got back to town to buy a crowbar, all of the shops would be closed. Hell, the Crowbar Sellers Union was probably on strike, too.

He noticed a light on in the home down the street, about a quarter of a mile. It was dusk, the sky was beautiful. The blueberry bushes along the road beckoned with ripe fruit. Bumble bees buzzed peacefully from flower to flower. He could see the ocean a mile off, could smell it, could hear it. DAMN KEYS!

He was about to knock at the neighbor’s door when it opened. His jaw dropped. It was Alice. Her hair was wet, and she was wearing only a towel. He stole a glance at her naked ankles.

“Well, what a surprise,” said Alice, sounding not surprised at all. Her cabin looked warm, and candles here and there flickered a bit in the breeze from the open door.

Bob was shocked, but still upset over his keys. “ALICE! Thank God! I need your help! I don’t have my keys! To my cabin! I can’t have them shipped! I’m screwed!”

Alice looked a bit hurt, as if she expected Bob to give her a handful of freshly picked wildflowers and a bottle of cold Champagne. Instead she saw a raging lunatic who couldn’t even remember to bring his own keys.

“Um, I’m sorry to hear that Bob. Good luck.” The door closed. Bob was left out in the dark.

As he sat on the side of the dirt road weeping, he noticed a car pull up to the cabin on the other side of Alice’s place. The California license plate read simply “DAVE.” Bob watched who he presumed was Dave get out of his Lexus, walk briskly up to the door, turn a key in the lock, and go inside. Bob shook his fists at the sky… “WHY??????????”

Bob walked slowly back to his car. As he walked with his head hanging low, he decided he would just go back to the airport and wait for the next flight home in the morning. There would always be next year. He decided he didn’t want a vacation anyway. As he drove down the dirt road, his headlights flashed on Dave. Dave was walking toward Alice’s cabin, a bouquet of wildflowers in one hand, and a bottle of Champagne in the other.

Software Development is Sometimes Sorta Like… Building a House

This is the first in a series. Software development is software development, it has its own unique challenges and it is not exactly like building a house or any of the other things that I will be comparing it to. But there are analogies that can be drawn, and I think they can be constructive, or at the very least, entertaining. So here we go.

Software Development is Sometimes Sorta Like Building a House

  • If you put the drywall up before the plumbing is in, you will tear down the drywall to put the plumbing in.
    • It is hard to envision what the final house will be like until the drywall is up.
    • You may be eager to put up the drywall to feel what the final product will be like.
    • This desire will be strongest if this is your first house.
    • If this is your 500th house, you will fire anybody who puts up drywall before the plumbing is in.
    • Maybe you could attach the drywall temporarily with easy-remove attachments. The drywall will get damaged, and the easy-to-remove attachments will be in the final house. The ultimate owner of the house will not be happy when his ceiling falls on his head while he is reading the Sunday paper.
  • Every house is unique. Every house is the same.
    • If you are in charge of building a house, there have been milliions built just like it.
    • The house you are building is unique. It may even be a one of a kind design envisioned by a famous architecture and design firm.
    • No matter how unique your house is, there are expectations for it
      • The house will not fall down
      • All doors will close tightly and reliably
      • The electrical system will be sufficient and meet local standards and codes
      • The house will not be in danger of catching fire during normal use
      • The house will be visually appealing
      • The front door will be on the front
      • The garage door will open automatically
    • If you keep enumerating the requirements for your home, you will find that this construction project is almost exactly like every home ever built.
  • There are companies that build homes like this every day.
    • Some of them are wildly successful, profitable, and have highly satisfied customers.
    • Some of them go bankrupt, get sued, and have dissatisfied customers.
    • The successful companies do things differently than the unsuccessful companies.
    • What the successful companies do is usually no secret.
      • It is sometimes hard to believe that what they do leads to their success.
      • It is even harder to have the discipline to do these things that lead to repeatable success, unless you’ve done it before and have experienced the rewards.
      • The people who run bankrupt companies with dissatisfied customers that sue will tell you that the discipline followed by the successful companies is a load of garbage.
      • There may be successful companies that tell you what their successful competitors do is a wasteful load of garbage. Go work for these naysayers and you will find that they are in fact quite disciplined, follow many of the same techniques, but call those techniques by different names or have integrated them so deeply into their culture that they don’t see them as methodology at all.
  • Building a house is like building a house
    • Building a house is not like building a skyscraper
    • Building a house is not like building a back yard shed
    • Building a house is not like building a diorama for your 4th grade daughter
  • You need blueprints to build a house
    • You can build a diorama for your 4th grade daughter in an afternoon with just an idea in your head
    • You can build a back yard shed in two afternoons if you follow very detailed instructions very carefully, if all of the pre-fabricated parts have been drilled exactly right, if the bolts to attach them together are all in the package, and if there are no mistakes in the instructions. If there are problems, you face at least a week delay (to wait for your next weekend of free time) and possibly 6 to 8 weeks delay (to wait for the manufacturer to ship the correct parts).
    • To build a skyscraper, you will need about 10 years. Of course you can’t build a skyscraper without blueprints. But you need much more.
      • It will take 2-3 years minimum to secure a location desireable enough for your skyscraper
      • It will take another year or two to work through the political process to allow your skyscraper to be built there
      • You may never secure the site, or the permission to build there, so your project might not ever get off the ground
      • You can do some things in parallel
        • The design of the building will take 2-3 years to finalize
        • The architecture and detailed blueprints will take a year or two or three
      • After 3 to 10 years you can start construction
        • Construction will take 2-3 years if all goes well
        • Construction will take much longer, or never complete, or be completed with major, expensive-to-fix errors if any of the up-front planning was insufficient.
        • Somebody very experienced needs to be in charge of this phase. One supply, labor, design, or implementation glitch can delay the entire project for months.
        • If this is your first house, and you realize it is a skyscraper, leave the building and go find a house to work on. You don’t want this skyscraper to fall over because of you. More likely it would just never get built, in which case you will have wasted 5 years of your life on nothing.
        • If anything major goes wrong, the investors will lose all of their profit and some or all of their capital, even if the construction finally completes and the building appears to be a success.
    • You can build a house in a year if you know what you’re doing
      • If you have built this kind of house before, you will have detailed blueprints with corrections
      • You will have reliable suppliers for the components you need
      • You will have a trusted labor force that can follow the blueprints exactly and on time
      • You will know your customers’ rational and irrational expectations and meet or exceed those expectations
      • If you’ve been at this a while, you can build 10 or 100 houses in a year, because you will have many corrected blueprints, many reliable suppliers, and a large trusted labor force, and every house is almost exactly the same as long as you are willing to say “no” to the customer when they ask for the front door to be on the roof.
    • You can’t build a house in a year without help if you’ve never done it before
      • You may find yourself tearing the drywall down to put in plumbing
      • Then tearing it down again to put in an electrical system
      • Then putting in space heaters and window-unit air conditioners because you forgot to put in a centrail air system and you don’t want to tear down the drywall again
      • Then calling in the professionals when the house sinks halfway into mud and starts itself on fire

If you are building a house without blueprints, if this is the first house you are building and you are expected to build it in one year and exceed your customer’s expectations and you are just starting to recruit workers and find suppliers, if your customer requests the front door to be on the roof, if it seems like you are expected to build a skyscraper with the budget of a house, if you are expected to assemble a shed in a weekend with no pre-fab parts, no bolts, and no foolproof step-by-step instructions… you are in trouble, and it’s obvious that you are in trouble and that you will not be able to achieve the goal as expected. You would say “no, I can’t, and you’re an idiot for asking” if presented with any of these challenges.

Software development is sometimes sorta like building a house.