Why isn’t there a glut of good software engineers? (2023)

May 1, 2013 by philg

As Google hires all of the world’s good software engineers and my friends with startup companies fight over the scraps I am left to wonder how everyone could have been so wrong in predicting that the world would be glutted with good programmers and sysadmins by now.

In the early days of programming there was not considered to be a limit on how many people could be trained to do the job. IBM would hire graduates from all kinds of college majors, e.g., music, and train them (there were hardly any computer science programs at universities back in the 1950s). A popular idea among corporate managers is that this could be a good job for women, who were readily available at reasonable rates.

With the rise of the worldwide Internet, open-source, and inexpensive microprocessors, it seemed inevitable that the world would be glutted with technically skilled people. Programming is easier to learn than a foreign language (a friend who has a PhD in physics and is an expert hardware and software developer says that learning Mandarin and to read Chinese was by far the hardest thing that he ever did). Getting hired as a programmer does not require a specific degree or training course. Programming or system administration can be learned by anyone worldwide who has access to a $300 personal computer and an Internet connection. Why wouldn’t the millions of unemployed Americans train themselves to code? Why wouldn’t middle class people in China, India, and Africa?

Admittedly in the U.S. folks with an organized mind, the grit to get through technical subjects, and the drive to go to work every day can find higher paying jobs that involve more social interaction (e.g., medical doctor, Wall Street banker, etc.). But that doesn’t explain why people in the Philippines or China aren’t training themselves en masse to be able to soak up the $30-100/hour jobs that would be readily available to them if they could demonstrate the ability to turn a customer request into working code. Why are the Greeks, Portuguese, and Spaniards going bankrupt instead of learning to administer Cisco and Linux?

