Monday, January 23, 2017

The Messy Nature of Software Development

Software is messy
I have been in the software business for nearly twenty years.  I began as an entry level programmer and made the transition to scrum master and agile coach.  It was not pretty or heroic.  It was a journey filled with personal and professional setbacks.  Sometimes, I wonder how I didn’t wind up begging for change on the side of the road.  Somehow, every setback I have faced has led to a larger and better opportunity.  This week on the blog I wanted to discuss something which we do not discuss often; the messy nature of software development.

If you are not already following Angela Dugan’s blog, “The TFS Whisperer,” you should.  One of the posts struck me for its honesty and courage.  She talked about how application lifecycle management and DevOps are “messy.”  I add that everything involving software is messy.

The creation of software is a new trade.  It began in the days of vacuum tubes after World War Two and had grown into an activity employing a total of 11.5 professionals worldwide.  The term bug came from a moth trapped in a box of the first vacuum tubes of the ENIAC computer.  Today, bugs represent any of the defects or mistakes we perpetuate in code.

In the seventy-plus years since the beginning of professional programming, the activity has not fundamentally changed.  Smart people work in isolation writing software code, and business people take it for granted that is works.  The reality is software is one of the few activities which has not been taken over by automation.  It is a creative and manual process. It is both an art and science.

Unlike construction which has a set rules for engineering and gravity software development lives in a strange world where the rules do not matter or change with each release.  Deadlines are either fluid or hard as stone.  People work late nights and early mornings to get the product out on time.  Personal relationships suffer as support calls intrude on anniversary dinners and you are asked to release software on Sunday afternoons.

The people who do this work are smart and creative.  Too often the demands of the business community force leaders to treat these people like machines which run on caffeine and pizza.  The people who write software have children, significant others, and aging parents.  They have felt and experience the entire range of human emotions.  They are more than points of data in an Excel spreadsheet or a line item in a project plan.

It matters because software is one few activities in business which is immune to automation.  It is manufactured by hand by these creative human beings.  So software is “messy” because people under great pressure author it every day.  Software development is “messy” because people make mistakes.  It is “messy” because people have emotions which are hard to control.  Finally, software development is “messy” because business people treat software professionals as interchangeable “staff” instead of skilled artisans.

I have spent numerous nights questioning my ability and worth thanks to the messy nature of software development.  I am sure that other software professionals have done the same. This business is humbling.  Angela and I agree; software development is messy because very human people are involved in every stage of its creation.

Until next time.