Bob On Development

Musings on the craft and business of software development









March 3, 2007

Software Development is Wicked

Filed under: — bob @ 7:23 pm

If there is anything inherently true about software development, it’s that it’s difficult. Or as some have said, wicked. As developers we need to realize we are solving “wicked problems” — problems with unstable problem statements, uncertain finsih criteria, no single objectively “right” solution, problems not exactly like any others that have been done before, few or no easy ways to experiment with possible answers, or many possible solutions to choose from. Often, all of the above.

Awhile back, I posted what would eventually prove to be the most popular post to date on this blog: “Software — Cheap!”. Superficially, it was a riff about freelance software project web sites that marry wildly ambitious but super-sketchy requirements with budgets so microscopic that you would be hard-pressed to get a leaky faucet fixed for the same money. This led me to remark about how, in the minds of some, software development is nothing more than a low-skill, mechanical exercise, like assembling Lego blocks.

The antidote to such thinking, I said, is to stop running from the reality that software development is inherently difficult — especially in the matter of project scoping and estimation. I even went so far as to suggest that in many instances there is no way to know how much time and effort a project is going to take, until you’re basically done with it. Now if that’s not wicked, what is?

A commenter to that post asked, “I don’t understand why you think that software cost can’t be measured or foreseen. I work for a consultancy firm. We do it all the time and it works.”

For the record, I give estimates, since customers understandably want them, and I do have a reasonable idea how much is involved in a project based on my understanding of the requirements at any given time. The problem is not the impossibility of measurement or foresight; it is the non-static nature of what you’re measuring.

By now, the so-called waterfall methodology where you do requirements gathering, development and testing in a linear sequence, has been pretty much discredited by anyone with eyes to see and ears to hear (here’s a good example). There is plenty of room for disagreement about the details, but it’s now widely acknowledged that a more iterative process is needed. Iterative approaches are non-intuitive for customers who don’t understand the differences between software development, and, say, house painting. But iterative approaches are more successful at producing quality software.

Fred Brooks in his seminal work, The Mythical Man-Month, taught us long ago the above principle in this way: “Throw one away — you will anyhow”. Brooks recognized that the only way to get a grip on a problem is to implement a solution. The first version of a solution, generally, is just a learning experience that needs to be ditched and the lessons applied to a second pass at the implementation.

Developers can (and do) ignore this principle, but as Brooks implacably states, they end up throwing one away anyhow. It might be swept under the carpet and not admitted to, but it gets done.

All of this is not to say that we can’t estimate, or that we shouldn’t do discovery or planning. But it is to acknowledge the substantial limitations on how accurately we can estimate, how completely we can discover all the requirements, how on-target our planning can be.

One big factor that limits the effectiveness of discovery is that in all non-trivial projects, discovery is a complex social interaction involving multiple stakeholders. It is as much a social and political exercise as a technical one. And generally, the signal-to-noise ratio sucks. Also, the desire of customers to actively and meaningfully participate often is very low; customers commonly do not expect to have any great level of involvement in the process. Thanks to the business world’s strong bias for action over thought, they just want to wave their hand, make a one-sentence request, and have you go away and Make It Happen. This only makes matters worse.

A few years back I worked with a client who had conceived the idea for a business-to-business web site. He had already “thrown one away” by paying an undergraduate at the local university to develop the product as a CD-ROM-based distribution, which was a total flop. I was able to take that fundamentally sound idea and translate it to the web. The site made my client a lot of money. He sold out to an east coast competitor, and went into much-deserved retirement.

Was my predecessor who did the first version an incompetent fool? No, he was an important part of the discovery and design process, even though we ended up changing a great deal the second time around. A year was spent on that “thrown away” design, and I’m sure my client hoped, naively, that he could start making money at the end of that year. But he was smart enough to realize that he needed to leverage that learning experience. He also believed enough in his concept to see it through.