Any good futurist circa 1990 would have predicted that by now most of the world’s programming would be happening in low-to-medium-wage countries and that customers wouldn’t have to pay a lot for high quality software. But it hasn’t happened (e.g., see my posting about California’s state government spending $327 million on a straightforward ecommerce site (I visited http://www.coveredca.com just now and it seems to be a work in progress)). Why instead do we have catfights over mediocre talent in Kendall Square and Silicon Valley?

79 thoughts on “Why isn’t there a glut of good software engineers?

  1. You just need to visit The Daily WTF for your answer.

  2. The floor for writing decent software is probably an IQ of 125. Over 125 is a much smaller share of the global population than you likely think it is. To be a programmer you also have to be a weird person willing to sit frustrated with horribly broken tools and materials, alone in front of a screen for very long stretches. Most people can’t swallow that.

  3. Or, equally, Reddit/HN, and join the intellectual hunger strike.

  4. Given that there isn’t a glut (and in fact there’s a shortage) why haven’t programming salaries reflected the law of supply and demand? Given enough of an incentive, the supply aught to catch up?! Instead, there’s a push to keep salaries down and increase H1B’s (or whatever they’re called these days)

    There’s a possible reason.

  5. What is the metric of “good” and what is the evidence about the size of that population, big or small? Are we reasoning from anecdotes here? (I.e. who google gets vs. what startups can find)

    Task organization in software development makes a big difference. I’ve seen teams where you have one smart architect who spec’s everything out so tightly, the programmers are essentially smart typewriters who know java syntax. They’re not really doing much in the way of design, algorithms, or problem solving. They’re implementing a function that takes a void argument, and returns a String with the value “Hello, World”.

    Skill seems to me to be so variable, that companies would do well to try and reduce the amount of skill the average software developer would have to have in order to contribute meaningfully. Good programmers can, after all, be too good — reminds me of what I heard about perl recently. “Since debugging code is always at least twice as hard as writing the code in the first place, if you invest all of your cleverness in writing the code, then you are by definition not smart enough to debug it”.

  6. “Why instead do we have catfights over mediocre talent in Kendall Square and Silicon Valley?”

    I don’t know, but as someone with very mediocre programming talents (for a programmer, for an architect they are EXCELLENT programming talents) I am very glad that there are catfights over me.

  7. Phil,

    If someone’s resume said that they learned how to program on the internet but that they have no programming work experience, would you call them in for an interview? Who do you think their first employer would be?

  8. The thing is managers have been trying to offload coding to cheaper labor for years and putting it mildly, it’s obviously not a panacea. Thanks to management completely disregarding my advice on offshore oversight and code review, I got to see firsthand some Chinese handiworkonly after the project was “code complete”. Hundreds of lines of Java constructing SQL statements with string concatenation. (Umm… SQL injection, anyone)? Hard-coded class names in strings with Spring (umm… dependency injection I guess??) Bizarre linked server to another database on the same SQL machine (I guess they didn’t know how to reference a different database in T-SQL?). One stored procedure with @WhereClause param and another one with just @AdhocSQL param. (Why only have one SQL injection when you can have two?)

    It turns out that building high quality software is not so easy. Learning how to program is easy. But building a robust, scalable, secure, performant product that meets the requirements, is intuitive, maintainable, and fully tested is not so easy.

    With what I’ve seen in the industry, I would guess California’s mess is more related to project management issues. If you can nail down the proper stake holders, clearly define the RIGHT requirements, prevent scope creep, and set a reasonable budget and schedule, it’s not too hard to get a bunch of average programmers to hammer out a so-so product. Of course, in government and politics, those are the things that are nigh impossible.

  9. The market for “programmers” is not transparent enough. Everything from designing a simple HTML page to building low-level kernel debuggers is called “programming”. It’s like putting the qualification “health care worker” on everything from a nurse to a brain surgeon. And most of the people doing the hiring have no way of assessing the quality of a programmer.

  10. As one of those who are the target of this question, what I see is that there’s a huge bias for people who are already in the US with regards to jobs. I have to go through hundreds of job postings to find one that will even consider telecommuting (I had to change jobs recently.) I have over 25 years of experience in programming and I speak / write English very well (I’ve only worked for US companies for the last 15 years) and yet, it was incredibly scary to find a new job.

  11. “Why wouldn’t the millions of unemployed Americans train themselves to code? Why wouldn’t middle class people in China, India, and Africa?”

    To me these questions sound very surprising coming from somebody with Phil’s background. Also, they remind me a lot of the typical management response in the middle of a crisis – let’s throw more resources (workers) at the problem. This type of looking at a problem sounds simplistic to me.

    A few observations after spending a number of years in the business of software engineering:

    1) Learning how to program is easy enough that it can be learned at a very early age. I learned a few programming languages while in high school and neither myself nor my school mates who did the same thought it was a big deal.

    2) Being a good software engineer and knowing one or several programming languages are two very different things.

    3) The employers are willing to pay very good money for competent software engineers. If they didn’t, my job and that of my US-based team of engineers would have been moved a long time ago to a lower cost center. My employer has development centers around the world so this would have been a very simple change for them. However, the managers in charge of this decision are definitely not stupid – they’ve seen that the overseas teams also have a limited pool of good software engineers and they realize the implications of assigning a project to somebody who simply can’t handle it.

    4) Having an organized mind, good work ethics and superior analytical skills is different from wanting to do a job that involves more social interaction. It is a well known fact that many software engineers have poor social skills – how else would you be able to spend up to 10-12 hours a day in front of a display and a keyboard, year after year, and actually enjoy this?! So I believe that actually there aren’t too many potentially good software engineers that are simply choosing other professions.

    5) “Why are the Greeks, Portuguese, and Spaniards going bankrupt instead of learning to administer Cisco and Linux?”

    I still have fresh in my memory a conversation I had with a nice middle-aged Thai lady who was serving food in a Thai restaurant. She had learned how to manage Cisco routers (her college education from Thailand was in French literature) and she was looking for a job in this domain but couldn’t find one. I admired her a lot for trying to do something to lift herself up but I was quite skeptical about her prospects. I believe the issue was that it’s not easy to find opportunities, even if you’re very well qualified.

  12. Interesting countries as examples, and a well-written post. But hasn’t this conversation already been covered countless times in articles about outsourcing? It’s not the quality of your code, it’s how well your needs are understood and met. It’s not about building the best algorithm if that won’t help businesses make money.

    I would point first to web development, FYI. Tell everyone to learn HTML5 and CSS3, plus one language of their choice. The hard part, though, is it’s easily a few years’ work to build up enough skill to know you were doing it wrong (or at least not as well as it could have been done) enough to actually write “good code”.

    It could take a lifetime to get requirements right 😉

  13. I am unsure how you contrived this reality because it’s just not true. People in India and China are learning and taking jobs overseas? Not a day goes by that somewhere in the Ukraine, Russia, or China our servers are hacked.

    I think you are sorely mistaken my friend.

  14. For what it’s worth- I’m an american programmer and would be happy to get $100/hour paying jobs.

  15. +1 sam, your physics friend aside, to be good is too hard, requires too much raw horsepower, working memory, ability to abstract. plenty of reasonably smart people simply cannot do it.

  16. “Why wouldn’t the millions of unemployed Americans train themselves to code?”

    Most likely because of the following reasons:
    1. Perception that it is difficult to learn.
    2. Sounds boring
    3. Unaware of the financial gain and security

    I’ve tried to convince friends that were struggling and didn’t know what they wanted to do in life, but I think they are in that position in the first place because they have no ambition.

  17. Because there’s a longstanding view that since programmers love what they do, they shouldn’t be compensated as highly as other fields with demanding requirements. Employees at large tech firms are as highly profitable as bankers, yet they get paid a fraction as much compensation.

    So the pool of great programmers is generally limited to those who love the job _so much_ that’s they’re willing to forgo income to do it. Someone with a “125 IQ” and strong math abilities could get a job on Wall Street, or as an actuary, etc and make more money for less frustration.

    At Amazon, they target 75th percentile comp – but I really doubt they also target hiring 75th percentile developers on average. So they’re basically trying to hire 90th percentile employees for 75th percentile comp. I’d argue the entire industry does that in comparison to non-engineering industries.

    The next time a CEO complains they can’t hire enough engineers, ask them how much over market they’re offering.

  18. Learning to develop software takes long years of grueling work for a moderately low status job. People who excel at it would often excel in other areas as well, and the status and pay is better there, so they do.

    (Video) If Software Engineering Is In Demand, Why Is It so Hard To Get a Software Engineering job?

  19. +1 to Tom too. Although there probably is something to the longstanding view– it definitely seems like a fun job. Maybe the CEOs aren’t consciously trying to screw anybody just reacting to market realities.

  20. The statistics show that half of STEM graduates can’t find a job in STEM and end up doing something else. There are PLENTY of CS grads available for TRAINING. What you really are saying is why is Google hiring up the senior, experienced programmers.

    Tech salaries have been flat for years, which renders your thesis null. What your friends really want is good programmers for a much smaller salary than they are worth.

    http://articles.washingtonpost.com/2013-04-24/business/38783974_1_stem-more-foreign-workers-epi-study

  21. There is a glut of engineers. I interview many of them. Of the people that get past the phone screen and do a face-to-face interview, I’d extend a job offer to 5-10% of them. Out of the total pool of people who did some form of an interview (phone screen or otherwise), we’re talking about <1% of potential candidates. Many people can write code, if you're okay with average code.

    So out of an ever expanding base of people who learn to write code and have the credentials to have their resume screened by a tech company, we're already screening out many people based on credential and on quality, down to <1% of the total pool. Then consider the growth of the number of tech companies/jobs against the total growth of new good engineers.

    It's entirely possible that there are a lot of false negatives in that <1% figure and there's amazing talent out there that is undiscovered or undeveloped. However, that's how the current systems works, with employers looking for either: high profile education or high profile companies / previous projects. Some random person out in the middle of no-where? How does this person get noticed when there are already a lot of people pounding on the door who are mediocre? It's an interesting problem to look at.

    There are a lot of highly experienced engineers (20+ years), however, this experience tends to be deep experience with more mature technologies (that they helped mature), while many companies are hiring for platforms, frameworks, and languages that are <5 years old. Juxtapose wanting a plug-and-play engineer with little time for a learning curve with the experienced engineers who learned something else over a long period of time, and you'll see that the numbers aren't there. One could ease that problem by hiring experienced engineers first, then letting them learn the new technology while on the job, but that's an expensive and possibly risky thing to do.

  22. Brad, you can get $100/hour in a programming job, if you move to someplace in the states, and do it on a contract (not full-time) basis, without too much trouble.

    Salaries are lower outside of the SV / Boston / NYC metro areas.

  23. There isn’t a shortage of “good” software engineers, instead the interview/evaluation process for software engineers is broken. I have been to several interviews lately for senior software engineer roles and most of the time, the companies are looking for low level programmers, but confuse it with software engineers.

    The real software engineering is done most of the time at a higher level (CTO, Architects, Managers, etc..) and the “software engineers” aka programmers they’re looking for just have to be able to write code to do the tasks they need.

    This is evident in the way that “software engineer” interviews are conducted. They ask questions like “write a function that shuffle a deck of cards,” “write a function that does this, that, etc. on a whiteboard.”

    On the shuffle card function, there are several ways to do it. I was recently interviewed and asked to do that. I solved the problem in one way very quickly, but the people interviewing me only knew one way to solve the problem and kept pushing me towards their way of solving the problem when the way I solved it was more efficient and faster.

    The problem is that most companies asking to solve whiteboard problems have one way of solving a problem because they probably look it up on google or in a book without really understanding the fact that there may be other better solutions.

    In another interview, I was asked to implement an Email Sender that connects to a database and query emails to send every 15 minutes. When I tried to explain things like modularity, scalability, code reusability and all the good stuff, the interviewer only wanted to see if I could write some simple sql code without being able to test it and thinking it’s production ready.

    So yeah, the problem isn’t a shortage of “good” software engineers, but a rather broken interview/evaluation process.

  24. Tom K has the answer. I was coding system software on Cyber machines in the 70’s. 10 years later I saw contemporaries in other fields far outstripping my salary. I jumped to management. The pay went up, I was actually noticed by upper management and was soon a CIO. I spent the next 10 years surrounded by C level staff in different industries who thought programmers were interchangeable cogs. Every time they complained about late projects or poor performing projects, they tried to blame “the programming” talent. I asked how they got better talent in other areas. “Pay more” was always the response. They never made the connection. More H1B visas; find more people to go into programming; offshore the work; these were tried, but never poaching for good people. I almost jumped back to programming during the Internet boom (bubble) but had see too much apathy at the top.

    Things can change, but on the other hand, if programmers were well paid and/or respected, we probably wouldn’t’ have so many good start-ups.

  25. @Philg:

    I don’t know about software engineers. But I will venture a guess: the probability of becoming a good software engineer, is greatly enhanced if you matriculate at an institution where you have contact with good software engineers. Moreover, direct contact is in every way superior to distance contact. This is just a guess…

  26. I’ve been the software industry for 30 years, both technical and business roles.
    There is a shortage of software engineers because the average career of a code writing engineer is short – less than 5 years.
    Most hands on software work is crappy. Fix an obscure bug in legacy code. Write a data filter to bulk load reference data. Rewrite some commodity functions for the zillionth time because the managers don’t want code that wasn’t invented here.
    Getting assignments that lead to career development is hard. In any large engineering team, the politics are rough. Getting the best work is like fighting a pack of wolves fighting over a deer. Only the strongest survive.
    The way to survive is to have both top technical skills (especially the skill to learn new technology fast), and have top social skills. To use the wolf analogy, you must be able to bring down the biggest deer, and defend it from the others. Let the others have the bones (i.e., the crappy assignments). They’ll soon starve and leave.
    There is a shortage of software engineers because few people can mix the technical and social skills necessary to survive for long.

  27. this is easy. I know programmers who can write code, but don’t know business. And I have seen the websites they build… ugh, the same crap as they built in college. Nearly every college graduate can write. so why don’t they all write books and increase their income?

    Because they would all write the same thing.

    This is true in programming too. If 10% of the population knew how to code, what kinds of things would they write? +90% of all industrialized countries are literate. So, why do so few have jobs writing?

    This is a problem not about being able to write code, but is one about coming up with new ideas or with the right idea to solve a problem. And once you have an idea, then it’s figuring out (more new ideas) how to implement it on hardware so i works. And that, as Sam pointed out above, takes a particular kind of determination.

    No modern education system teaches determination or innovation. Children are both innovative and determined naturally and we drill it out of them. If we didn’t drill it out of them they would be just as innovative and determined at 15 or 20 or 25. How do you run a high school trying to manage a group of innovative and determined boys if you hadn’t been able to turn them into fairly docile obedient people by the time their hormones kick in at 15-16?

    On top of that, a desire and ability for critical thinking and abstraction are also required for learning to code. Our schools are not so good at teaching abstract and critical thinking skills either. Personally, I’ve always found that scientists, mathematicians, artists, and philosophers are some of the best technical people to work with. Of course, here again, if we had more scientists, mathematicians, artists, and philosophers our society would be better off.

    There is a reason giants in tech are college drop outs, because they are innovative and determined and can engage in abstract thought and think critically and they can’t “wait” anymore.

    The basic reason there is not glut of coders is that all our cultures train people to wait for things. Most people wait for someone to tell them what to do, they wait to get a job, they watch TV and wait for something to happen.

  28. The skill of getting yourself noticed and hired is unrelated to the skill of programming, and the skill of filtering a huge pool of applicants without false positives or negatives is nonexistent. I think previous responses hinted at this – the market is grossly inefficient, and no one really knows how to fix this.

  29. The status argument doesn’t work where I sit, my friends that are software engineers don’t go around lamenting their low status. In their worlds their status is high and they love their jobs to boot. I would say the best engineers tend to be unconcerned with status (eg Woz), and they do fine monetarily as well.

  30. Folks: Awesome answers above. Thank you! I want to respond to the idea that it would be too hard for an at-home learner/developer in Africa, say, to build a reputation. I don’t think that is true anymore thanks to open-source projects. In less time than it takes to get a college degree, a person could build a strong reputation as a programmer by contributing to international open-source projects that are, as the name suggests, open to anyone competent. I would think an employer would be willing to hire, as a contractor, a person who had made 500 publicly verifiable contributions to various repositories. At one check-in per day, that’s 1.5 years of work to build a reputation. That’s not an unreasonable investment for an 18-year-old interested in a career.

    John Klein: I don’t want to burst your academic bubble, but the institutions where one can matriculate (i.e., colleges) are not where the good coders are generally found. College/university is a good place to learn computer science, which is not quite the same thing. But you might be on to something. Certainly coding skills can be developed quickly working in a group of competent people who engage in code review and that is easier to do if you are on the ground in a place such as Silicon Valley where software development is happening in nearly every building.

  31. Folks who say that there are more attractive higher-paying jobs for people with the same characteristics that make for good programmers: Agreed that this explains why America’s best and brightest head for medical school, law school, and Wall Street, but being a medical doctor in a medium-wage country doesn’t pay that well and it is not possible for that person to sell his or her services over the Internet (except maybe for radiologists). So I still think that the 1990s futurist would have been justified in predicting that the world would be dotted with great self-taught programmers doing contract work from their homes, earning first world wages while living in relatively poor countries. And in fact I have known some Filipinos who were very happily earning $30-50/hour doing high quality work (sysadmin, Web development), but there aren’t nearly the quantity that the 1990s futurists were predicting, which is why I wrote the original posting.

    To judge by the responses maybe the original posting should have been “Why is it so hard to learn to be a decent programmer?”

  32. Nearly anyone can teach himself to be a so-so programmer, in relatively short time. And then he’ll be out there competing with all the other so-so programmers, including ones in India and China who can live like kings on an income that wouldn’t pay for rent and ramen in the US.

    To be an _exceptional_ programmer, which is the prerequisite for “google and startups are fighting over you”, you need to be exceptionally smart (which the overwhelming majority of people aren’t) AND either exceptionally innovative or exceptionally in tune with some specific range of business needs. You need, in other words, to be able to THINK, not just to CODE.

    I’d say you’d be surprised about how rare that is nowadays, except that anyone familiar with your prior writings will know that you (that is, Phil Greenspun) _wouldn’t_ be surprised. (See ref: everything you’ve ever written about the disappointingly low quality of everything ever, in particular the annoying lack of forethought which goes into making things.) Most people, however, would probably be surprised.

    I used to be shocked by how much employers were willing to pay me for my talents and time. Then I started participating in the process of interviewing candidates for other positions like mine, and began to realize just how much suck there is out there, even among people who (at least according to their resumes) do this for a living.

  33. I’ve been told by Korean colleagues that in Korea IT is considered to be one of the 3 “D”s (http://en.wikipedia.org/wiki/Dirty,_Dangerous_and_Demeaning) and not much distinction is made between IT and Software Engineer, which is why the pay isn’t good and why he’s working in the US as a software engineer. (And I have to agree with the assessment of IT being an unpleasant medium-skill job, at least the way it’s done in most companies.)

    As for skill … let’s just say I work at one of the top software engineering companies, the pay+stock+bonus+benefits is well above average (and several times IT pay), and it’s depressing to interview people with advanced degrees from top schools and claims of years of industry experience …

  34. the interviewer only wanted to see if I could write some simple sql code without being able to test it and thinking it’s production ready

    Because there really are people out there who cannot FizzBuzz. If you are too much of a snowflake to write a test on the whiteboard, you probably will suck in other ways, too. They need to filter out those losers.

    Not that employers are any good at hiring. They want candidates to appear ready-made, like Athena from the foam, and be productive on day one. A group of generalists will nearly always beat a group of specialists, but lots of managers think they are assembling The A-Team, and need the UI guy who knows Rails and CSS5, the DB guy who knows MySQL, the engine guy who knows Java, the QA guy who uses whatever Rational is selling; everyone all in their little roles. And they expect them to be cheap, too.

  35. Interesting responses here.

    I just have to say that I’ve been interviewing folks over the past month for 2 manager positions, 2 engineers, and 2 developers and haven’t found anyone worth hiring.

    (Video) The Harsh Reality of Being a Software Engineer

    Most of them came from larger companies and had years of experience and couldn’t pass simple abstract non-code tests. Things like “how would you approach designing this application?”. Some of them couldn’t even cough up a good answer to “What do you want to do?”. And these are the folks that pass a phone screen by a recruiter.

    It’s a bit perplexing. Everyone I know in the industry at other growing companies are having the exact same problem.

    I’d jump at the opportunity to hire someone with no “real” work experience but with a demonstrated commit history on something like OpenStack (or whatever). That shows you can create something *and* get along with a community.

    We have something north of 100 positions open that need filling here at Rackspace. We pay market or above with very good benefits. Most of the jobs are here in the wilds of Texas, but talent trumps location. Details at http://rackertalent.com

  36. In a nutshell, HR departments screen applicants the same way teenage girls screen potential boyfriends.

    To get an idea of the nature of the problem and it’s effect on the tech hiring market, google the following phrases: “passive candidate”, “list of boyfriend qualities”, “social proof”, “credentialism.”

    To understand the scope of the problem, review tech job requirements with a software engineer and you will find that most “required” skills and attributes are contradictory and almost impossible to find in one candidate.

    Bypass HR, problem solved.

  37. “Any good futurist circa 1990 would have predicted that by now most of the world’s programming would be happening in low-to-medium-wage countries and that customers wouldn’t have to pay a lot for high quality software.”

    I think there’s actually a fairly low limit on the number of potential US employers that are willing to endure the inefficiency of overseas development. There’s plenty that try and some might even succeed in convincing themselves that they are saving money, but they inevitably suffer from a variety of unintended consequences. Examples being the code quality problems mentioned by others, issues of long-term maintainability by an unstable workforce (lack of knowledge continuity) and the loss of good workers unwilling to put up with inconvenient working hours to facilitate collaboration across large time zone gaps. The issue is much deeper than $$/hour.

  38. I’ve been programming professionally for more than 20 years now. I’ve seen many attempts to offshore my work with every economic crisis. but with all my years of learning, I can do most coding jobs 10x faster and more precise than most that I work with. That is because I follow and try every new tech there is, it is a passion that most people do not have but it is fundamental to be a good developer.

    I used to spend 20 hours a day trying to understand how games and software was working, while my friends were out having fun. nowadays most kids are just playing games, they don’t care enough to learn how it all works.

    The facts is, developing software requires a lot of skills. Management tend to think that writing software is just typing text, and that anybody can learn. But writing software to handle a fighter jet, trade billions of dollars, control traffic light, tranform signals from an NMR scanner, … etc that is way too complicated and dangerous to go wrong. It requires very specialised people. People who are not in it for the money but for the journey to master all the skills.

    David

  39. To put many of these comments in a small capsule: About 1965 I took an American Management Association-sponsored course on the relatively new field of computers for data processing – in Belgium. The instructor-expert said, “I can’t teach anyone to program; you are either born with, or without, the ability to think.” Doesn’t sound like much has changed.

  40. Regarding your question about why Spaniards are not learning to code or administer systems it may be that getting a job in those areas is not be as easy as you may think, at least there.

    Being originally from Spain and having a BS and MS in computer engineering (from a university in Spain) I can tell you that it is much easier to find a good/interesting job in that field here in the US (at least in Silicon Valley) than it is there. There are just many more opportunities here. It may be in part because legislation is more business friendly here. In Spain it is more expensive to downsize because by law companies have to compensate the employees that are losing their jobs and, as a result, companies will be more cautious before hiring new workers. It may also be kind of a vicious cycle. Because there aren’t that many qualified programmers there, companies do not thing of it as a good place to start a business in that area. And because the job prospects are not that good not too many people think of pursuing a career in that field.

    Also, for the few jobs that are available, the requirements are high and usually include having a university degree. So, a significant time and economic commitment is needed just to meet the basic requirements to qualify as candidate for a job (just having access to a $300 personal computer and an Internet connection wouldn’t be enough). For example, I seem to remember that when I came to the US in 1996 HP would only hire people with a BS degree or equivalent to work at their Barcelona offices. Not only that. Before being considered for an interview, you would have to take a written test administered by some independent company that was providing that service for HP. I took that test once shortly before moving here. I am not sure what position I was applying for. It may have been chip design and not programming. But whatever the position was, the test included questions not only about the subject matter but also about control theory (not just a few questions but a lot of them). I guess that area of knowledge must have been useful/needed for the kind of products that are developed there (large format printers, I believe). Anyway, my point is that for the jobs that are available there (and maybe because there are many more candidates than jobs) the requirements are high and not exactly easy to meet.

    I just took a look at what jobs are available at monster.es and the first one I looked at was actually for a position in Belgium even though the summary description listed Barcelona as the location. So, the ability/willingness to relocate was another requirement. And a very high level of English was also mentioned in the description. For one person that doesn’t have these requirements and skills it would easily take 5 years of complete dedication plus a significant amount of money to get to the point where the requirements listed are met. And he or she would still have to compete against other candidates in order to actually get the job.

  41. Yet another failure of market theory to predict human behavior and yet, people still insist on building policy and practice upon such shaky foundations only to be surprised, once again, when cracks open and things collapse.

    It is indeed a mystery.

    As to the specific question of why there isn’t a glut of good software engineers, I think the answer is that you are asking the wrong question. Forget about software engineers, or programmers, they are a distraction or it seems that way to me. The question I think you are really asking is: why is it that, for the subset of problems that can be addressed with computing and software, so few of them are successfully addressed by computing and software? I’m not convinced a glut of good software engineers would significantly alter this state of affairs, because I think the real bottleneck lies elsewhere.

    A good software engineer is worthless without sufficient knowledge of the problem domain. Some might argue that a good software engineer should possesses the skills and inclination to obtain sufficient knowledge of the problem domain, but my experience is that many otherwise excellent software engineers are lacking in one or both of these critical qualities, and those with all the requisite skills still have serious learning curve to climb to acquire sufficient knowledge of non-trivial problems.

    A day or two ago, I was on a site where someone was asking for more information about “Script Docter,” some in-house software that Pixar used to prototype movies. Someone helpfully replied that the guy who wrote “Script Docter” has given a lunchtime talk on the software at WWDC for the past few years. The commenter then went on to say that it was software that any competent Cocoa developer could write in a week — That may be true, but it ignored the fact that the developer had been working at Pixar on specialized productivity tools for almost two decades. The number of Cocoa developers who could write such a tool in a week, or even a month, is probably quite small. Moreover, I think that the number of developers in China, India, Portugal, Spain, Greece and the Philippines who could have written Script Docter in a reasonable amount of time may well be 0.

    Of course, this situation doesn’t just come into play with Pixar’s problems. It also comes into play with many other problems with try to apply software to. It takes a great deal of communication to get software built to address non-trivial problems. Domain expertise must be communicated. Cultural and language differences can mean even more information needs to be communicated, while at the same time, making that communication more difficult.

    A glut of software engineers could change things, but it would have to be such an oversupply that those engineers ended up flooding the overall job market. I think we are a long way from that happening, too many of our high schools students never graduate, and of those that do, far too many lack sufficient literacy, math and critical thinking skills. The system has a long way to go before it can close those gaps AND add basic programming competency to the mix.

    I think the real problems may be even more fundamental though. Software development is dismal. It seems that every decade or so, everything gets thrown out and replaced by people who know almost nothing about what came before them (and that which doesn’t get thrown out, fails to adapt and stagnates). They can get away with this shit because a decade’s worth of Moore’s law has boosted available resources and expanded the market (by lowering costs). The only hope of things getting better will be when either Moore’s law tapers off and/or the world is flooded with cheap, efficient hardware. Until then, we’ll be building on the toes of giants, instead of their shoulders.

  42. +1 to long time programmer, I am really still at the start of my software development career and you are absolutely right, I have only been able to develop by securing a project of mine own and working on it intensely. I am very enthusiastic, always reading and partcipating in the community but my growth as a developer is determined by the work I do during my 9-5 hours.

    At home I enjoy what I do and spend as much free time as possible programming but there is only so much time I can spend out of work due to social commitments. I very much believe my growth is based on 20% academics and 80% experience.

    Would like to hear more on your views about this!

  43. “…most of the world’s programming would be happening in low-to-medium-wage countries and that customers wouldn’t have to pay a lot for high quality software…”

    Indian IT is booming (and driving pay rates down in the West). But the quality is very variable, project coordination is difficult and generally it doesn’t work out any cheaper. Even so, projects continue to be outsourced because management is sold on your line.

    So why isn’t there a glut of good software engineers? ‘Cos the pay and conditions are lousy compared with law, medicine, banking. Talent can choose and not everyone is dumb enough to choose IT.

  44. Like any profession, there are only so many people in a given population who will be good at it. Today, many of the engineers I interview got the degree “because it’s good money”. When I got into engineering, it was because I loved it. I really didn’t think about how much money I’d make.

  45. “Programming is easier to learn than a foreign language”

    I dispute that. It’s certainly different – but you can learn to speak a foreign language well enough to get by in a year or two taking night classes, and you learn it out of necessity once you are immersed in a place where you have no choice to speak it. Unless you’re actually teaching a language and have some need to understand every last nuance deeply, you can learn it well enough for most purposes (e.g. to communicate with others who speak that language) in a relatively short time.

    On the other hand it takes years and years of active experience to become even a “pretty good” programmer, and you never get to catch your breath — you never get “good enough”. The technologies we use change constantly – we have to go out of our way to stay abreast of new tech, tecniques, trends, and so on. A novice foreign language speaker can get by with no ill consequences — as long as he doesn’t start an international war, he’s probably OK making a lot of mistakes. Programmers, on the other hand, don’t have that luxury.

    20+ years into my career as a programmer, I feel like the areas that I don’t understand just keep growing every year, rather than shrinking, despite constantly making an effort to learn. This is the nature of the game. New tech arises. We have to decide what languages and technologies to embrace. We can spend huge amounts of effort learning something that becomes obsolete. It’s exciting, frustrating, thrilling.

    But it’s also incredibly hard. Foreign languages don’t evolve, don’t have a huge associated cottage set of tools, frameworks, and related technology that constantly change and you must also be fluent in in order to be useful.

    Just look at any job listing. The requirements could be like: “Must be skilled in [some specific] SQL, C, C++, C#, ASP.NET, Visual Basic, HTML, CSS, Javascript, Perl, PHP, jQuery, Node.js, [and add a half-dozen other niche tools used by the organization]…..”

    Almost all of those technologies are extensive, require years of hands-on experience to understand deeply, and constantly change. And that’s completely typical.

    If anyone asked me if they should become a programmer, I would advise them: only if you love every last second of it.

  46. The idea that anyone can be “trained” to be a good (or really good) software developer is seriously flawed. You can train someone to “write code” but you can’t train them to think the way good software developers think.

    Also, there butt-loads of good software developers throughout the US. They are spread out in every semi-major city in every state. They work at all kinds of places. When you interview people for a job you are not necessarily going to get all of the best and brightest from all over the country – you will get a small subset of people who are in your area, have a certain skill set, are looking for a job, think your company looks interesting, etc.

  47. “Why are the Greeks, Portuguese, and Spaniards going bankrupt instead of learning to administer Cisco and Linux?”

    Portuguese national here.

    Long story short, the general feeling is that a good software engineer isn’t much different from being a mediocre software engineer because companies prefer to employ 1 or 2 code monkeys (and pay the least possible) instead of a better, more expensive software engineer.

    I believe this happens because Portugal’s IT market only cares about two things: either accounting software or consulting services for ISPs. R&D is either limited to the academia – completely cut-off from the market – or to specialized centers inside the large ISPs, so why pay two or three times more for a better engineer if you’re not going to need his expertise?

    (Video) Why You Shouldn't Be a Software Engineer...

    The idea is to pay as less per person as possible and still demand they do overtime because “the market is bad” and if you don’t like the conditions too bad, someone will. Outside IT it’s even worst, as some companies are offering a ridiculous 300 $ per month (that’s 200 $ below the minimum wage!!) and they even have to nerve to tell the candidate that it’s their way or the highway.
    Screw motivation, get back to work grunt.

    Wages have been getting smaller and smaller, while taxes (for both employees and companies) skyrocket and the job you do each days becomes more and more pointless.

    Wanna get rich in Portugal? Become a mayor and start embezzeling. There’s this one guy that’s currently in jail for embezzlement and he still has the balls to claim that he won’t renounce his position because he can work inside jail.

    /rant

  48. I think the fundamental problem is we don’t have realistic image of “programming.” Fundamentally software development is a creative process yet we generally regard programming as being the realm of purely logically minded people, and not the realm of the creative types. In my opinion, it’s more art than science. Lots of people can code (that’s the science part), but in my experience relatively few can actually do what I consider real programming (the art).

    And the “art” part varies, too. I frequently liken programming to writing – if you give a specific story outline to Steven King and Jackie Collins, each can give you book that covers all of the items in the outline, but they will be very, very different reads. It’s the same with programmers (especially once you get below the user interface and look at the source code).

    Speaking of writing, we’ve had typewriters for years (and pen & paper for hundreds of years before that) – why don’t we have more terrific writers? Shouldn’t we be awash with that kind of talent now, too? (That’s a rhetorical question, by the way – I know there are many tremendously gifted and capable writers out there. The real question is are there more of them than there are gifted and capable programmers?)

  49. To be a really good programmer you have to have some traits same way a detective or scientist has. You have to predict as many of possible outcomes as possible even impossible ones (which tend to happen more often than we usually expect) and trust no one in the code even to yourself (defensive programming style). That traits will give you more stable code that can work even in mission critical devices or services.

  50. “Why are the Greeks, Portuguese, and Spaniards going bankrupt instead of learning to administer Cisco and Linux?”

    Portuguese national here.

    Long story short, the general feeling is that a good software engineer isn’t much different from being a mediocre software engineer because companies prefer to employ 1 or 2 code monkeys (and pay the least possible) instead of a better, more expensive software engineer.

    I believe this happens because Portugal’s IT market only cares about two things: either accounting software or consulting services for ISPs. R&D is either limited to the academia – completely cut-off from the market – or to specialized centers inside the large ISPs, so why pay two or three times more for a better engineer if you’re not going to need his expertise?

    The idea is to pay as less per person as possible and still demand they do overtime because “the market is bad” and if you don’t like the conditions too bad, someone will. Outside IT it’s even worst, as some companies are offering a ridiculous 300 $ per month (that’s 200 $ below the minimum wage!!) and they even have to nerve to tell the candidate that it’s their way or the highway.
    Screw motivation, get back to work grunt.

    PS: mods, why did you delete the previous post … ?

  51. Intellectual property rights are not well respected globally. Every thief out there, most don’t realize they are a thief, contributes to the culture such that investing (always a long range activity) in software is too hazardous or even impossible.

    The U.S. is a leader in defending intellectual property, therefore they are the sweet spot for software development.

  52. Chad hits a good point: if I have my software built by a Chinese company, it’s very likely that, if it works, they’re going to sell it to someone else, too.

    It’s possible to work around this by planning for it to be open-source, but then what are *you* doing? You surely don’t know the code as well as the Chinese people writing it.

    Speaking of open-source, that didn’t put software developers out of jobs, although a very simplistic view of code would say that was inevitable. The thing is, there is not a finite amount of software to be written. If someone writes a bunch of code for free, there is *still* a lot more gains to be gotten on top of that.

  53. As software developer here in Portugal i don’t know what is the reality in the US, but in Portugal we also have a lack of people to work in the industry, and the main reasons are that :
    a) The young people don’t want to learn the skill set to do the job, because they know they are going to be ostracized by others;
    b) The pay is low, $30/$50 would be very nice;
    c) Because the pay is low many IT workers go to Germany, Uk, France even Spain;

  54. A good software engineer is someone who can solve problems, someone who can see past the lines of code and see the many other variables in play, and someone who can communicate in plain English about how a system works in and around your product.

    When I started 20+ years ago I knew C/C++ down to earth. Today, I code in 5 languages and don’t call myself an expert in any of them. However, I’m regarded by my organization as indispensable engineer because I’m a problem solver.

    When I interview new candidates, I care less about their domain, or programming language experience. What I want is someone who knows how to find answers, and someone who sees past the given use-case or logical flow in the code.

  55. I am stunned by the tone of some of these posts. ‘IQ of > 125’, ‘mediocre’, ‘code monkeys’, ‘the best and the brightest’. Look around, guys, really look at what you do, day to day.

    Programmers are not superior beings, able to gaze at their navels, hum a mantra, and then spout perfect or even good code.

    The variables in developing robust, viable software systems are enormous. The challenges vary from mind-numblingly boring to moments of ‘oh my God, how cool it that’ and everything inbetween.

    ‘Good’ programmers have one common trait; they care about their work. Everything else is learned, easily or painfully hard, it doesn’t matter.

  56. The fact that the market hasn’t responded with higher salaries reflects that fact that making money on software is a crap-shoot.
    The economics of software are different from anything that preceded it. Software does not just manifest the insights of the engineer – it propagates them at almost zero cost. This means that one great software engineer at a competently managed company can wipe out a whole industry of less competent practitioners. This is why we see cannabalism in our hiring practices: senior engineers develop platforms, and then are replaced by the junior developers they empower.
    What this also means is that the great developers, if they have domain and business savvy (or link themselves to someone with that savvy) can make a pile of money.
    Well – of course – they can make a pile of money until hungry developers looking for an opportunity copy the superficial functionality and offer it to the world for free, given that they can’t make any money in direct competition. Then for the original developer it becomes a hard battle of extension, integration and refactoring to maintain a competitive posture in the marketplace.
    So why pay a lot of money to produce something when the risks are so enormous?

  57. There isn’t a glut of good software engineers because the problem isn’t learning the programming languages. Basic grammar is something most people in developed countries have been taught before they hit puberty but there are not many high schoolers would be considered on par with the Bard. Because mastering grammar is not the same as mastering writing. The same is true in programming. Just because someone can use an if/else does not mean they are capable of writing a large application or even a small one.

    Good programming starts with logical thinking, a skill in short supply. Once the problem has been analyzed, devising a solution that solves the problem without a bunch of excess cruft around it. Then the slinging of code starts.

    I am a self taught developer and after a couple years of learning I was hired at the upper end of the pay scale discussed in the article. I work with a number of developers who have been “professional” programmers for 5-15 years who would not be considered good by any definition of the word. They know the grammar but they struggle to write code that is clean, efficient and effective or in other words not awful.

  58. The supposition that the world will be glutted with good programmers has a presupposition that the world will be glutted with intelligent people, as though by magic. Not going to happen…

  59. I reckon it depends on the person, but in my case, I found learning German well (I grew up speaking and hearing English only) was, although not easy, quite a bit easier than learning to program well. Mandarin Chinese I realize is a harder language for English speakers to learn than German is. But just as there are big differences between the difficulty of programming languages (Basic and C++, for instance), there are large differences in the difficulty of human/natural languages, too.

  60. There are several reasons (IMHO).
    1 – Good software engineers are often overlooked because of age. Many companies have no interest in quality software engineers when they get near 50.
    2 – Cheap, low quality, non-American software engineers help the short-term financial statements, but not the long-term health of the company.
    3 – The myth persists that non-American software engineers are smarter and do better work for a cheaper price. The cheaper price is true, but those of us who have dealt with offshoring and H-1B visa holders who work cheap know the quality is rarely there, and the ability to figure out problems that don’t fit the textbook is rarely there, either.
    4 – American education, at least in government schools, has been dumbed down the last 30 or more years. Today’s 20 and 30 somethings are more likely to have been indoctrinated, not educated. The basic knowledge set of a 1970s high school or college graduate is generally superior to that of such graduates in the 2000s and later. That has led to a smaller pool of people with the character, critical/logical/reasoned thinking necessary to be a good software engineer.

  61. The fact that the market hasn’t responded with higher salaries reflects that fact that making money on software is a crap-shoot.

    1. Salaries have gone up in certain localities, like SV. If you want to live there, you can make $100K out of college.

    Now, the better question is why salaries haven’t gone up as much in other areas.

    2. Software companies make boatloads of money. Here:

    http://www.techspot.com/news/43846-apple-overtakes-google-becomes-first-in-yearly-profit-per-employee.html

    They aren’t quite in Goldman Sachs territory, but Goldman Sachs will proudly give all that profit to the employee instead of the shareholder. If software engineers can manage to get better at negotiating, they too could have $200K – $300K salaries.

    Power to the proletariat!

  62. I would guess that outsourcing nations at least have a culture which discourages and suppresses talented engineers. The IT industry in India and China is built largely on providing cheap software to the kind of business that looks at software as a cost center to be minimized, rather than as a product of variable quality. Therefore, anyone who really does feel passionate about the work either gives up or moves to North America. Most people are likely so grateful to have a good job that they don’t think twice about the lack of attention to quality.

  63. I graduated with a CS degree. Big companies pass on. Tons of resume without any answer from them. I have to settle for small ones which pay so little. What is the chance of self taught programmer get a job? very little.

  64. There was that comment in “snow crash” about how (once everything that could possibly be outsourced from the US has been) the US is left with “music, movies, microcode, and high speed pizza delivery.” Three of the four make sense, but I’m not sure why microcode (he clearly means software) would be in here. Maybe there’s some social paradox where top coders can only be drawn from a social environment that actively (perhaps unconsciously) discourages people from getting good at programming.

  65. I can teach a Greek to speak English, but that doesn’t make him William freakin’ Shakespeare. I can teach a clerk to write Excel macros, but that doesn’t make her Ada Lovelace. There are more programmers than there are good programmers, and more novice programmers than there are experienced ones.

    A four year Computer Science degree is about 90 credit hours of specialization. It takes 2 full-time years (on top of college) to acquire a journeyman’s competency with C++. Your 10-year-old’s six months of python does not make him employable.

    There is no shortage of talented programmers. There is only a shortage of talented US programmers with a CS degree and 10+ years professional experience willing to work for $35/hr. All shortages can be cured with better money, more perks, and greater respect. There are sometimes surpluses of programmers, like during the Great Recession when some companies were laying off and nobody was hiring. That there are never shortages but there are sometimes surpluses is a factor in students’ willingness to blow 4 years getting a degree, when they can get other jobs with less up-front effort.

    Google and Facebook have revenue streams so wide they can afford to pay top dollar and awesome perks for programming talent. That’s why they get the talent. If startups offered great wages instead of a dream of wealth and a year living on ramen, then Google and Facebook wouldn’t get all the top talent. Plus if you’d worked with this top talent, you might be unimpressed with what they get for their money.

  66. Folks: I don’t think it is apt to compare programming to being the author of a novel or a play (see above comment above Shakespeare!). A programmer who simply listens carefully to user requirements and then implements a system to meet those requirements will be considered at least a “good” programmer. He or she need not create an entire world the way that an Edith Wharton or Tolstoy might. A better comparison, in my opinion, would be to journalism. And most people do accept that a capable journalist can be produced by training.

  67. Philip: Elsewhere you’ve said that a lot of computer science university graduates don’t learn how to be an engineer, but how to work for an engineer. Is it fair to think that someone who self-studies programming through books and free online resources would be capable of deciphering user requirements and building a software system that meets them, when formally-trained computer scientists seem unable to?

  68. Why are the Greeks, Portuguese, and Spaniards going bankrupt instead of learning to administer Cisco and Linux?

    “We’ve all heard that a million monkeys banging on a million typewriters will eventually reproduce the entire works of Shakespeare. Now, thanks to the Internet, we know this is not true.” – Prof. Robert Silensky

    That’s why.. :))

    (Video) Why 75% of Engineers Will NEVER Work As Engineers!!
  69. @Jeff Jones

    “The myth persists that non-American software engineers are smarter and do better work for a cheaper price. The cheaper price is true, but those of us who have dealt with offshoring and H-1B visa holders who work cheap know the quality is rarely there, and the ability to figure out problems that don’t fit the textbook is rarely there, either”

    I’m not sure who believes that non-American sw engineers are better and cheaper, but I can share a couple of personal stories as a proud former H1-B visa holder and, now, as an even prouder American citizen. More than half my colleagues at my various sw engineering jobs in US were born outside the country. The proportion of good or even outstanding engineers was the same among the immigrant and American groups of people. My compensation package has been competitive.

    My experience with the offshore teams has been somewhat less encouraging. With the exception of one country, where the company I work for has had a presence for a long time, the other remote sites, which were newer, had a lot of junior engineers. Among these junior engineers there were a few who were very good and a couple who were outstanding but the problem was that the attrition was high and whoever was a good engineer could quickly find a job somewhere else, with better pay. The most recent example includes a person who was hired by Facebook and relocated to SV (and yes, the compensation package was competitive and it fit that person’s experience). Another issue was that even for those who stayed with the company for a longer period of time it wasn’t easy to advance in their careers due to a lack of good projects – the older teams, which were usually based in US, had priority, were closer to the management, sometimes closer to the customers etc.

  70. Really great discussion here, and relevant to me because I’ve just a fair of amount over the last week interviewing intern candidates here in Austin.

    My background is working a software developer in a number of small companies here in Austin since I retired from the military in 1994. I’ve been at present gig for ten years, and was the day 1 employee.

    It became clear to me very quickly that in the civilian/commercial world hiring the right people is critical to the success of a software company. For that reason I’ve always stayed involved in recruiting as much as I can.

    I mention this because I don’t think at all like a big organization HR person, I’m probably an outlier.

    I’ve never liked the term ‘software engineer’, and only a handful of people can legally use that term here in Texas, as ‘engineers’ are required to be licensed.

    I strongly prefer ‘software developer’ because all my software work has been for the purpose of delivering a commercial software product to our management for them to sell.

    There’s a lot more to product development than just ‘programming’, although programming is the core task. I wish colleges did a better job of teaching their students how to deliver a finished product that another person could use.

    Psb aks:

    “If someone’s resume said that they learned how to program on the internet but that they have no programming work experience, would you call them in for an interview?”

    In my case, yes, absolutely, if they can show that they’ve written software that others are using. An application in the Apple App Store is the gold standard, not because Apple products are that special, rather because those apps are curated and will meet a known quality standard. (The demand for iOS programmers here in Austin is huge. Anyone with an non-trivial app in the App Store can get a job inside of about three days here, nobody will care about their actual background.) In our case a Google Playstore app or recognized contributions to a significant open source project would also justify at phone screen and probably an in person interview. That’s as least as good to me as a CS degree with no practical experience.

    In the case of entry level technical degree graduates I want to see some sort of non-coursework self initiated software development project. Often it’s a game, I’ve seen pretty decent chat applications and interesting web applications from the more motivated students. The better the application, the less I care about their gpa.

    I’m not interesting a recent graduate with no self-motivated work, no matter how high the gpa.

    The thing is this. Lots of people major in CS and even work in the field because its a good paying job that is inside, air conditioned, with little or no heavy lifting. Or because their parents told them to major in CS or EE for purely economic reasons.

    If you don’t actually like to develop software, you’ll never be good at it IMHO. Most people simply lack the mental configuration that motivates good developers. That’s why it’ll always be hard to find good software developers.

    This concept also applies to welders.

    One last thought. Every good software developer (or ‘software engineer’, or ‘architect’) is a good programmer.

    That’s why we start every software development interview with a fizz buzz type question, and then ask increasing difficult questions until we feel like we’ve reached the candidate’s comfort level.

    We understand that many good developers can’t just jump up to a whiteboard and write perfect code to reverse a linked list with no notice in an interview situation. But at least they ought to be able to make credible effort.

  71. Phil, you site open source projects as reputation builders.

    Do employees really value open source contributions?
    My experience is that management sees them as distractions; things that
    can steal valuable company time;

    Other indications are that open source people are seen as not pliant
    enough; and people with too strong opinions of their own are not valued
    int the market.

    In general I don’t know if I should hide my open source projects on the CV or not.

  72. On a practical note; I think the open source movement comes with its culture of sharing and its own set of ideas; the whole thing came out of the Hippy movement (just look at the long beard of Mr. Stallman 😉
    Now with all things cultural there comes the same problem: it is hard to transplant a given culture into the third world; all third world countries come with their own culture, with their own system of values. Western countries can’t be simply transplanted into the third world, it can be adopted, but the process takes time.

  73. Exceptional programmers are those that have
    1. Incredible high IQ
    2. Determination to learn.

    While you can blame the lack of glut of good software engineers on the lack of determination (there are a lot of programmers who treat their job as any other a 9-to-5 job) the high IQ is actually the big problem. I have an IQ of 130 and, looking at the source code of some open source project, I feel stupid (not because I don’t understand the code but by the elegance of those solutions).

    http://www.iqcomparisonsite.com/iqtable.aspx shows how few people are candidates to become good programmers. Obviously there are people with high IQ that are not interested in programming so the pool shrinks even more.

  74. There are many more good programmers, but toxic is the ground that has developed in the industry for allowing the flowers of intellect and creativity to blossom. Let me get back to that but first allow me to disrupt the topic:

    Why interview? Why cull resumes? Both are LOW INFORMATION. They are very low information. Few humans except newborns with cute puffy faces and babyfat don’t show well in either. But babies can’t code or engineer useful systems or attack human misery using technology.

    Stop interviewing. Dump all the resumes. Fire more often. Hire more often. Somebody who comes in, they want to see you and your work just as much as you want to see how they fit in that garden of delights known as a productive workplace and how they can bloom and with that bloom add to the beauty of your garden.

    So let them actually work for a day, a week with you. Come in the door and follow, as an extra hand, extra eye, extra mind at the shoulder of a key worker. See how it goes. Fire them! Or hire them. Either way a far far better hire than all the lying resumes and all the bipolar social phobic or social gadfly personified interviews.

    The best chefs do this. A sous chef walks into a kitchen, the lead chef says “Follow me!” and that means follow the lead and pitch in. A chef looking for a new position quickly finds one that is compatible with his skills and personality. Many trials, but REAL trials. As we who follow the Food and Cooking shows know, great chefs are not unlike great programmers. A creative and cookbook mix, the clerical mundane processes of programming and engineering are matched by all the rigorous prep work and maintenance of larder and fridge that a master of a kitchen must ever continue, and yet no good restaurant survives without a chef staff committed to lifetime learning and innovation.

  75. I recommend reading ‘I am a Bad Programmer’ on Hacker News for relevant perspective. It recounts the travails of an experienced programmer who cannot get past the interview stage eventhough he desperately needs a job. If it’s no longer on the first page, you can use their search box to find it.

  76. Seems like there’s two groups posting in these comments–the disenfranchised and the “enfranchised”. The disenfranchised developers describe a system with arbitrary HR departments and companies hiring for quantity over quality. The “enfranchised” founders/recruiters and high-end programmers say it’s very hard to recruit someone with high enough quality to develop challenging products and that Silicon Valley startups pay well and still have trouble finding staff.

    As a technical founder at a challenging startup who is deeply involved in recruiting; for local talent, we expect to pay $90k for a college graduate showing some initiative and $110-200k for senior developers…and it’s very hard to find the right people (I sympathize with the Rackspace gentleman). For remote developers, I’m currently paying about $90k for senior developers (and they probably have a higher quality of living than our local senior developers due to lower costs of living (I’m unlikely to consider an inexperienced person because our product is sufficiently challenging and the coordination overhead makes it unfeasible…other companies may differ). Developers who maintain an open source project relevant to our product are clearly desirable and our current tech lead was found that way–it demonstrates both skill and an understanding of what’s useful (they anticipated what we’d be looking for by developing and maintaining a project we later find useful).

    For projects such as my company’s which can dramatically benefit from exceptional programmers (and many Silicon Valley companies are similar) it remains hard to find good staff, local or remote.

    Yes, recruiting is a deeply flawed process, but that’s the nature of the beast. Also, I find most developers incredibly passive. If finding a great job is so important, why would they not develop a portfolio of (open source) code they can show to a potential employer; why would they not look into themselves to identify technologies and products with which they’re passionate and directly contact relevant companies. Instead, they spam companies without regard for goodness of fit (rarely do I receive a cover letter explaining why a candidate’s skills/interests match our company’s and although we have a publicly available, free product, rarely do I see a candidate try it out) and many use recruiters who will admit to not even superficially understanding the relevant technologies.

    I think there’s a bifurcation between commodity software companies and the commodity developers who work for them…and high-skill companies and the high-skill developers who work for them. We sometimes have to interact with the former companies and although the job titles and CV’s might look similar, they’re worlds apart in ability to get things done. Exceptional developers know many technologies and easily pick up new ones, so high-skill companies don’t require an exact fit (e.g. a developer just needs to know any SQL variant or any JavaScript framework…not our specific variant/framework). Yes, this is implying that “if you’re whining, you’re probably a commodity developer”, but I haven’t met any exceptional developers who have trouble getting work while I haven’t met any high-skill companies who can easily hire for open positions.

  77. Last week I had to conduct a job interview at my company, which is a very large corporation. We were provided with the corporate instructions for conducting interviews. The interview must be 45 minutes in length. Greet the candidate, explain the interview process, etc.

    30 minutes of the interview must be spent asking the candidate questions to determine whether he/she is a team player, communicates well, has initiative, is good at problem solving etc. Tell me about the most effective presentation you ever gave. Tell me about a time when you had difficulty communicating with a co-worker, and how you resolved that problem. Tell me about a time when you had an idea that was rejected, and how you eventually got the idea accepted. Tell me about a time when you helped a co-worker learn something. Tell me about something you learned on your own initiative.

    No time need be spent determining if the candidate can actually write a program.

  78. Interesting point.

    As the Marketing Manager for a small business, we face difficult decisions when hiring freelance software engineers for our cloud-based recruitment software.

    However the trend that we’re witnessing in the UK is that the cost of acquiring the talent is dropping. The market has become saturated to a certain degree, with our universities churning out capable graduates hand-over-fist.

    I’d point to Mark Lutton’s point about the depth and relevance of the contemporary interview process. Perhaps too much time is being spent on ‘culture fit’ rather than capabilities.

Comments are closed.

(Video) The jobs we'll lose to machines -- and the ones we won't | Anthony Goldbloom

FAQs

Is there a shortage of full stack developers? ›

According to a CNBC report, the software developer shortage will be alarming in 2022. The rate of unfilled IT jobs increased to 918,000 vacancies at the end of 2021. Another report noted that by 2030, the number of software job vacancies would rise by almost 22%.

Is there still a demand for software engineers? ›

Well, the global demand for software engineers in 2022 is still at an all-time high as job postings soar. In fact, the U.S. Bureau of Labor Statistics notes that software development employment will likely grow by 22% between 2020 and 2030.

Will software engineers ever be replaced? ›

AI will not be replacing developers or programmers anytime soon but might perform coding and developing tasks in the future. Researchers and AI scientists believe that it will take time for AI to be able to create actual production-worthy and usable code that spans more than a few lines.

Why is the development of good software so hard? ›

Three of the many reasons as to why developing and ultimately delivering software is difficult are: a development team misunderstanding the purpose of the software they're building; the business or customer not knowing what they want (or their own processes); and developers selecting less-than-optimal technologies as ...

Why is there such a demand for full stack developers? ›

Full Stack Developers are specialists with diverse knowledge and skillsets. The management is witnessing an evident demand in the hiring of these professionals. These aim to develop the end-to-end components of the product. This amounts to the more high-priced salary structures for the professionals.

Why is IT hard to hire developers? ›

The hiring process takes time, skills, patience and of course money to be able to find the ideal software engineer. The interviewing process is almost always relatively longer when compared to other roles, as there is the addition of a technical interview. So not only does it take longer but it can cost more too.

Is software engineering harder than medicine? ›

Without a doubt medicine is much much tougher. You need to study for at least 10 years before you can be a competent doctor and I learn a new programming language within a few weeks.

Why is it so hard to get an engineering job? ›

Engineering has become one of the most in-demand and fastest-growing career opportunities, making it a challenging discipline to be hired into since there's so much competition in the job market. Additionally, job searching generally is a frustrating process.

Which country has highest demand for software engineers? ›

Which country has the highest demand for software engineers? Overall, software development is the most in-demand profession in the world. According to PageGroup, the countries with the highest demand for software developers are Canada, Australia, Russia, Sweden, and New Zealand.

Is AI replacing coders? ›

There are many challenges to developing a fully-fledged AI tool that can replace programmers. However, AI can write the codes, and even debug or develop an entire product. But still, it is impossible to replace programmers completely in this industry.

What will replace coding? ›

AI and machine learning (ML) algorithms can solve that. They can configure computers to analyze programs for errors and fix them accordingly before they go to market.

Who earns more software engineer or AI engineer? ›

Software engineering vs artificial intelligence salary

According to some research, we found out that salary for IT, or if you may call “artificial intelligence engineer” in some regions is around 134,135$ per year, on the other hand, the salary for a software engineer is around 169,930$ per year.

What is the most difficult part of software engineering? ›

The hardest part of being a software engineer is not giving up when you feel discouraged. Software engineering is a field that is difficult to pick up and it is really challenging to develop code. There is a famous phrase in software engineering "No code works right the first time".

Why programming is easy but software engineering is hard? ›

Programming Is Easy, But Software Development Is Hard.

Software development is hard because most people usually tend to skip the foundational steps, which is learning to create programs that do things that other people want to pay for, and all the difficulties which that entails.

Is software development really hard? ›

Yes, software engineering can be somewhat hard to learn initially – especially for those without programming or coding skills or any background or knowledge of tech – but there are many courses, tools, and other resources available to help people learn to become a Software Engineer.

Is there a future for full stack developer? ›

Full Stack developers are an important resource to any association that focuses on technology and its development. With the rapid increase in software products and the demand for fast growing technology, this profession is here to stay.

Is full stack developer stressful? ›

Like other tech jobs, full-stack developer work can sometimes be stressful. Some developers get anxious about solving problems in the development process.

Is full stack developer a good career in 2023? ›

Being a full-stack developer can be a challenging and rewarding career. There are many opportunities in this field, and it's also a great way to make money. If you're passionate about this field, then you might want to take a look at the online full-stack software development programs.

Are there enough software engineers? ›

Overview of the top tech talent shortage statistics

Around 40 million technical jobs go unfulfilled due to a lack of skilled talent. The US Labor Department estimates that the global shortage of software engineers may reach 85.2 million by 2030.

Is there a surplus of programmers? ›

Here are the skills and programming languages employers need. The shortage of software developers is expected to hit businesses hard in 2022.

How hard is IT to hire software engineers? ›

Hiring software engineers is hard work. Whichever way you look at it, hiring the right person for your team — in terms of hard skills as well as culture — is complicated, time-consuming, and expensive.

Who is richer doctor or engineer? ›

In a nutshell, the starting salary of a doctor in India at an entry-level position is much higher than that of an engineer. But after a few years, the gap between the two figures gets narrower as engineers get paid a lot more than what they used to get once they grow in terms of experience.

Who earns more a doctor or a software developer? ›

Conclusion. So, yes, as a doctor, a primary care physician (among the lowest-paid doctors) will eventually earn a lot more than a software developer. However, it will be well over 30 years after turning 18 that the net worth of a doctor exceeds that of a developer.

Is engineer harder than doctor? ›

Is Engineering harder than Medicine to study? (Explained) Medicine is much harder than Engineering. Not only is it much harder to get into Medical School, but the volume of study at Medical School is also a lot greater than in Engineering.

Is engineering oversaturated? ›

Their expertise is needed in a wide variety of industries, including resource extraction, manufacturing, and agriculture. Because of the range of industries where mechanical engineers are needed, it is unlikely that the market will become oversaturated with entry level engineers.

Are engineers happy? ›

In lists of unhappiest professions, engineering shows up in the top ten. And engineers are four times less likely to be happy in the workplace than the average working stiff. The statistics are seemingly paradoxical, as engineers also tend to be pretty certain they were meant to be engineers.

Why are engineers paid so much? ›

Why Do Engineers Make So Much? Engineers' high earnings are commensurate with the role's required technical skills, which are extremely high in demand. Furthermore, many industries are becoming more technical in nature, which also drives up the need for engineers with both unique technical skills and soft skills.

Why are software engineering salaries so high? ›

Software engineer salaries are so high because of supply and demand. There are not enough developers to meet demand in the industry so good developers are paid an absolute premium. Technology is also constantly changing and it requires immense effort to keep your skills up to date.

What is the highest salary of software engineer? ›

Software Engineer salary in India ranges between ₹ 3.0 Lakhs to ₹ 14.0 Lakhs with an average annual salary of ₹ 5.4 Lakhs. Salary estimates are based on 354.3k salaries received from Software Engineers.

What is the highest salary of a software engineer at Google? ›

Google Software Engineer Salary FAQs

Software Engineer salary at Google India ranges between ₹ 12.0 Lakhs to ₹ 100.0 Lakhs.

Will software engineers be needed in the future? ›

Future of Software Engineers

So, a software engineer is essential for development. The US Bureau of Labor Statistics shows that demand for software engineers may increase to 22% by 2029. In the Covid 19 situation, more than 4.7 million software developers were working remotely.

What jobs AI can't replace? ›

Psychologists, caregivers, most engineers, human resource managers, marketing strategists, and lawyers are some roles that cannot be replaced by AI anytime in the near future”.

Will coding become automated? ›

The short answer is yes. Humans will turn over the bulk of programming in software engineering to artificial intelligence. Before you panic, consider this. Coders aren't making themselves obsolete by using automation tools—just more efficient.

Are software engineers going to be automated? ›

While it's true that some aspects of a machine learning or software engineer's day-to-day are going to be automated and augmented by AI, this doesn't mean they're going to lose their jobs to it. In fact, the opposite is likely to happen: It's going to make engineers better at what they do.

Will engineers be replaced by robots? ›

AI doesn't need to replace musicians, writers, painters or engineers if humans don't want it to. “Technically, AI will one day reach the point where it can replace engineers, designers and architects,” she says.

Will computer science become obsolete? ›

They are expected to maintain growth through the coming years. It seems clear that computer science will not become obsolete in the next ten years. However, it will evolve as certain specialties advance, dictated by market forces and new developments in technology.

Which pays more AI or machine learning? ›

Unsurprisingly, machine learning and artificial salary ranges are also competitive. Payscale reports an average salary of $111,736 for machine learning engineers, and AI software engineers earn an average base pay of $103,035, according to Glassdoor.

Is machine learning better than AI? ›

Better, faster decision-making

Companies use machine learning to improve data integrity and use AI to reduce human error—a combination that leads to better decisions based on better data.

What AI jobs pay the most? ›

Among the highest paying jobs in the artificial intelligence industry, Big Data Engineers or Architects make anywhere between 12 to 16 LPA at the beginning of their journey, with plenty of scope for growth as they continue working.

What is toughest part of coding? ›

Working with someone else's code

The task: Having to maintain, debug or enhance an application or piece of code that was written by another developer(s).

What is the hardest thing to code? ›

Malbolge

Coding in this language looks like garbage or malfunction and it is said to be that Ben Olmstead has never written a single program in this language. Malbolge is a public domain esoteric programming language and considered as one of the hardest programming languages in the world.

What is the most challenging in coding? ›

Debugging. Debugging is a critical skill, but most people aren't born with a mastery of it. Debugging is hard for a few reasons; first, it's frustrating. You just wrote a bunch of code, and it doesn't work even though you're pretty sure it should.

Is software engineering math heavy? ›

Despite its name, software engineering does not require math. At least, it doesn't require as much math as you might think. There are numbers and problem-solving, but you won't have to break out your AP Calculus certificate or trigonometry textbook to program—or engineer—software.

Are software developers happy? ›

Based on a small survey of 350 respondents, some 70.3 percent of developers said they were happy at work, versus 14.4 percent who said they were unhappy, and 15.3 percent who claimed indifference.

Is it fun to be a software engineer? ›

Most Software Engineers have, at some point, spent time coding and programming purely for fun – they enjoy scanning code for errors and other programming puzzles. The best software engineering pros love to build things and they love to fix things, and they enjoy the day-to-day work of being a Software Engineer.

Is programming harder than engineering? ›

Engineering is generally harder than programming, it is more involving and more math-intensive. Engineers are trained to code at a low-level, mostly hardware level while most Computer Scientists code at high-level, mostly software programming.

Is software engineering stressful? ›

Surprisingly, the job of a software engineer is relaxed and with low levels of stress despite the many challenges that come along in the profession such as working long hours, working on legacy code, dealing with bad managers, or having tough clients.

How many years does it take to be a software engineer? ›

How long does it take to become a software engineer? Most software engineering jobs require at least a bachelor's degree, which takes four years of full-time study. Some employers prefer candidates with a master's, which requires an additional two years of study.

Is full stack developer a good career in 2022? ›

Full-stack development is especially a good career choice in 2022. You could work from home, with a good average base pay structure in India, with fewer competitors and more demand, it is the diamond of technical jobs. If coding and varied working interest you, go for full-stack development.

What is the future of full stack developer? ›

An experienced full stack developer can earn anywhere between 16- 20 LPA. Full Stack developers can easily handle the work of 2-3 developers due to their expertise in multiple areas and thus helps in making small teams, avoiding miscommunication and reducing the operating costs.

Which full stack is most in demand? ›

There are many full stack developer languages dedicated to server-side programming. However, Python is the most popular one.
...
MEAN
  • MongoDB.
  • Express. js.
  • AngularJS.
  • NodeJS.
9 Feb 2021

Is full stack developer a good career? ›

Full stack development is a popular and promising career for those in the software development field. Currently, a full 55 percent of surveyed developers identify as full stack professionals.

Which IT field has highest salary? ›

Let's Check on the Top 15 Best Paying IT Jobs in Technology for 2023.
  • Cloud Architect - $107,000.
  • DevOps Engineer - $140,000.
  • Blockchain Engineer - $150,000.
  • Software Architect - $114,000.
  • Big Data Engineer - $140,000.
  • Internet of Things (IoT) Solutions Architect - $130,000.
  • Data Scientist - $150,000.
7 days ago

Who earns more software engineer or full stack developer? ›

Software Engineer: Per Glassdoor's salary estimations, a software engineer averages $92,046.00 a year. Full-Stack Developer: Per Glassdoor's salary estimations, a full-stack developer averages $105,813.00 a year.

Which developer has highest salary? ›

It thus becomes imperative to know why you should choose software engineering as your career and what are the highest paying software jobs in 2022.
...
Table of Contents
  • Data scientists. ...
  • DevOps engineer. ...
  • Mobile app developer. ...
  • Full-stack developers. ...
  • Data warehouse architects. ...
  • Site reliability engineers (SRE)

Is full stack developer stressful? ›

Like other tech jobs, full-stack developer work can sometimes be stressful. Some developers get anxious about solving problems in the development process.

Which country is best for full stack developer? ›

The best country that offers great full-stack developer future scope is the USA. However, other countries, like Australia, Canada, Sweden, Singapore, and the United Kingdom, also provide great opportunities for these professionals.

Do full stack developers get paid more? ›

Do full stack developers get paid well? According to Glassdoor, full stack developers make more on average than back-end developers ($92,963 per year) and front-end developers ($102,308).

What language is best for full stack developer? ›

11 Useful Skills & Languages for Full Stack Developers
  • Python. Since Python is one of the leading programming languages for modern back end web development, it's equally valuable for those interested in full stack development. ...
  • JavaScript. ...
  • HTML. ...
  • CSS. ...
  • SQL. ...
  • Rust. ...
  • Java. ...
  • Web Architecture.

Which is the best language to become full stack developer? ›

Currently, the most popular languages for full stack developers are Node. js, Python, C#. ASP.NET, and PHP. It's believed that the most common languages for full stack developers in future will be HTML/CSS, and some of the newer ones like AngularJS, Node.

Which developers are most in demand? ›

Tech jobs: These are the 10 most in-demand developer, cybersecurity and cloud roles
  1. Information security engineer. ...
  2. Full-stack engineer. ...
  3. Data scientist. ...
  4. Machine-learning engineer. ...
  5. Java developer. ...
  6. Data engineer. ...
  7. Cloud engineer. ...
  8. Backend engineer.
23 Jun 2022

Are full stack developers happy? ›

Full stack developers rate their happiness above average.

Which IT field is best for future? ›

Top 5 Tech Careers Of The Future
  • Machine learning engineer. This specific branch of artificial intelligence is ideal for those who have a passion for computer science and desire a career in a fast-moving and exciting industry. ...
  • UX designer. ...
  • Robotics engineer. ...
  • Data scientist. ...
  • Cloud engineer.

What is the salary of full stack developer in Google? ›

Average Google Full Stack Developer salary in India is ₹ 27.4 Lakhs for null years of experience. Full Stack Developer salary at Google India ranges between ₹ 12.0 Lakhs to ₹ 45.0 Lakhs.

Videos

1. Is Software Engineering a long term career?
(mayuko)
2. FAANG Salaries Have Become Ludicrous!
(Logically Answered)
3. Joe Rogan on Bullshit Jobs
(JRE Clips)
4. What Professional Software Engineers ACTUALLY Do
(ForrestKnight)
5. Why You Shouldn't Become a Software Developer in 2021
(Andy Sterkowitz)
6. Three Things Preventing Your Promotion to Senior Engineer (from a Principal at Amazon)
(A Life Engineered)
Top Articles
Latest Posts
Article information

Author: Kieth Sipes

Last Updated: 01/21/2023

Views: 6076

Rating: 4.7 / 5 (47 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Kieth Sipes

Birthday: 2001-04-14

Address: Suite 492 62479 Champlin Loop, South Catrice, MS 57271

Phone: +9663362133320

Job: District Sales Analyst

Hobby: Digital arts, Dance, Ghost hunting, Worldbuilding, Kayaking, Table tennis, 3D printing

Introduction: My name is Kieth Sipes, I am a zany, rich, courageous, powerful, faithful, jolly, excited person who loves writing and wants to share my knowledge and understanding with you.