The Uncomfortable Truth About Programming

Many programmers do not want to acknowledge it, but they do not predict the future, and they have to adapt.

David Rodenas PhD

--

Photo by Brett Jordan on Unsplash

Yesterday I was talking to a student about his final degree project. He called me for advice about which path to follow. He presented me two options: one harder for him, with risk to leave the project unfinished, but with the best future value; and another one easiest to him, with high chances to finish the project on time, but that would need reworking in the future.

The student got surprised when I recommended him the to follow the easiest path. My reasoning was simple: most of the final degree projects die after they are presented, many with big expectations to be a commercial product, but far to be completed because overengineering. So better to have something good today, than something perfect in an unknown future.

I asked him to think in building an MVP. Something to release as soon as possible and get feedback. And then, in the future, if the project continues, do the refactor and create the best architecture.

Then he confessed something embarrassing for him. He told me that he feel uncomfortable working on software that will change. Even if he does not know which changes it will require, he needs to plan it.

The problem

This situation was not something particular wrong in that student. It is a feeling of most of the programmers. We have been taught to think inside the Waterfall mentality, to plan everything ahead and then continue. The reality is that you cannot predict the future, and even the best plans fail.

The Waterfall model looses speed in development with time.

It does not matter how good is your capability of predicting the future, eventually, the reality will impose, and the code will degrade. As the code degrade, the development speed decay. And consequently, it will arrive the day that programmers will ask for a refactor; even the product people, anxious for the low speed, will ask for it.

--

--

David Rodenas PhD

Passionate software engineer & storyteller. Sharing knowledge to advance our skills. Join me on a journey of discovery in the world of software engineering.