Software development is still a slog.
“I need three monitors.” I think to myself, as I work on a feature that requires several microservices to be updated, which means I also need the database admin open, Postman open, I need to open Docker to run Kafka or Elastic Search or whatever, plus my notes. If I don’t keep notes I’ll lose where I’m at in this jumble of everything.
We need a new field for this sync. That means we have to add this field to probably around six different “POCO”s (Plain Old CLR Objects) that represent the data. I don’t know why there are six version of the thing, and why there are slight differences between each. Sure, the request isn’t going to have all the same info as the response, but there’s also the internal objects used at different layers of the software.
I update the feature and go to test it manually before writing a test for it. Start up Docker (probably after having to restart it, because it never seems to want to just work), run the service, run a request to authenticate, and then the request to create some data. Check in Elastic Search – it’s there. Now a request to search for that data – a count of 1 returned, but no data. Strange error messages in the service console.
I ask a coworker if they happen to know what this error is from before I spend time sifting through the code. It seems like they don’t even read my message and give me the same canned response as usual. I highlight a specific error message that seems unrelated to that canned response. They tell me that I need to be running some other service as well, but I have my local service configured to point to the dev server for that service.
But I’m doubtful; why would I need to be running that locally?
Why is testing this so fragile?
Why is there so much redundant data?
Why are we hand-coding all these little pieces?
I’m 31 right now. I’ve been programming for 2/3rds of my life; since I was about 10 years old. (That’s not to claim I was any good at it at that age)
Over the decades, game development has evolved greatly. Plenty of people are able to access game development through streamlined tools that require a minimum amount of “reinventing-the-wheel” effort. But with software and web development? It’s more of a mess than ever.
We seem to keep coming up with new languages, new frameworks, new new new without improving the process. We reinvent the whole way to create things, requiring everybody to learn a new stack, and increasingly more complex technologies just to get things done. And at the end of the day, is what we have really any more maintainable or scalable than the old? Does a company creating its own internal software that will be licensed out to clients need to structure everything in separate microservices? How often are we going to throw out the old and start over from the beginning? Will we do the same thing in another five years?
My mind tries to disconnect from my body every time I have to repeat the same process to add a new API endpoint. It’s always the same process, but we still do it manually, by hand. Automatic code generation would be slightly better, but really, why isn’t this all handled by some framework?
At this point, here in 2019, we should not be coding as much as we are. That’s not even to mention the frustration I feel at everybody having to roll their own proprietary version of the same thing (that’s perhaps another rant for later). None of this makes sense and none of it has to be this way but it seems good enough for everybody else.
For me, though, it makes my daily work-life nails-on-chalkboard agonizing. I’m not challenged by my work, I’m just frustrated by tedium, roadblocks that make no sense, and trying to express my needs to other developers.
For more thoughts about this sort of thing, I’d suggest this article: The Coming Software Apocalypse, by James Somers.
P.S., if I were running a software department, I would make sure my developers, QAs, BAs, etc. would all get training on the problem domain (healthcare, legal, business, etc.) and get to know how to use the software itself before getting really deep into the development process. Yep, it sounds really expensive to spend time training people, but when a developer starts and is thrown head-first into the code without knowing how the industry works and what those requirements are, do you expect them to write the best software? The best tests?
P.P.S. It seems like WordPress has a bug that doesn’t save the text I write after an italics block. YAY, SOFTWARE.