My musings on why it might be the time to start looking for a new profession if you are a software engineer?
You know how in the early 20th century pilots were like heroes? It was extremely dangerous to fly planes which were highly unreliable. Most of the time, only true adventures would learn how to fly a plane and become a pilot.
Then, fast forward 50 years and during 1950s, we started to have first commercial flights. It was still prestigious to become a pilot. If you remember, Catch Me If You Can, the villain played by Leo DiCaprio used pilot’s uniform to instill more trust in other people so he can cash fake checks.
In the 21th century, most airlines don’t make much money and they operate on a slim margin. The pilot’s job has become a commodity: there are a lot of schools and you need to study many years to become a pilot, but you get paid not that much more money than a bus driver. Autopilot is doing most of the flying except for landing and take offs. Airlines constantly merge and layoff their staff. Most of the times the attire is not as sharp as we see on pilots in movies, old newspapers and posters.
I believe almost every profession or trade undergoes a few cycles not dissimilar to the famous adoption curve. There are five steps, but I’ll simplify it to just three:
- In the beginning, there’s very little reward but a high entry barrier
- In the middle, you get most benefits from the wider demand for a certain skill and it’s less risky and less troublesome to get started in it
- In the final phase, you get even smaller barrier to entry the profession: there are a lot of known paths, schools, books, best practices. Then also the tools and equipment becomes better than in the first two phases. However, the demand and the benefits to an individual from that profession diminish compare to what it was in the middle phase.
After the third phase, the profession become a commodity. It’s not necessarily a disaster for people in this trade, but it’s certainly not a rarity. Then, the profession can event disappear completely! I’m sure you can come up with some examples that disprove my little theory, but before you do so, let’s take a look at programming.
In the 1950s, programming was close to science. A typical programmer had background in math or physics. They were white lab coats and most likely possessed PhDs. Oh yes, they worked on large mainframes, not personal computers.
In 1980s, think Steve Jobs and Bill Gates. They didn’t had to have science degrees (but most of them still did), and wore jeans and shirts. The aforementioned founders of Apple and Microsoft were treated like celebrities.
The programming has become easier than it was 10 years ago. Nowadays, you can learn programming in 2 months at a dev bootcamp, and wear jeans and T-Shirts to work. You can even work remotely from anywhere in the world. The barrier to entry the profession is the lowest it has ever been in its history.
However, programming has become a commodity. You can hire a freelance developer for $5 per hour… yes, I know that experienced software engineers in Silicon Valley and San Francisco can easily make $150,000 per year in salary but that could be attribute to a bubble.
Now, it’s trendy to be a programmer thanks to The Social Network and the new wave of app billionaires and millionaires. But how long will it continue? My personal observation, being in the industry for 14 years, and the adaption curve shows than programming won’t be in such high demand indefinitely. The demand in Silicon Valley drives innovation in frameworks, tools, programming languages, and platforms, while the supply increases by dev bootcamps (factories of good habits) and layoff in other industries. Soon, we’ll see the changes in the trade:
- Programming will become even easier, maybe it’s be as easy as a drag and drop or what you see is what you get editor, or something akin to Excel spreadsheet formulas/macros. It’ll be a common place to switch to a software engineering from let’s say being a violin player.
- The demand will go down or shift in nature, because there would be better frameworks, languages and libraries which will automate a huge chunk of manual tasks and coding. For example, Twitter Bootstrap, Cloud Computing and PaaS (like Heroku), Ruby on Rails, WordPress, etc.
- The salaries and prestige will drop down because of the lesser demand and ability to outsource internationally (programming like no other manufacturing job is easily outsourced).
What is the next thing will be in 2030–2050 which will be as adventurous and unexplored as programming and computers were 50 years ago? Or maybe programming (especially programming of AI) will be the last job not replaced by robots?
Hi! Great article! I don’t think the software engineering profession will ever disappear, because all sorts of frameworks for writing programs also need to be maintained and optimized. Maybe the requirements for qualified engineers will be higher than now and there will be less of them needed.
So many, many errors – where to start?
Someone who thinks analytically (which is, at most, 5% of the population – analysis is anti-survival) can learn programming in 2 months – or in 2 days – because “analytic thinkers” live that way. We analyze everything. We have since we learned to talk.
People who can’t think analytically (and it’s hard-coded, you can’t “learn” to think analytically) can’t learn how to convert a problem into a program that can solve it, and make it work, be scalable and be understandable by another programmer. We have many people who can drag and drop or manage to work out an Excel macros, but that’s as much programming as driving is automotive design engineering. But programming is being given a problem, analyzing it, coming up with a solution to the problem and developing the code that will allow a computer to execute your solution. Programming isn’t typing, it’s thinking.
Who do you think will DEVELOP the future Excels and the future drag and drop environments? People who write Excel macros and drag controls to a form? No. Programmers will. Maybe the only problem is the name – go ahead and call those macro-scribblers “software engineers”, and those of us who develop the programs they have to use will just take a new name.
BTW, airline pilots make ONE HECK OF A LOT MORE MONEY than bus drivers. The autopilot makes it easier, but when your rudder controller reverses, and pressing the LEFT pedal makes you turn RIGHT, I don’t want to be in a plane flown by someone whose claim to fame is that he knows how to turn the autopilot on. The crater that pilot’s plane will leave in the ground will have pieces of passenger so small that they’ll have to be identified by DNA. And the software to run the controller was probably written by someone who knows how to drag and drop.
Who–do you presume–are creating all these highly abstracted frameworks and tools like Ruby on Rails and Heroku? People that have learned to code in 2 months? Can they also create highly scalable and reliable code that can support millions of simultaneous users generating billions in revenue?
There’s a big difference between writing code and engineering complex software systems.
The pilots making low wages are the ones working at regional airlines. Major airline pilots make a lot more than bus drivers, many times more. Also, “auto take off” and “auto landing” has been around for a while in major airliners at least. It’s not always possible or safe to use these features, depending on weather conditions and airport equipment though.
To supposedly be a person with 14 years on the field you are incredibly ignorant.
I’m sorry but your article is complete B.S please stop writing.
You can wear jean and work anywhere does not mean your written program is a software! Without software engineering program is just a crap.It may work well in some certain situation, but it will die up when time is passing. I ‘ve seen many work-well program internally developed by IT depart or freelance. It finally died and terminated one way or another someday. It’s from a power-user programmer who think making program is like frying eggs. It’s wrong.
While there are a lot of loopholes in the article, I’m just going to leave them as fiction for the uneducated. When you say people with 2 months can become mid-devs in your comments, sure that applies to cases like creating a new simple website or setting up a simple mobile app. When you actually talk about any production level software, all these “mid-devs” fall lower than junior level programmer fresh out of college. You have no idea how many interviewees who passed the HR screen but are absolute trash when they get to actual tech interviews. Maybe a lot of these come from these “boot camp” programs?
And when you say there are no 300k salaries, I would argue that depends on what constitutes your notion of “salary”. Is it just the base pay or is it the whole package including bonus and stocks? The latter can far exceed that number quite easily in many cases.
Our team has been hiring for 6 months now, looking for people who have the required knowledge and proven experience in writing code for applications that will serve millions of requests per second. Anyone can write code, heck, even my grandma can code, that is not we are looking for. We are looking for individuals that have the capacity to learn about the dozens of databases, libraries and our codebase and can write maintainable, performant code and do all that within one of the most competitive markets in the world. Why have we been looking for 6 months and are willing to pay top salaries (175k? think again)? Because bad engineers lose us money, and good engineers make us money by the truckload. Software engineering today, more than ever, requires vast knowledge and experience in literally thousands of databases, tools, languages, libraries without which one simply cannot expect to create any serious applications.
Those who think that 2 month long coding bootcamps are any kind of threat to serious software engineering are the kind of mediocre candidates who are not even worth considering.
Those who think that hiring is solely a game of decorating CVs with keywords are being silly. Go to meetups, speak at cons, be proactive instead of whining. If you believe you can be replaced by cheap labor in developing countries, perhaps you should consider acquiring skills that cannot be replaced that easily, like any serious craftsman would do.
Yes. Big companies are not efficient. Non tech decision makers didn’t take IT seriously and not they are way behind and startups are eating their lunches.
I’m sorry but the people who disagree with the writer either live in a city with a job-market bubble or are just plain lucky to have a resume that matches the keywords recruiters are looking for.
I agree that a SW Engineer with 16+ years of experience and a BSc Computer Science like me is (usually) much more qualified than a high school kid who took a 2-month bootcamp in the programming language flavour of the day. But recruiters don’t know that. The only thing they see are keywords. If the keywords in a person’s resume match the job description, bingo, they get called for an interview. Doesn’t matter that the highly educated and experienced person has excellent high cognitive skills (like creative thinking, analogical reasoning and pattern recognition) and the ability to learn new languages/toots/etc – or even develop new ones from scratch. Tech jobs are a commodity because HR sees each tool/language as an individual skill, rather than looking at the person as a whole and their ability to use a tool/language to solve problems. (that is my own experience as a job seeker)
Big IT also doesn’t care about a person’s ability to solve problems. I’ve worked on two major Fortune 20 multinationals and a medium sized one, and they all did the same thing: let’s lay off a bunch of programmers in country A and hire 10x more in country B because salaries are much cheaper there. They don’t care that the labour laws in some countries are terrible (did you know that developers in China work 13 out of every 14 days, and only have 1 week vacation in a whole year? – and that’s at the local subsidiary of a major rich multinational, I can’t imagine what small “tech sweat shops” do to their employees over there) or that the learning curve and communication gaps while onboarding someone 10 timezones away will bring your team’s productivity down. (and again I am speaking from experience, having worked in positions where I was at times the outsourced and other times the one who worked with the outsourced)
IMO Big IT has played a big role on making tech jobs a commodity by continuously pulling wages down. See this excellent piece from IEEE on the STEM crisis myth: http://spectrum.ieee.org/at-work/education/the-stem-crisis-is-a-myth
I don’t know where the future of tech jobs is, but I know I’m not going to sit and wait to see what happens (while my income keeps dwindling, the cost of living keeps rising and companies keep hiring by keywords). I’m going to start my own tech business so that I can escape that commodity trap. Being a full-time developer/programmer is just not worth it anymore.
PS: feel free to follow me on LinkedIn. I’m actually going to publish a blog post about this subject soon.
Interesting headline, but about as well though out as a buzz feed article in terms of facts (ie: this article is obviously just clickbait used to funnel traffic into your Node classes).
For starters, it’s ridiculous to call someone who went to 2 months of classes an Engineer. Kids take Calculus class in high school (which is roughly an 8 month course), get an A and still have no idea what it actually means or how to apply it out of class. Does that make them a mathematician? No of course not, but that’s what you’re basically suggesting by calling graduates of a 2 month boot camp Engineers. Anyone can certainly learn to become an engineer, but it’s something that requires both practice and experience that far exceeds 2 months.
You then compare programmers to pilots. Sure at face value there is some very rough similarity, but the number of pilots have a very hard cap somewhere around the number of planes and the number of flights per day. There are always edge cases, but the vast majority of flights happen through the largest commercial airlines and they only require 1 pilot for every 2-3 flights per day since pilots often will make several flights per day. The only statistic I could find on this was that in 2014 there were ~100k flights per day, which means that the conservative estimate for full time pilots is no more than 50k. Compare that number to the number of websites, blogs, software companies or frameworks and you’ll see why this isn’t really a comparison at all. Supply and Demand is a very basic concept that can certainly be applied here.
You mention that both Gates and Jobs didn’t have science degrees. You do realize that Steve Jobs was a sales/business guy and never wrote a line of code right? (source: http://woz.org/letters/does-steve-jobs-know-how-code) Bill Gates did program, but he also went to Harvard and studied computers while he was there, although eventually dropping out his Junior year to start his own software company. I really have no idea why you mentioned either of them in this article.
While there are a lot more holes in this whole article, the last thing I will point to is you comparing a $5 an hour freelancer to a $150k/yr full time developer in Silicon Valley is ridiculous. You’re again comparing unskilled and untrained laborers (developers/bootcampers) to professionals (engineers). There is certainly a place for both, but suggesting that they are somehow equal just shows how little you know about any of what you’re talking about.
All of that being said, as education increases and the skill set of software development becomes more common, supply and demand will certainly bring down the expected salaries. But at this point demand is increasing along with the reliance on software to control everything in our lives and that is not likely something that will revert, only intensify as technology advances.
It is certainly possible that technology will become easier and more accessible (ie: drag and drop) because that has already been the case for years (Look up NI LabView). However these generic systems all have a very specific set of capabilities, and as those capabilities expand so does the complexity and difficulty in using them.
You are wrong twice. You wrote “Learning how to program in 2 months is impossible and most people will never be good programmers, that’s why silicon Valley pays up to 300k to individual programmers,” and here’s why:
1) Learning to program in 2 month is POSSIBLE. I saw it in 2014 over and over again when I was teaching at Hack Reactor. People become junior and mid devs in 2-3 months and got jobs. I am sure other dev bootcamps have similar successes.
2) There are NO $300K programmer salaries in Silicon Valley. The average max you can get is $150K, maybe $175 if you have a 10+ year experience and at staff or principal level. That’s it. And the salaries go down compare to 1-2 year ago, not up. I know the job market because I live here.
Next, time please check your facts!
You have a funny view on things lol.
It’s a bit like saying driving a Formula 1 car has become a commodity, everyone can do it, right? I guess just setup 2 month bootcamp’s and everyone will be able to drive some rounds right? Yes, and everyone will win against Sebastian Vettel, right? Yes, eeerm, I mean WHAAT?
You get my point?
Learning how to program in 2 months is impossible and most people will never be good programmers, that’s why silicon Valley pays up to 300k to individual programmers, not because it’s a bubble but because there ar enot many good programmers…
I agree that software development will and has to be a commodity, because at some point even a bakery might need a “programmer”. But the level of programming will always go skyward and the demand for the best will never stop, until humanity stops (if we have machines that can replace top humans at coding, then say goodbye, there is no way humanity will survive another decade at this point)…. The important part is that you need to be at the top of this pyramid, which might get a bit harder since more people learning it means more people will also be great at it. But at the same time the demand for great programmers will not decline anytime soon, so I am not worried.
Hi, you haven’t considered the halting problem proposed by Alan Turing.
So, there’s a lower bound beyond which it’s impossible for the software engineer profession to fall (at least only humans will be able to program until something more powerful than the Turing machine will be found).
You haven’t considered quantum computers that introduce a new paradigm of computation and completely change the way we think algorithms and software.
Taking the airplane pilot metaphor as mine… do you know that there are some pilots that drive private jets and take a lot of money :) ?
Maybe there will be a lot of people that do the same stuff, but if you are the best in doing what you do nothing changes.