Friday, March 17, 2017

Scrapping the code and starting over... and also the Trump budget proposal

If you've ever developed a software product that needs to live through multiple versions and over many years, you've probably experienced this situation.  For that matter, if you've ever used one, you have experienced it.  That includes everybody, since Windows is a good example.

Your software starts out with a purpose.  It has a crystal-clear goal in mind.  If you're any good, the software does that so well, that people want to do related things, too.  So the software starts to expand.  Also, bugs happen and so you start fixing those bugs.  Bug fixes and new features start piling up.  Eventually you start getting unintended consequences.  A new feature here causes a bunch of bugs over there.  A bug fix here disables a feature over there.  Was anybody using that feature?  Who knows, let's ask.  Did we ask the right people?  Whose opinions matter when it comes to the bugs we fix first?  Who should we ask which features to add next?  We have to start deprecating some stuff because the code base is too big and too messy and has turned into a hairball.  What do we deprecate?  We need version control and a change committee and and agile process and now we have people whose jobs are just to manage those things that often have no idea what the software is even supposed to do.  It spirals out of control until you have Windows 10.  Or until you have a typical Fortune 50 company (this is one of my favorite books on this topic), or you have the US Government.

With software, you eventually have to scrap the whole thing and start again from scratch.  This really works great if you have the same team in place and they can apply all the learnings and wisdom they have accumulated while putting together the previous version.  This is why we usually start with a quick, disposable prototype for any new idea.  We know that our first pass will need to be scrapped, so we just start out trying to test out the concept and the rough structures.  The goal for a first draft is never to create an enterprise-level software product that will withstand the ages.  The goal is to see if it's worth building an enterprise-level software product at all.

So what does this have to do with Trump's budget, you ask?

CNN Article
USA Today Article
Bloomberg article

The Bloomberg article has this great infographic:


In it we can see that many government agencies are getting serious cuts.  In a very real way, many programs are getting scrapped.  Now, I understand that the administration's purpose here is most likely not "those were prototypes, let's take the learnings we have accumulated and build a better system from scratch" but that may still be the outcome.  We can only hope that the next administration will recognize that these endeavors (feeding the elderly, protecting clean air and water, PBS and the arts, school lunch programs, science, space, housing, etc.) are meaningful and important enough to build new, better, v2.0 agencies in a few years.  Maybe they will all be sort of like win95 compared to win 3.0!  maybe?  right??

It's sort of curious that some of the agencies that Trump has been most vocal in deriding --namely the VA and the military-- are the biggest beneficiaries of this shift.  It's a shame that these two groups will not have the opportunity to experience as radical restructuring and tabula rasa sort of rearchitecture.  As somebody who has experienced both of these organizations first-hand, I think that the opportunities for waste reduction are legion...