Quo Vadis, Programmer? Who’s the actual superhero in programming?
Quo Vadis — is a Latin phrase meaning „Where are you going?”; Quo vadis? — Wikipedia
I’m under the impression, we have lost our path as being programmers. We are currently so focused on all these new, shiny possibilities we have, that we have lost the true purpose of our work.
Last week, we (Accesto.com) took over a project. A quite simple one. It is a simple blog with some advertising features and a possibility to add a company to a business directory.
When I opened the project for the first time it seemed to be written in a decent way. There are some tests, tasks are automated etc. There’s also a document describing the architecture and some basic concepts — nice!
But then I skimmed through the document, browsed through the code and I’ve noticed there is something wrong.
On the technical part it all was really good. The system was using ESI tags and was ready for adding a reverse proxy. The setup allowed to easily add a separate CDN server and the whole app was put into containers so it could scale easier.
So what was the problem? The main issue came out in our first conversation with the client. Our job as programmers is to bring business value, right? What do you thing about a blogging platform that doesn’t allow to add blog posts? I thought I misheard when the client mentioned he couldn’t add posts to the platform! Actually, he could, but in order to do that he had to send the post to the programmer. The programmer would then write a database migration, then dockerize the app and finally perform a manual upgrade of the container running on production. This makes no sense! If the main goal of an app is to be a blogging platform, just write one! The app is not that popular yet, so it does not take any advantage of ESI, CDN, scaling. So the previous programmer wasted his time on all this shiny technical aspects that he wanted to try instead of implementing the functionalities the application really needs.
I have a felling, that there are more programmers like him. We are so focused on all the technical aspects, that we forgot what this is really about — delivering business value. Of course, we should take care of the technical part, but we need to find a good balance between both the technical and the business needs.
Let’s face the truth. In the described situation, the programmer is not a superhero with tights and a checkered shirt. What he did is just over-engineering. And that’s bad.
We need to stop our ego and get on the right path again. Reading the Manifesto for Software Craftsmanship might be the first step.