Now my client, bored with retirement and free of his non-competes, is itching to reproduce his success with a slightly different twist. I get calls from him every few days, asking me how long I think it will take, what I think the best approach would be, how should he present the idea to this or that prospect. And you know what? I have a general idea, but I just don’t know exactly because I don’t have enough data. The client doesn’t, either. This might be version 3.0 of a great idea or version 1.0 of something that morphs out of that original idea. But my client is paying me for my time and we’ll work it all out together. And about the time we have a real grip on it … the project will be at least half done, I’m sure.

Recommended Further Reading

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(required)

(required)


Powered by WordPress

Augmentin Avandamet Rhinocort Elavil Gasex Glucotrol XL Zelnorm Vermox Penis Growth Oil Nymphomax Adalat Prograf Geriforte Medithin Avalide Lariam Viagra Erexor Sarafem Confido Himplasia Arimidex Fosamax ActoPlus Met Mentat Cardizem Hytrin Cafergot Lasuna Mycelex G Hyzaar Buy Pro Erex Buy Lincocin Buy Viramune Buy Micardis Buy Nymphomax Buy Omnicef Buy Effexor Buy Accutane Buy Levothroid Buy Cialis Jelly Buy Femcare Buy Amoxil Buy Aleve Buy Cephalexin Buy Lotrisone Buy Acticin Buy Touch Up Kit Buy Metabo UltraMax Buy Orgasm Enhancer Buy Penis Growth Pack Buy Levlen Buy Styplon Buy Aceon Cheap Loxitane Cheap Differin Cheap Geriforte Cheap Dramamine Cheap Sinequan Cheap Hoodia Cheap Nolvadex Cheap Womens Intimacy Enhancer Cheap Medithin Cheap Female Sexual Tonic Cheap Purinethol Cheap Inderal Cheap Flomax Cheap Orgasm Enhancer Cheap Zimulti Cheap Erexor Cheap Avandamet Cheap Ceftin Cheap Buspar Cheap ZMA Power Cheap Wellbutrin SR Cheap Hoodia Gordonii HG p57 Cheap Singulair Cheap Avandia Cheap Soma Credit reporting system For low credit scores Commercial credit report Understanding credit score Credit report and Florida free credit report Chase credit card status 3 credit reporting agencies Beacon credit score Federal credit reporting act To credit reporting agencies Fix your credit report On line credit card applications Credit card offers Card credit reward travel Credit score formula Credit reports from all Credit free instant report Annual report credit Order credit reports Instant personal credit report Credit beacon score Juniper credit card application Free instant credit reports Airline credit card miles National credit card debt Vue prepaid credit card Credit card debt calculator Chase credit card complaints Is credit score Elan credit card services Balance transfer credit cards Fix my credit score Credit card machines uk Check credit report fix Credit scores of Credit report uk Balance transfers credit cards Average credit score Increasing credit scores Is my credit score Business credit report Redit card pros cons Acceptable credit score Credit card business industrial Credit reports for Fast credit score increase Credit card debt facts On line credit report Free credit reporting Order credit report Chase credit card application Credit reporting act litigation Credit report consumer Clean up credit report Affect your credit score Credit report annual Credit report online Chase redit card Getting a credit score Credit card debt history Credit score after bankruptcy Credit scores meaning Stop credit card offer Ranked credit card offers Mobile credit card processing Linkpoint credit card machine Credit card applications in Credit report disputes Student credit card debt Credit reporting columbia house Credit report service Cheap credit card uk 0 credit card offer Credit report agencies Credit report score understanding Credit cards 0 apr Anual credit report Application aspen card credit Credit score higher Credit card debt management Citibank credit card offers Great credit card offer Free business credit reports Introductory offer credit card Money bank credit card Interpreting credit scores Get credit reports Free credit report Credit card apply online Credit score services Interest credit card offers Credit card debt eliminate Equifax credit reporting Instant credit card offer Credit card consolidation loans Bad credit score Credit card application uk Credit rating score scale Free credit score Experian credit report Credit report.com Article credit card debt Consolidation credit card debt Credit card consolidation uk Stopping credit card offer Read my credit report Obtain a credit report Mint credit card deal Raise my credit score Experian credit report uk Reports credit cards Hurt my credit score Discover credit card offer Good credit rating score Of my credit report Repairing credit score Credit reporting codes Credit reports on Hsbc credit card Credit card application online Repair my credit report Apr credit card offers Credit card debt advice Credit scores by Compare credit card offers Prepaid credit card companies Credit card debt laws Unlimited credit reports Annual credit report request Get my credit report Aarp chase credit card Card consolidation credit debt Credit report companies About credit scores Card credit debt free Transunion credit score Free credit card report Application card citi credit Corporate credit card application Credit scores work Consumer credit reports Credit scores mortgage Freecredit report Credit reporting service Credit card application with Credit scores and Personal credit report canada Credit report identity theft Free anual credit report Improving credit score Credit score uk My annual credit report Landlord credit report Credit score rates With a credit score Credit report government The credit reporting Up credit reports Instant credit reports Fre credit report Visa card bad credit Fair credit reporting act Freecreditreports Credit report repair service Free online credit report To increase credit score Bank one credit card American credit card debt Credit fix repair report Stop credit card debt Instant credit reports uk Low credit scores Colorado free credit report Free transunion credit report Of credit score Company credit report Credit reports with Personal credit score repair Credit scores only Obtain free credit score Cic credit report Eliminate credit card debt Free yearly credit reports The best credit score Credit report canada Wamu secured credit card Uk credit card debt Hsbc rs credit card Check credit report equifax Providian credit card company Secured credit or card Canada credit report Online Femcare Lipitor Muscle Pain Hydrocodone No Prescription Online Furosemide Online Inderal Online Maximum Lipotropics Online Viagra Soft Tabs Online Rythmol SR Levitra Actress Online Avalide Online Lynoral Online Neurontin Online Cardura Online Valtrex Online Fosamax Online Ditropan Online Diamox Online MetaboSafe Online Anafranil Online Viramune Online Advair Diskus Online Pro Erex Online Medrol Online Levaquin Online Echinacea Online Betnovate Online Prevacid Online Male Enhancement Oil Online Vasodilan Online Glucotrol XL Lorazepam Online Cymbalta Online Endep Online Confido Online Keftab Online Depakote Lortab Online Prozac Online Methox 400 Online Anabol AMP Online Tribulus Lipitor Side Affects Online Bentyl Online Dramamine Online Geodon Xanax Addiction Vicodine Online Indocin Online Trimox Online Shoot Carisoprodol 350 Mg Vicodin Hp Online Colostrum 800 Tramadol Cod Zoloft Withdrawal Online Cardizem Online Hangover Helper Online Isoptin Online Nolvadex Online Amaryl Online Penisole Cialis Dosage Phentermine No Prescription Vicodin Lorazepam Overdose Online Liponexol Online Sumycin Online Evecare Online Differin Online Urispas Online Biaxin Online Antabuse Online Ventolin Online Styplon Carisoprodol Soma Online Sustiva Online Prinivil Online Casodex Online Vermox Diazepam Online Cafergot Online Detrol Online Melatonin Zoloft Side Effects Online Trandate Online Reglan Xanax Dosage Lorazepam Addiction Online Avapro Adipex P Didrex Diet Pills Cialis.Com Ultram Online Calcium Carbonate Online Zyloprim Online Desyrel Online Ponstel Viagra Side Effects Xanax Withdrawal Viagra Alternatives Online GABA (HGH Booster) Online Probalan Viagra Dosage Online Orgasm Enhancer Hydrocodone Apap Online Flexisyn Adipex No Prescription Xanax Abuse Viagra Online Tofranil Propecia Generic Phentermine Online Online Mentat Online Zanaflex Online Noxide Online Loxitane Online Lukol Levitra Drug Online Extendaquin Alprazolam No Prescription Online Hyzaar Online Pletal Online Zovirax Online Cialis Soft Tabs Online Relafen Online Quibron T Online Paxil Online Rocaltrol Online Coreg Online Mevacor Carisoprodol Online Maxaquin Online Tenormin Online Remeron Online Evegen Online Claritin Ativan Drug Online QuickBust Diazepam Dosage Tramadol Hcl Online Cystone Online Nymphomax