5 comments

[ 2.9 ms ] story [ 28.1 ms ] thread
I agree that complexity is increasing without providing to much benefits. I am no office developer (embedded dev) but I work in a smaller company and when R&D is paused, chances are that I will work on infamous "internal software", mostly little tools to move data from A to B, present data for review, etc. . Nothing too exiting but I have fun doing it in general.

Lately interfacing with any MS app or their respective cloud services isn't feasible anymore. Authentication security theatre where I have to register my app at MS and even describe to them the nature of it to get access to some pretty raw beta graph API whose API key I personally have to hide somewhere isn't worth the hassle anymore.

You could undoubtedly do some nice things and it might not be such a problem for someone specialized in the field. But when I visit channels for exchange to certain problems, I more and more just find wastelands. There are few peers for exchange, as if they have all been eaten. If I compare this to MSDN I enjoyed as a kid I have the impression that most devs left already. Maybe there is a magical place where everybody is hiding, but at this point the effort and time needed to even create simple tools is too much and it also affects maintenance. I want these tools to be fire and forget, maintenance aside from the most basic one isn't an option.

At some point the garage server seems very enticing. IP blocks are sensible to control access on a network level in my opinion. Easy, yet effective. I maintain some scripts to read some Azure, AWS IPs and put them in the respective matching portals. This is not fun.

I have been saying this for the past half a decade.

I am 40 (soon) and I have been working as a dev since I was 19 and I like to think about myself as highly intelligent (and who doesn't). I have been learning every day of those over 20 years and I still have trouble keeping up.

A new developer has much tougher job learning all that technology properly. They are expected to learn a huge range of tools just to be able to make a very basic app and push it to prod. There is no time to learn all that stuff properly so the next best thing they do is to a little bit of everything -- just to be able to do the minimum. They are doomed to be mediocre at most of their stack.

I am interviewing senior developers (a lot) and I have resigned myself to accept that almost nobody understands how the operating system works, what virtual memory is and how it works, what happens when you debug, how networking works, etc.

I just can't imagine how a person that supposedly is there to help more junior members of the team does not understand practically anything of the environment in which they work.

You now need to be a senior to be productive at all. My current company is one of the largest banks in the world and doesn't like to hire juniors because they are barely making any progress. They come into incredibly complex environment and spend 100% of their time just trying to figure it out.

And then they leave immediately after they have learned anything.

When they can't, they engage seniors for help. But seniors have roughly the same problem. Whereas 20 years ago you could basically assume the senior will just give you straight answer (and go back to his business), helping today usually requires much more time investment.

As a junior 20 years ago I understood entire stack we were using pretty well. Now I am tech lead and I am regularly confused trying to help somebody get their Hello World to work at all.

So, on my projects, I try to treat cognitive load as the most critical resource. You can get more money, you can get your deadline moved (usually) and you can negotiate on features, but your developers are not made from rubber and cannot extend themselves to learn more, faster, better and do the project at the same time.

Well said! So maybe less people will become devs given this future ?
I rather hoped that this advice would cause people to be less focused on new shiny toys and more on figuring out how to actually do their job better.
Why do you think people do that? Self-realisation?

The complexity has also grown from our demands as field / market. It's nice to deploy in a container but debugging is not really easier when relying on a complicated cluster compared to traditional servers.

I think expectations to deliver 'the best' solution is driving this. Rather than accept the fact that system can fail and requires restarts etc, we build overly complex systems just to handle those edge cases.