Hacker News new | ask | show | jobs
by swedish_mafia 3053 days ago
I believe this is a time when a lot of software engineers are asking the hard questions about their careers.

Here's why: The technologies have become simpler and the barriers to entry have become low. Once upon a time, if you knew the mainstream languages (C++ and Java) it meant you paid your dues learning the hard stuff. Today, with nodejs becoming mainstream, and the cloud at the backend, developers who come from an "html programming" background can now build scalable and enterprise grade applications without breaking a sweat.

That leaves the "hard core" dev in a little bit of a fix. "Where do I go from here?" The front end is where the complexity is today. Its hard to compete in the AI and machine learning roles when there are phds doing this for ten years who are on the same table. Devops is also simple enough for someone with 3 years of experience of be on top of the game.

Now add to that the fact that the number of devs with 8 years of experience (what I consider the senior dev) grows bigger and bigger each year..

The next slow down I believe will be brutal to our industry.

14 comments

I disagree with some of your points. Firstly, being able to crank out simple web apps doesn't translate to building large systems that solve hard problems. There's a huge gulf there that can only be bridged by experience, and lots of it. Secondly, and this also speaks to experience, simply having worked in a "software developer"-style job for some number of years doesn't convey the experience needed to solve hard problems. Let's face the following inconvenient truth: there are many people who "get into coding" in order to find a job which will pay them a reasonable sum of money for life. Some folks use the term "lifers", which I personally consider derogatory, although there's some truth to it considering that it serves to differentiate those of us who're in this for the joy of craftsmanship from those who simply want a paycheck. Even more remarkable is the fact that the two extremes aren't mutually exclusive. Speaking for myself, I really really really love what I do, but I also enjoy the economic benefits that my profession affords my family.

If anything threatens software engineers, it's probably the rise of automation capable of making the "basic web app" people obsolete. I snigger at myself when I contemplate some kind of AI which could do this, although the idea seems less crazy when viewed in the context of many companies and individuals who have attempted to create a "build anything fast" framework/service/ecosystem/etc. Perhaps it does take an AI.

Otherwise we're pretty safe, methinks. Carry on, no need to try for a career change, unless you're really sick of the job itself, in which case the world is your oyster.

This isn't true at all. The state of the situation is tons of people are trying to switch over to web dev and given enough time and effort anyone can become competent at building large systems and solving hard problems. That huge gulf is huge but the gulf is shrinking at an incredible velocity.

The supply of human software developers is increasing at an incredible rate. You don't need a degree in software to do software. I would say roughly 40% of software devs now have an actual software engineering degree. Heck, I'm working with a guy who has a degree accounting and went to a freaking bootcamp for six months. He got lucky and was able to pass the hiring managers' little software puzzle (DFS problem) and he's now a full-time developer.

>developers who come from an "html programming" background can now build scalable and enterprise grade applications without breaking a sweat.

This is a popular misconception but inaccurate nonetheless. It may appear that way at first glance, but there is still more to building "scalable and enterprise grade" stuff than just cobbling together a bunch of off the shelf components.

It's possible - but not without breaking a sweat. Coming from "HTML programming" you are looking at many years of experience and learning to get to that level despite how good tooling has become.
> developers who come from an "html programming" background can now build scalable and enterprise grade applications without breaking a sweat

Give it five years or so as the business needs of those companies change and the codebases become more and more expensive to maintain. :)

Focusing on the technological complexity is a bit of a red herring, at least as many problems come from having to keep up with the complexity inherent in dealing with an ever-changing "real world." Usually you can't just flip a switch from A to B, you have to support old workflows/clients, new workflows/clients, transitional modes, etc.

We don't have any real sort of "engineering standards" for software development. Unless/until we find those, it's very hard to claim that the workers will be reduced to interchangeable cogs. We don't really even know what those cogs need to do to make sure a codebase doesn't become a big mess, today, based on the codebases I've seen.

Without that, developing meta-/organizational-/design- skills, instincts, and creativity can be very powerful. Being able to sell that effectively without necessarily having to aim for management positions might be a bigger trick, but it's hardly impossible.

But even if you try to make your calling card something like e.g. a "node.js+AWS stack" expert, you've probably got a significant amount of future work at least in maintenance for all the companies that build themselves on that stack today. Maybe that's not what you want - in that case stay on the new-tech treadmill if you don't want to do more design/architectural/organizational stuff - but it's something that will be needed, at least.

