I feel like the expectation that a developer can do it all is quite harmful. There are not many other disciplines where this is expected, and for good reason.
Maybe it’s better to just admit you don’t know how to properly architect a solution rather than pretend you do and create an unmaintainable mess. Maybe you shouldn’t pretend you know how to do front-end development instead of creating some monstrosity that no user actually uses due to bad UX. Maybe you shouldn’t pretend you understand security instead of introducing half a dozen sql injection vectors.
Maybe it’s time to admit that the days of the solo developer are over. It may have worked when there was no internet, no security concerns, no concurrency requirements, etc. But we expect, and deserve, better nowadays.
I’m pretty sure non-programmers share much of the blame. Here’s what I imagine goes through the minds of most people, especially management types.
“Oh, a nerd. Great we need another nerd in here because things are not moving fast enough.”
I’ve had job offers for everything from equipment maintenance and repair (because there was a PLC hooked up) to network administrator. It’s all computers, right?
When trying to use some of the truly atrocious stuff that gets rolled out with a web interface, I get the distinct impression that random “nerds” are dropped into random slots. There is no consideration that maybe saying “nerd” is like saying “doctor”. If that’s all you look for, you might get an economist instead of a surgeon.
Agreed, almost every profession has advanced to the point where they require specialization. Everything has become so complex that being a jack of all trades means you fail at them all. Even trade skills have specialization: carpenters specialize in framing or cabinetry or furniture, mechanics specialize in specific machines or sub-systems like engines or transmissions, etc.
But it seems most of the people responsible for filling these positions haven’t realized this yet or don’t know enough about the jobs they are hiring for.
In defence of the jack-of-all-trades, if everybody is a cog in the machine, nobody sees the overview of how the cogs could connect.
For what it’s worth, here’s an overview of some cogs made by a j-o-a-t, for whom software developer is just a sub-role, within understanding complex climate system.Isn’t that exactly the role of an architect? The point is exactly that not everyone is a cog, not everyone is exchangable and equivalent to everybody else.
Or a gastroenterologist instead of a neurosurgeon 🤔
When I’ve been presented with expectations outside my field, I’ve replied with something along the lines of, “Programming is a bit like sports–they all share some common features, but the skill sets are very different. What you’re asking me to do is like asking a hockey player to participate in a professional badminton tournament. I can try, but it won’t be pretty.”
What is this trash? It reads like an AI hallucination.
I understand your concerns about the article’s quality. I found that it presents some interesting perspectives on software development, although some points might not be clearly articulated. It’s always valuable to critically assess any content we come across, especially in the rapidly evolving field of software development. Do you have specific aspects of the article you disagree with or find lacking in clarity? I’d be interested in hearing more about your perspective.
The only perspective was a wishlist of responsibilities for a software developer.
It seems delusional to pretend one developer “should” do the job of a whole team.
That last comment is what ChatGPT told me to say.
lol, you got me
I knew it!! It’s a very typical unemotional style. I think GPT learned a lot from corporate communication xD
Ha, busted! Yes, that was ChatGPT’s advice. But hey, let’s not give all the credit to our AI overlords just yet. They might be stealing our jobs, but at least they can’t steal our snark… for now. Besides, everyone knows real human communication involves at least three sarcastic remarks and a poorly timed joke. Speaking of which, have you heard the one about the software developer who walked into a bar? They left because they couldn’t find any ‘bugs’ to fix.
Was this comment AI generated?
Nah, I’m just a really chill guy on the internet. Jk, it’s ChatGPT
I think the article is probably right. A software developer should be able to make software to do whatever needs doing. Maybe not good at any given thing, but able to do it. Eventually. Nobody wants a software developer who isn’t themselves Turing-complete.
Will they always do it the Right Way if they spent 10 years learning compiler design and you want them to program an ESP32? Of course not. But if you hired a compiler engineer who cannot teach themself to solve a user’s ESP32-shaped problem, then you have hired a compiler engineer who can be completely incapacitated by a sufficiently leaky abstraction.
Sooner or later when doing any one thing in software development, you are going to run into a problem that requires you to dig into something else that you don’t actually know how to do. The abstraction leaks and suddenly how file handles work or the fact that an ESP32 needs to go to sleep sometimes is now impinging on your compiler design problem and the users are not able to do the things because of it. If you have an expert on whatever the thing is, sure, you call them in and they help you out. But if not, you learn enough to make yourself useful and you hit the problem with research and analytical thinking until it stops bothering the users.
There was a day and age when that was largely the point of college–to teach you how to teach yourself. There was a difference in expectation from the high-school level, where following directions wasn’t enough. You had to be able to do things you couldn’t do in order to make it.
Not that it’s the fault of current students–education has simply experienced inflation and everyone is trying to keep up. But it stands that those teaching-yourself skills will set apart a good developer from an okay developer.
Others have mentioned that the expectations can become toxic, though, especially from the non-technical crowd, and I agree. It becomes more of a question of efficiency than possibility. That is, if you’ve spent your entire career working on web stacks, and someone makes you program a PLC, it’s gonna take a very long time for you to do it even satisfactorily.
There’s definitely value to being able to self-teach and figure things out, but it needs to be paired with other soft skills, like “speaking manager” and setting appropriate boundaries.
If you don’t have an expert, you should demand one. If I don’t have an electrician, I won’t ask my plumber to go read a book and come back to do the wiring. I would wait and get an electrician.