The developer in me is a bit despondent today. I had to tear down this beautiful piece of code, an entire class, that I believed was the backbone of the entire project. Over the last four months I had carefully pruned it, nurtured it with test cases and decorated it with the most descriptive of comments. Every day, I looked it with paternal pride. Only a few weeks to go, then it’s live. My CLASS would go on to enjoy near perpetual existence in the warm server racks of a data center not very far away from where I live. But it wasn’t to be. Fate decreed otherwise.
The proverbial axe of “re-scoping” fell on my class. The re-scoping meant a refactoring of my code base – refactoring is a fancy word for deleting what’s not needed. My months of work went up poof in flames. I now understand how Hagrid must’ve felt when Macnair swung that axe on Buckbeak*.
It was a depressing to begin with. Hours later came acceptance. And a few Radlers later, came reflection. Coming from a moment of melancholy, some parts of it could leave you gloomy. So, brace yourselves – here comes my not so popular opinions about software development.
- Almost every single line of code you write today will be history in a few years of time. No, it’s not you to blame – it’s how fast the world, especially the IT world is moving – your code will be replaced by a “better”, “dockerized”, “serverless”, “microservice”.
- Machine Learning is not a magic pill. Neither are GraphQL, NodeJS, NoSql, Kubernetes and <add any new technology/framework>. Everything works in a context and fails out of context.
- Interview anxiety is a real thing. Coding is an art. Like the contrasting styles of Matisse and Picasso, we all have our own styles. And we all have our own comfort zones and even times when the best code gets written. Summoning all these skills together for a 2 hour interview is a skill on its own; has nothing to do with how good you’re with programming.
- Building a product is all about laborious, incremental development. People often underestimate the power of incremental development. That big retail/utility app that gets your everyday things done was nothing more than a box and two buttons just a couple of years ago. There’s no substitute to it – unless you’ve millions of dollars to buy one that already exists.
- Software development is/can be boring. In an earlier point, I drew a comparison to art. Large scale product development is not a A3 size sketch, but a large scale fresco that needs multiple developers to converge and co-develop. This means you spend a lot of time doing code reviews, fixing git pushes, taking care of dependencies, performance testing etc. Not everything of that is art.
- Better Ux is an ephemeral achievement. Customers always get used to your new, better Ux and once they’re used to an Ux, they will always be bored. Dated Ux is bad Ux.
- Software development is getting democratised. With the focus on “citizen developers and integrators” increasing every day and AI getting far more reliable than it ever was, power users and SMEs are able to DIY their software. On the longer run this means mediocre programming (not programmers) stuff like glue code between API, sugar and boilerplate frameworks, end user enablers like “better looking Ux” – are no more important.
Ok, I’m done. Bring it on.
*Buckbeak didn’t really die – a decade later, it’s no spoiler.