Back at the start of my career, a decade or so ago, my grandfather used to tell me all the time that programming was going to be a dime-a-dozen job. I brushed him off as being a crazy old man but he wasn't entirely wrong.

Your post does a pretty good job hitting all the points. The bar has become so low. I guess this is generally a good thing, but definitely stings.

I've started to reach what I perceive to be ceiling salary and difficulty wise. I'm genuinely unsure of what's next in my life. I'm certainly not perfect and have tons to learn, but the gradient is not as steep as it once was.

As someone who teaches Intro level students it can actually be a bit more difficult to get started. Not always (there's stuff like LightBot, Scratch, and Alice), but it used to be that HTML + JavaScript was a pretty good way to start.

Nowadays, programming for the web can involve:

* HTML

* CSS

* JavaScript, client-side

* JS framework(s)

* server-side language (possibly JS / Node)

* SQL

What's really messed up is you can choose PHP for the server-side (say) and end up with a single file that contains _all_of_those_languages_.

(Yes, you don't need to use them all at once, but even if you do the classic HTML+JS w/ document.write()'s your students are going to push you for the cool stuff they actually see 'in the wild')

This is not to say that you can't get started (and there's a lot of material out there to help motivated people) but depending on where you start the stuff you need to learn can be surprisingly voluminous.

I'm not sure I agree with much of that. I still think there is massive complexity in this industry.
If you know C++ well, definitely recommend taking a look at embedded software/firmware development.

If you look at an embedded project using a micro controller the embedded environment is still space constrained by available onboard flash and RAM.

If you want to move up the stack and look at a raspberry pi/beaglebone type project, the development environment is very much 'DOS/Unix' command line application based with minimal requirements for browser stack development.

An example might be the drive control for a self driving car or battery management for an EV car.

The pay isn't that good. Web is were the money is at.
Truth. In my market, embedded companies are looking for top tier C++ talent but paying 2/3 of what you can pull by being a “backend” guy, and 1/2 of what you can get by having “blockchain” or “AI” on your resume.

Same companies complain how it’s not possible to find local talent, and hence need to be able to hire cheaply from overseas.

I agree with your conclusion, but I think it is due to a different pathway. Fewer developers will be necessary as code-sharing and packaging has improved and standardized. Trust me, people just entering development are still pretty terrible.
It's OK, I agree with you. But, is there any way to join Swedish mafia? I want to improve my CV.
You need 10 years of tensorflow experience for this.
The expected output of a software engineer will always be based on the ability of the average engineer. As technologies make some areas easier the bar will just be raised in other areas. It isn't like employers will just pay the same amount for someone with less skill doing less work.

So NodeJS is easier than previous server technologies, well the role of a pure back-end developer has evolved to include dev-ops, db administration, security, Q.A., automated deploy/testing. Front-end development is also more complex than ever before, if you only have an "html programming" background, you are going to have a pretty difficult time setting up a modern transpiled web app using on of the JS frameworks.

A software engineers competitiveness comes from more than just familiarity with some languages and frameworks.

The ability to quickly learn and adapt is in my opinion an important part.

I think you made a good point. I am myself in the same spot with 10 yrs of exp. finding it difficult to figure out where to go from here.

The barrier of entry will become even more low to a point where building apps is no longer fun. I am looking for something which is a bit more complex and has high barrier of entry. I don't know where to go from here honestly.

Yes, it is easier to build a TODO-list app today than ever before.

No it is not significantly easier to build a fully-fledged software business.

What is expected and required has also scaled up immensely. You can't just drop a Java SWING GUI on a simple tool and put it on a website with a PayPal link and wait for search to bring you business anymore.

It is getting easier to enter and it is getting harder to establish a sustainable business. We see a trend towards bi-modal development in SW as we see in other parts of society. Quite possibly the change is happening faster these days.

What may well have become easier is maintaining an edge as a business in the industry provided you have reached enough scale to leverage low interest rates, tax engineering, global aligned trade frameworks and low cost labor.

> Devops is also simple enough for someone with 3 years of experience of be on top of the game.

You make some good points, but I want to drill down on the above. What do you define as "devops" in the above statement?