How I perceive software development in 2023

5 min read Original article ↗

Murphy Smoke

Hey y’all!

Prologue

I’m an old fart developer, born in ’77, went through all the stages of Commodore CBM, later 8088 and 8086 and so forth. Somehow I landed in a software development team distributed over Europe and we’re writing software using Node/Typescript.

Press enter or click to view image in full size

Image created with Bing Image Creator

And so it goes…

In the last couple of months a thought or meme formed in my head about software development in general, but you could probably apply this to other areas where people interact as well:

In the past teams were mostly occupied with achieving the WHAT as the HOW was pretty much clear. Clients told your bosses what they expected, your boss told you and you went to work using whatever project method came handy to you and your colleagues.

Now I have the feeling it’s mostly the other way around: We’re occupied most of the time with the HOW and spending less on the actual WHAT — the product.

And another observation: The HOW used to be relatively trivial, while the WHAT was complex. Now the HOW is super-complex while the individual WHAT is quite trivial. There’s more WHATs in a sequence to get something complex out of it, meaning the products are not alwasy simpler than before. However modern project management methods enable smaller tasks. The time saved by smaller tasks is just somehow put into argueing on how to work on it. 🤷🏼

Example: In 2002 I was working in a team of 4 developers. We were doing C# and created an accounting software, an ERP software and a software for managing patients and work-schedules for ambulant care services. A team of 4. We had a sales-rep who basically told us what the customers needed/wanted and would through money at us for and the rest was up to us. We earned enough, had enough sales etc. and the software is — in part — still around today, as is the company.

Now, 21 years later, on my current team we are migrating (extracting) an entity from a PHP monolithic app into a new service, to be written in Typescript using NestJS, running transpiled with NodeJS, bla bla. It’s one entity, we are a team of 5, working in a company of a couple hundred people. We’re somewhat aligned on how to do the sync between the PHP thingy and the new service (simple SNS/SQS for events and Rest for pulling stuff). We’re like 40% through with this, having worked on it for two months now with no end in sight.

So the WHAT is pretty trivial, even banal: Extracting that one entity into a new service with a clean database providing restful CRUD (and a little sync), but the HOW is huge.
The company is full of people arguing about the how. When I started there my team was using Ruby On Rails (with other teams using whatever they preferred) and things were quite clear, however for years management struggled with different tech stacks (read: The teams didn’t… Management did…) so some very high-up gurus decided to even the plane by prescribing ONE and only ONE toolchain to use and everyone was either ousted or forced to adapt to the new thing. A new staging and production environment was set up with new CI and GitOps stuff (done with a new team not even looking how it was done in the past).
The same was true for the local stack each SENG needs to run. All services are to be built using the same template in the beginning and to make things really shiny almost no developer has TS/Node experience when all of this started.

One could argue for or against the new stack, but that’s not what’s keeping me awake and wondering what’s wrong. What gets me thinking is the complete overhead following the need to reinvent everything every couple of moons!

Starting over and doing the same shit again and again, just slower each time and with less quality. Choosing the least-used stack (in the company) with a seeing eye and expecting a smooth transition and keeping 12 weeks deployment schedules. I mean… Do managers that make more than a certain sum per year destroy their brains with cheap booze? All this is the HOW (stack changes, changes in lower management, changes in project-management, and whatnot) which gives the company NOTHING. It’s of NO use WHATSOEVER for the customers and users. It just makes us slower and slower, and it makes the WHAT trivial and banal.

Am I a bad Node/Typescript developer? Most probably. The whole concept of using this stack with so many moving parts underneath makes me cringe each time I use “nest build”, which bravely runs on top of this pile of software that no one can really grasp (ever checked your node_modules folder??).

Am I a bad Ruby On Rails developer? Most probably as well. However with that stack and the whole “old” infrastructure available I could have done the extraction alone, within a week, with synchronization, in my basement, never bothering with the whole HOW at all. The customers don’t care about micro services or monoliths, about the tech-stack or languages used. They care about the WHAT and we should do more, too.

What do you think? Can you relate? Do you have a completely different perception? I’d like to know.

Thank you for reading!
Murphy