New Kids on the Block: Understanding Developers Entering the Workforce Today
Another academic year has recently ended, bringing with it a new season of graduations to celebrate and a new crop of freshly-minted graduates entering the software industry. The 2017 Stack Overflow Developer Survey provides context and data for understanding developers who are just entering the workforce compared to more experienced developers. Let’s use this year’s survey results to gain a deeper understanding of these new graduates.
Not all professional software developers go to college, but most do. In our survey, 77.5% of professional developers had a bachelor’s degree or higher, and 92.4% had at least some college or higher. For this post, we want to look at new developers at the beginning of their careers, so we’ll look at professional developers with less than 1 year of experience (or in some cases, 1 or 2 years). The vast majority of these developers have college degrees or some college education, but it’s important to keep in mind that a university degree is not the only path to a career as a developer.
Developer types and salary
Overall, the patterns we see for new developers who are just joining the workforce are similar to the workforce overall. Most new developers identify as web developers, with sizeable proportions who develop for desktop and mobile.
We can look beyond the overall distribution to compare the population of new developers to their more experienced counterparts; this allows us to see how developers at the beginning of their careers are different than those further along.
We see some related shifts here. New developers, those with less than one year of experience, are less likely than more experienced developers to identify as systems administrators and DevOps specialists. They are also less likely to work as DBAs. These newly-minted developers are more likely than more experienced developers to be working in graphics, as graphic designers and graphics programmers. They are also more likely to be working in my own fast-growing field of machine learning and data science. These choices made by software developers early in their careers are reflective of trends in the software industry as a whole; they are choosing to enter fields of the software industry that have lots of opportunities and are growing quickly.
What kinds of salaries are developers early in their careers commanding, in different countries and different subfields?
DevOps specialists earn high salaries in many regions, as do developers working in data science, statistics, and machine learning. Developers working with embedded systems/devices are also earning high salaries as IoT technology becomes more important. These salaries for developers just beginning their careers are lower than the overall medians in this regions, just as we would expect.
Shifting undergraduate majors
As the software industry has changed and grown over the past several decades, the way that developers are trained in college has changed as well. We can explore what undergraduate major developers had when they were in school, and see how the proportions of various majors have changed. For example, computer science/software engineering is the most common undergraduate major for developers but the proportion of developers with that major has changed over time. For example, of developers who have 10 years of experience today, 54.6% have a CS major. Of developers who have less than 1 year of experience today (those new developers just entering the workforce), 48.8% have a CS major. The proportion has seen a modest drop, because more new developers today are choosing other undergraduate majors.
Let’s look at some of those trends. How does experience change with undergraduate major?
The differences here reflect changes in the way that people working with code have been educated over the past several decades. More developers with many years of experience have majors from fields like math, natural sciences, and non-CS engineering. (That would be where I fit, with my physics major!) As the software industry has grown and matured, new majors have been developed at universities like web development and IT; we see that more developers with few years of experience have majors like these.
We can get significant insight about the paths people have taken to coding professionally here, and these kind of changes are continuing. My own field of data science is currently populated by a miscellaneous amalgamation of people with PhDs from exactly some of those same fields (statistics, natural sciences, social sciences), but universities are busily developing programs in data science. In the future, more data scientists will have this kind of specialized training.
Another factor here is attrition from the field of software development. If, for example, people with CS degrees have low rates of leaving the field compared to other majors, we would see a higher proportion of more experienced developers with CS majors than new developers. That is in fact what we see in our survey respondents, as I noted at the beginning of this section. We also asked on this year’s survey if a respondent was someone who used to be professional developer but was not anymore. This population in our survey was small, as you would expect, but of those who answered, we do see a modestly lower proportion of CS majors in this group compared to professional developers overall (about 10% lower). These comparisons show us that attrition as well as trends in training contribute to the overall composition of academic backgrounds in the software workforce.
Work and life
Next let’s examine a few issues surrounding work and life, to see how new developers entering the workforce right now compare to more experienced individuals. When it comes to compensation and benefits (aside from base salary), what are most important to these types of individuals?
New developers, those with less than 1 year of experience, are more likely to say that employer-provided meals like free lunch are important to them, as well as employer sponsorship of education, such as tuition reimbursement. These were options where new developers gave significantly different answers than others; new developers were 50-60% more likely to value free food and education than their more experienced colleagues. Developers with more experience are more likely to say that benefits like retirement contributions and the option to work remotely are important to them. There are many benefits, like days off, annual bonus, and high-quality equipment that are about equally important to all developers, regardless of experience level.
We see here that there are not dramatic changes in how developers of different experience levels value job security. There is a modest trend in that developers who are newer to the field think job security is slightly more important than very experienced developers; the most experienced developers are the most relaxed about job security, but this is a pretty small effect.
The raw data (anonymized and cleaned) from the 2017 Stack Overflow Developer Survey will be released on June 15, so soon you will be able to explore this complex, rich dataset for yourself!
99 Comments
What exactly is “DevOps” in this context?
Ah yes, what IS DevOps??? 🙂 This data came from the 2017 Developer Survey, and respondents chose what kind of developer they were on one of the questions. It was a multiple response question (i.e., “select that all that apply”). So in this context, it means developers who choose to identify themselves as DevOps specialists, among possibly other identifications.
What were the options? I hate the term because of its lack of agreed-upon meaning, but if there isn’t a Site Reliability Engineer option (or write-in), I usually end up choosing DevOps anyway.
You can see what all the options were right here: https://insights.stackoverflow.com/survey/2017#developer-profile-developer-type
DevOps is kind of a strange thing cause some companies define it as a full stack developer. Where it is not…
Overall, the patterns we see for new developers who are just joining the workforce are similar to the workforce overall. Most new developers identify as web developers, with sizeable proportions who develop for desktop and mobile.
Great. Now it means what any of a hundred different people think it means. Profession Fluidity. heh. Sorry for the late reply.
DevOps is the intersecrtion of Development and Operations. Think the people who configure build, CI and monitoring solutions.
In Enterprise IT it translates to DevOps being the people you yell at when you need repo access, build and deployment automation, etc. Basically all the crap a small shop IT manager has to take care of.
Yes, but some people think DevOps is a Fullstack developer, where as one might/might not uderstand all layers of an application, one has to understand the software development cycle. Most companies think that they hire a developer with sysadmin skills which is not exactly true…
Buying a computer and being self-taught is the reason I am not an Air Traffic Controller today. 😉
So you are a self taught developer that was able to make a living solely with your self-taught skills?
I know Air Traffic Controllers that earn 5k/month…
But are they self taught air traffic controllers???
Scales on those graphs seem a little… odd. I know you’re trying to normalize for differing pay scales in different countries, but suddenly seeing India at a $8k scale instead of >$50k almost looks like a mistake (my initial thought was that it’s monthly salary instead of yearly).
Maybe good to have a little discussion there about that outlier?
It’s not a mistake; India’s per-capita GDP is roughly 3% of the US, and with that comes substantially (though not proportionately) lower professional salaries.
Well, I guess that explains outsourcing right there.
I am an Indian, and it is completely true, it can be even lower than this
Could we get the salary data either combined with the same x-axis scale, or just redone with the same x-axis? At the moment it’s temping to think all the countries are paying the same amount, wheras India falls far behind, followed by other countries!
I’m also wondeirng how it fits with some sort of hamburger-index
Hey, I’m from India and I can tell you that living in India is pretty cheap as compared to west. 1 dollar is around 60 rupees in india. So you can have an above average living if you earn around $10000 per year.
I guess that justifies my question about the hamburger index (e.g. how many hamburgers does it buy you?)
I am struggling to understand why anyone would put database administration and/or system administration as a kind of software development. They are not.
Both of those jobs are different from development and they require different skills. Of course parts of those things overlap, but they are not a subset of development, they are a partial intersection (if we want to use set theory terminology). I am a software developer and know many people who would be much more skilled than me in administering a database, even though I get the basics of it, that’s not my main expertise. Even on SE we have a separate site for sysadmins.
Conversely, many sysadmins can be considered the best in their field and yet they might not be excellent developers, because they don’t need to. Every person specializes a bit in one way or the other.
Also, it always puzzles me how people mix up computer science and computer/software engineering. Science is science, engineering is engineering. For some tasks, an engineer is much better than a scientist. For other tasks, a scientist is much better than an engineer. For some tasks, they are equally capable. One should never think that one kind of background is “better” than the other, but we must remember that they are different.
Again, partially overlapping, not subsets and not the same thing.
In small shops, people tend to wear many hats, so they might be a developer today (and hence on Stack Overflow) but primarily handling sysadmin duties.
But I think primarily this is because the survey comes through Stack Overflow, but those of us who aren’t primarily devs, but are working in technical fields, still hear about it and fill it out. And job sites tend to say they’re for hiring developers, but also include us in there somewhere (this includes Stack Overflow Jobs).
> Also, it always puzzles me how people mix up computer science and computer/software engineering.
The vast majority of people with computer science degrees end up doing software engineering in industry, and as a result a number of CS programs have effectively become software engineering degrees instead (my university offered both, and the differences were only about 16 units). It really shouldn’t be surprising, given this setup and nomenclature, that the terms get muddled.
> In small shops, people tend to wear many hats
Yeah, I know the feeling. I am a freelance, for some projects working with a few other people and it happens. But this doesn’t mean that when I have to do some sysadmin task (not too fancy, hopefully, because I am not specialized in that) I consider that I am doing development. Sometimes I develop, sometimes I administer systems… they are different things.
> shouldn’t be surprising, given this setup and nomenclature, that the terms get muddled
Well, just as an anectdote, if I tried to say “I am an engineer” in my country (Italy) I would commit a felony (up to 6 months in prison or a fine ranging from 103 to 516 euros). At the same time, wtih a CS degree I can apply for the state exam for becoming an engineer, but that’s a different thing.
Weirdly enough, there is no restriction for saying “I am a scientist” so some engineers here sometimes say “I am a computer scientist” or even technicians who repair PCs, but I digress… Anyway, IMHO those terms should not be muddled too much. Scientists and engineers come from different backgrounds and have different strengths.
I worked in Italy for two years, and in I found it weird that in Italy people would call me “dottore”. Then, I understood that anyone with a university diploma tends to be called like that, even if they are neither medical doctors nor have a doctorate. Now I learn that they have laws against people calling themselves engineers…
Italy was quite a cultural shock for me 😀
It’s a degree, not a diploma, but yeah. It’s a very old fashioned heritage from fascism. Nowadays we have a (confusing) amount of different “doctors”:
– BSc / BA: dottore
– MSc / MA: dottore magistrale
– PhD: dottore di ricerca
I know the situation abroad and usually ask people not to call me dottore even though I have a MSc so they could do it here.
> they have laws against people calling themselves engineers
Yes, and that would be the same if you tried to abuse the term “doctor”. Actually, there is a similar law in other countries (for the term “doctor” and/or “engineer”) like the US, Canada, and so on…
Stored Procs, Bulk load/backup scripts, triggers and who knows what else. I’m not saying it’s a compiler and a git repo, but there’s definitely a world of problems covered by Stack Overflow.
OK admittedly my mention of SE was not the best example, given that Stack Overflow is a site for programmers and not specifically for software developers. But still, programming is a part that overlaps between the two jobs but they are not the same job.
I’d have to disagree. Ever heard of the PL/SQL programming language, or Oracle 10/11g? Functions, packages, triggers, it get’s rather complicated and I wouldn’t NOT classify it as a type development. Seems odd to me.
Programming is a tool used by software developers, database administrators, statisticians, data scientists and many other professional figures.
Confusing “programmers” (a very broad and generic term related to a specific tool) with software developers is a common mistake.
there are wireless carriers who have billing systems based on PL/SQL functions, a lot of back-end stuff is built on that as well.
Julia, your profile image (https://stackoverflow.blog/wp-content/uploads/2017/02/profile2017.jpg) is 3000×3000 and a few megabytes in size. Considering that it’s shown at 50×50 can I suggest it’s a little overkill?
Keep up the good work!
So there is a large percentage of software and web developers that did not major in CS? What are the odds of them getting jobs in this cut-throat market if their development skills are up to par? Say they got degrees in totally separate fields.
My education is as a dancer. I’ve studied nothing related to programming and barely any maths at all (in school). I’m a completely self taught developer, and I’ve been doing it since I was a kid. A company like Cisco would likely never hire me since I don’t have a relevant degree in something that their business strongly relies on, but a game company, startup, or web studio would normally be very interested in me. My education suggests that I have a great understanding of things like animation, art, and the experience of producing in small teams and how to make that process work. I can also be interesting because the fact that I’m a dancer can help build an interest in the body, movement and general health in the office. This is not something I’m trying to force on people, but I often receive curious questions about “actually, how should I really [insert workout/stretching/ergonomics-related action here]?”. I’d say most of all I’m interesting for people who want a developer who understands and gets along with the designers. So for me personally my education has been doing me good.
In that case, you are the exception to the rule, sir. Most developers I meet are mediocre at their jobs even having been educated in their fields, and I’ve met far too many self taught “experts” to put much stock in that sort of thing.
It’s a rare few who have the drive and motivation to study and excel on their own, and later your experience will speak for itself. That’s one advantage of this industry – your resume speaks louder than your education.
indeed. The worst devs I’ve encountered during my 20 years in the field have been those with a formal education in CS or SE, especially those who’re recent graduates and think they know everything and are more valuable than someone with an education in say physics or chemistry who’s been working in software development for a decade.
The written letters of recommendation from large business owners speak louder than your resume.
Anton, yes people like you exists. But you are not a “large percentage” that Jonathan was talking about.
Also, many “self-taught developers” are actually just people who learnt how to program (programming is just a part of development). They know nothing about algorithms, computability, complexity theory and so on…
I am not saying that is your case, absolutely. I am just saying that many claim to be developers while they are not so there really cannot be a large population of self-taught developers. That population is small.
I think this is kind of my point actually. I have only a very basic understanding of algorithms and complexity theory, and to be honest I’ve never heard the term computability before (although I might be familiar with the concept, as it often is being self-taught). So the jobs I get aren’t the ones where this is important. Yes, definitely I’m part of a lucky few who are good at what they do, so in that sense I’m perhaps not representative, but when I end up doing for example a front-end job, it’s fairly irrelevant whether I know about the things you mention. What really sets me apart in those jobs is that I notice if the colour values are slightly off, if the things don’t line up like in the spec, if the proximity of things look off with a different headline, if the animation I programmed turned out slightly different from the one in the spec, if I can describe to a designer what’s hard to achieve in their design in words that they understand, and those kinds of things. There are plenty of jobs where just knowing how to program is more or less enough in the technical department, and the skills surrounding it actually matter more.
I wrote a reply to this which got considered spam 🙁 Hopefully it’ll show up soon!
It’s so interesting to hear people echoing your thoughts on the population of self-taught highly technical developers being small. I live in southern California and if I take the top 10% of developers and look at their education it’s feels quite close to 50/50. Several years ago it was definitely more like 80/20 in favor of at least a BS in CS. So it seems like education may vary greatly from area to area. I find that the entry level guys with a CS degree are harder to guide, more likely to be totally lost or be a cowboy. This is obviously a generalization though.
“I find that the entry level guys with a CS degree are harder to guide”
Honest question: what about entry level guys who have absolutely no theoretical background, no relevant education and no experience? Do companies have time and money to prepare them “from scratch” about development practices, relational databases, programming paradigms, algorithms and data structures? Or, most importantly, on computational and scientific thinking?
If the answer is “yes”, then I guess you are right and having a degree becomes a bit pointless.
Every position doesn’t need someone with knowledge on complex algorithms, understanding how data structures like linked lists function or big O notation. You interview and search for people based on the requirements for the position and not an overarching list of qualities programmers must have. Most days almost all jobs require mundane and less technical work. Most people are not solving extremely complex mathematical problems all day long. Most of the time people are building forms or screens to input data or to display data in a meaningful way to consumers or for internal applications.
For me and any position I’ve ever hired for, I look for qualities that can make a person successful in the position and the company in general. I also look for qualities that make the person easy to work with and be around as you will spend at least 8 hours a day for at least 5 days a week with this person. If you don’t get along why the hell would you hire them and spend more time with them than you do with your own family? That sounds like a bad decision and leads to a horrible work environment.
“list of qualities programmers must have”
OK well, I was actually thinking about software developers. If you need to add more people to the coding work force then sure, any person who can code is fine.
“Most days almost all jobs require mundane and less technical work”
Ok, let me give you an extremely mundane example. As a hobby project (yes, not even a job) I maintain a small API with a single interface to query a database. It’s used by a small group of around 30-40k users. So as you may see it’s very small, nothing too fancy.
You could say it’s almost boring. 😉
Given the reasons said above (it’s a hobby project, it has a very low number of users and it’s not queried very often, about 1000 times a day) when I started writing it for once I thought “OK I am not going to worry too much about the DB, I will just add three tables, link them up with a PK and I am done”. If we want to use a joke we used often here when I was a computer science student, I was “thinking like an engineer… as long as it works, it’s fine”. 😀
Hey really, it’s just a joke, there’s plenty of stuff that engineers can do better than scientists. 🙂
I knew I was not doing it optimally, I was just adding up some code that was technically correct but the algorithm and the chosen data structure were not extremely efficient.
Well, the conclusion is that after a few weeks the poor design choices were causing the small amount of users using the API to clog up the server. They would get high response times and the CPU usage would sometimes go too far.
I rethought the DB from scratch, applying the appropriate design and normalization techniques, realized I stupidly forgot to place an index on a column (thus having O(n) lookup time instead of O(1)… see? Big-O notation) and then suddenly all started to work smoothly again, even after the users increased by about 40%.
Did it work before using the tentative approach? Sure it did… it even looked fine for the first weeks. Then s**t happened and I learnt a lesson: if you do it lazily, it will bite you. If you do it correctly, then it will probably be fine.
But for doing it correctly you need to know the theory. Either studying on your own (which is hard but doable), or by pursuing a degree.
You’re making the assumption that each developer works in a silo, without guidance, code reviews, team planning, etc and that it’s impossible for them to access the internet or the rest of their team as guidance. While you may work this way, the professionals over here making software that supports billion dollar industries do not work this way.
We build with high availability, redundancy, and repeatability in mind. We have processes in place with monitoring and peers that care about the success of the organization and the individual developers so we check each other’s work and guide them so they can learn.
I’m really sorry that you seem to have been working at places that just don’t offer those kinds of reinforcement and learning.
Unfortunately you sound like the holier than though cowboy coders that I personally would prefer never to work with and would actively avoid hiring. Anyone with an internet connection, the desire, and half a brain can go and learn the exact same things you are referring to above.
You are clearly missing the point of what I explained numerous times and are trying to have a theoretical discussion about problems that don’t actually exist to justify your degree. I’m sorry you don’t seem to understand what i’m saying quite plainly and wish you the best, but i’m done wasting time on this pointless discussion.
Of course people will work in team and get new abilities and expertise. But they start from having a background.
Do you think you can become a doctor using Google? Or an engineer? What about a truck driver? Yeah let’s improvise everything. LOL
No man, lifelong learning and constant self improvement works if you start from a basis. That can be a degree, or a high school diploma in a relevant field (In my country we have ‘industrial IT’ high school diplomas, for instance), a private course or whatever.
A person with no background cannot search for topics he/she doesn’t even know exist.
The discussion is pointless because it’s not a discussion, it is you proclaiming to the world “yeah development is super easy, any one can buy ‘C for dummies’ and become a pro”.
Come back when you want a true discussion.
negative sir i just whole heartedly disagree with your opinion. a discussion is when prople learn from each other by presenting facts. you are just arguing semantics while i continually try to clarify my position to you in the rvent you may understand and learn someone elses perspective.
This is a problem with the newly educated.. They love to speak from a position of authority because they have a degree. It’s very silly way of thinking. I’ve got no degree, but have built actual real software that has generated hundreds of millions in revenue.. What have they done exactly again?
I have no formal education beyond high school. My high school diploma is from an adult education facility (i got a GED). I have more practical skills and knowledge than most people who have been working in the field as long as I have. When I am looking to hire a new potential developer I don’t bother looking at their education. It’s helpful but not important. What’s much more important to me is that I can trust them to make the right decisions in a high stress environment with tight deadlines.
Things I look for:
– Is a good cultural fit
– Can hold a genuine conversation
– Is not boastful but is humble
– Is passionate about learning
– Demonstrates good critical thinking/problem solving abilities
– Demonstrates good hygiene (you’d be surprised)
– Has hobbies/interests outside of work
– Has goals
– When asked questions such as what would you do if you no longer needed to work and had all the money in the world, doesn’t answer “travel”. You can’t travel for 70 years every day of your life. You’ll get bored and eat a gun. People who don’t have an answer beyond travel don’t get a job.
The reality of programming is that 70% or more of what you do on a daily basis is mundane. Implementing features which have already been planned, writing unit tests, pushing out deployments, etc. The “tough stuff” such as optimizing the storage of a large binary tree or structuring hadoop/cassandra keys so extracting data is easy are less common than a CS degree will make you think. Typically those things are group efforts (or should be).
If you vibe well with a person and they demonstrate the qualities outlined above, they will be able to learn how to be a great programmer, will take direction, will be passionate and happy to learn new skills and they will probably pass these qualities on to new developers they eventually hire.
If you don’t want to hang out with this person outside of work by the end of the interview, how are you going to feel spending > 8 hours per day for years with them?
All that to say that i don’t think education has any bearing on salary or getting a position… or at least it hasn’t been an issue for me
I’ve met people who were super personable, and very willing to learn, but just didn’t “get” programming.
The whole travel thing is also weird. Until I was in my mid 20’s I would precisely have answered “see the world”. Now, I’d buy a house, _then_ see the world. Sure, you’ll get bored of it in a few years, but coming up with a detailed 20 year plan in an interview is not realistic.
I’m not saying they need to have a 20 year plan, but they better at least have a general idea of what they want to do with their life. And I understand what you’re saying about people who don’t get programming. Typically those people are not very going to be passionate about programming. IDK, maybe it’s just me, as I’ve been doing interviews for many years now. Typically I can tell whether or not someone will be a good fit without looking at any of their code and just having a regular conversation with them. I don’t typically ask many if any technical questions at all.
There are key phrases, words, and concepts that only people who have been programming and have a good understanding of how things work will be able to explain. Whiteboard interviews are BS.
The only thing I would do in an interview if I need to assess someone’s technical abilities is to give them a programming challenge. No bullshit things. No whiteboard interviews. It wouldn’t even be something difficult. I would just give them a simple task like I would anyone on a regular team. Something like – “build an api endpoint that will output either fibonacci or prime number sequences up to a given value provided by the client”.
Now there are a number of things you can garnish from this simple task. Consider the questions they COULD ask you after you propose this simple task.
– What framework?
– Can i use libraries?
– Should there be authentication? What kind?
– Where should it be hosted?
– etc etc etc
Depending on what they ask, combined with what they accomplish in a given time frame (maybe 2 hours) you’ll see and hear more than enough to know if they’re a good fit.
That’s my .02
I don’t understand why you might reject someone simply because they seem to be into travel and don’t seem to have much more ideas about what they would do with their lives if they got time and money. What kind of things does this tell you regarding the ability of the person to do a good job ?
To me it sounds like just an arbitrary rule that you set in order to simplify your recruiting procedure. Maybe you have enough candidates and can afford discarding some on such weird criteria, but that does not sound fair for the discarded ones.
(I’m not myself much into travelling)
On the contrary, nothing about the questions i ask or the methods I employ are arbitrary. It’s the combined knowledge of many teams I’ve worked on and many different people’s combined efforts at finding the right candidate. One that can do the job, fit the culture, be happy working there, and feel valued and successful.
As for the travel question example – I think you’re misunderstanding the reason for that question. It has nothing to do with travel. It’s a conversation I have with the candidate and not a single question and answer. There’s no right answer either. It’s a process where I ask them a specifically worded question which is general and listen to their answer. Then I ask them the same question with modifications to learn more about them. I can watch how they process the question, make new decisions, and learn about how they approach problems. It also tells me if they are planning, how they plan, whether they have goals setup, what their hobbies are, and whats important to them. Hopefully you understand what I’m saying now. It has worked extremely well and has built some of the best teams of developers I’ve ever worked with. I still keep in touch with almost every single person on every team built this way to this day.
OK, I understand better now. It makes more sense with your expanded explanations.
If you mean the literal definition of CS, it’s hardly required. My degrees are in web development and networking, not ‘hard’ computer science and I’ve done okay.
I have no degree and I assure you I have 0 issues finding work.. All the people coming out of college with over priced paper are about to find out that the real world cares about results now.. not what you’ve done in the past.
I am a relatively new developer with fewer than 5 years in the field. I find the priorities of “new developers” (as reported here) to be incredibly short sighted, which is perhaps indicative of my generation. I’d rather have solid benefits than have my employer buy me lunch once a week.
Similarly, I don’t understand the fascination with a “charitable match”, or other perks such as having an XBox in the lunch room. Give me remote options, and a decently private desk to work at, such that I don’t feel like like an animal in a cage when I’m sitting in a tiny little cubicle.
I also find the reported salaries indicative of a major underappreciation of programmers in the western world. I think one of the major problems facing developers is that many people have this misconception, fueled by terrible Hollywood movies, that anyone can learn how to program in their parent’s basement given pizza, energy drinks, and an internet connection.
“Programmers” and “developers” are two different things. Yes, many kind of people can (and do) learn programming. That doesn’t make them software developers. Programming is a tool used also by software developers, not only by them.
As for benefits, do you mean healthcare, insurance, retirement… or other stuff? Because those three are mandatory in basically the whole EU (for instance) so there is no point in asking for them. They are granted.
The salary level varies by country. I look at those in the US and see that they are extremely high (but then I remember Americans don’t get healthcare, have to ask for loans just for going to university and so on… then it starts to make sense). Those in France and in the UK are medium-high.
Both India and Germany show that they are skewed towards some types of professionals more than others, yet the Indian wages are ridiculously low. But we don’t know the cost of living in India, so the perspective could be seen as incomplete.
So this:
“I also find the reported salaries indicative of a major underappreciation of programmers in the western world”
…really depends if you consider countries such as Italy, Spain and Portugal to be western or not. 🙂
Reading your comments below I can see what you mean by there being differences between programmers and developers, although I’ve been using the terms interchangeably.
As for benefits, etc., I live in Canada, where most of the things you list are not (satisfactorily) covered by the government, and you still have to pay large sums out of pocket for things like dental care. My generation is also facing essentially never being able to retire – at least not on a government pension.
As for what I mean by salaries in the west, I am referring to the EU, USA, and Canada. WIth the exception of the USA, where developers seem to be a valued commodity, I find that in Canada, for example, developers are not paid much more than a moderately experienced hotel clerk.
I’ve met people who’ve been in the field for 10+ years and aren’t making much more than I am right now. In the mean time, the solution they develop save companies untold tens of thousands. Funny that.
That’s just the curse of the world the way it is in general. Those who do the work always get the least back. Myself and others I’ve worked with have often opined that we techies in the modern age are essentially filling the same position as workers in mills, factories and shipyards did for our parents/grandparents generations – a brimming pot of cheap labour. Being a developer/programmer just isn’t a big deal anymore unless you can do something really special.
“Anyone can learn how to program in their parent’s basement given pizza, energy drinks, and an internet connection.”
This seems accurate.
depends on the definition of “programming” and the quality standards expected at the end…
Yeh the definition is experience brings quality – not instructions and homework. The kids coming out of school are uploading 3000×3000 avatars to be displayed at 50×50 then writing blog articles about how things have changed, and man have they. Kids coming out of school already assuming they even know what the word quality means having never created an ounce of it in their entire lives.
Are you really sitting *in a tiny little cubicle*? I am dreaming of something like that, since I’m sitting *a huge overcrowded open-space*. What’s worse for a programmer?
600ms to load the page, plus 5.5s for the 2.55MB profile image 🙂
Yours took a whole lot quicker downloading the page and image. At the time of writing this, some 3 minutes into opening the page, and still begging for the image to load in full.
On the plus side, you could print this page on a VERY high resolution printer and the avatar would still look nice.
Wow you can see her beard in that picture.
Free food over health benefits? Retirement? Why?? My office gives us jelly beans, trail mix and cookies and I’d much prefer they didn’t. Give me health care and RRSP contributions so I can quit my second job.
Probably because in the EU healthcare is almost free and in several states retirement contributions are compulsory so you don’t ask for those things. 🙂
I don’t want to be picky, but I think it’s important to point out that EU healthcare is not “free”, it’s just paid for by being taxed more. Doesn’t alter your main point.
yeah last time I checked they took a whole bunch almost 15% of my salary for health care, but I’m not complaining, better having health care then not
You are right, but the “more” is not so much more… and actually, if you look at income taxes, they are higher in the US than in the EU on average:
http://www.taxpolicycenter.org/briefing-book/how-do-us-taxes-compare-internationally
Granted, income taxes are not all possible taxes. Overall the taxes in the EU are a bit higher than the US.
But taxes must be paid anyway and for a good share they depend on your income (major exception: VAT… that depends on how much stuff you buy). If you live in a EU country and are poor, homeless, or a child, it doesn’t impact your right to access healthcare.
Do you arrive in the ER section at the hospital and need life saving surgery? You get it. Then you stay a few days there and go home. You won’t pay a single euro.
The US has lower taxes because there is no healthcare, no higher level education, and so on. It’s a country where your right to survive is based on your income. Not exactly fair.
At the same time, they spend an estimated $8.36 million PER HOUR on war worldwide. “National priorities”, they say…
I do not know in which EU country you live, however healthcare with maybe the exception of France is not what used to be, and may of us while still being taxed for that, have a personal medical insurance on the side.
Italy. Healthcare is quite fine here, what’s really broken is the pension system.
Now OK, it’s not perfect, nothing is perfect, but it’s good. 🙂
“Italy ranks among the World Health Organization’s top 10 countries for quality health services (by contrast, the U.S. only holds 37th place, despite being the highest spender). However, although medical facilities are considered to be adequate for any emergencies, some public hospitals are reportedly overcrowded and under-funded.”
free healthcare in the EU? I pay around 500-600 Euro a month through my income tax and another 200-300 a month directly, plus a deductable of 400 Euro a year before I get anything “free” at all.
And then a lot of procedures and medication aren’t even covered even if you’ve already gone through your deductable so you still have to pay for them out of hand.
All in all I spend (including those taxes) around 12000 Euro a month on healthcare, and that’s before I have anything more than some blood pressure pills and painkillers, no hospital visits or dentists.
“12000 Euro a month on healthcare”: There must be a typo here. That would be a third of my **annual** gross salary (in France as engineer in research lab). Income tax is not only for healthcare, it pays for schools, security, state administration, justice, and many other stuff.
yes, should be 1200
If you didn’t have a job you would still benefit from healthcare. Moreover, most importantly, taxes do not pay healthcare only but a LOT of other stuff.
Do you think countries without coverage, like the US for instance, are tax free? No, they aren’t. They pay taxes and yet do not get sufficient healthcare access which is their RIGHT.
Income taxes in the EU are adequate to the services provided (of which healthcare is just one out of many) but these services are provided freely to all citizens, not just those who have income. If you pay 1200/month just for taxes you must be very rich. I am glad for you. 🙂
In Italy for instance the real deal breaker are not taxes but retirement contributions, which are much higher than income taxes and do not provide any benefit at all (the Italian pension system is a Ponzi scheme so people around 30 like me will never ever see any retirement money). But I digress.
that’s just the part of my taxes that is earmarked as healthcare premiums…
Don’t try to twist words, it doesn’t become you.
As far as I understand it in most EU countries (in Schengen, anyway) it’s sort of a hybrid of public and private healthcare – you need to have insurance, but it’s not the same as ‘private’ health insurance in a country with public-funded health (such as the UK). The thing about the UK though is that while you’re not paying health insurance labelled as such, you basically are paying it with your NI contributions (and get very little back anyway). Give me private insurance any day.
Here private insurance is completely optional. Of course you can buy insurance for basically anything, including paintings or clothes, or whatever.
But for healthcare, public money works quite well. In most countries you would have to pay taxes anyways, it’s not that countries such as the USA are tax-free. So better to use the money for something useful rather than wasting it.
(I’m picking the US in this comment as an example, not implying that this holds only for the US)
> get very little back anyway
Depends on how you evaluate it. If I need a “basic” visit to the doctor in the EU I just go there, ask him for advice, and walk away. He is a state employee so why should I pay? In my country specifically there are a bit of problems with waiting times for more specialized visits at the hospital. But that has nothing to do with being our right as citizens. It’s my country only. Several other EU countries with identical policies do not have this problem.
If I need X-ray to a hand because it might be broken, for instance, I’d go to the ER, get it done, pay something like €30/40 if I am wrong (i.e. the hand was actually OK and I just needed rest) and pay nothing if I am right (you do not pay if you require a service that you couldn’t do on your own). Without appropriate health coverage one could pay around $200 in the USA just for the X-ray.
> give me private insurance any day
You think like that probably because you can afford it. 13.4% of American adults are uninsured. This means that 1 out of 10 adults in the US cannot get access to proper healthcare which is their RIGHT as any other citizen.
Interesting to note that almost exactly half of the respondents have been professionally coding for less than 5 years. Robert Martin (“Uncle Bob”) made the statement to that effect within the past couple years, but I assumed it was hyperbole. Now I am not so sure.
I am sure that the youthfulness of our profession has a profound impact on it. Understanding what this trend means, and when it will end (for it certainly will end) I think is of utmost importance for those who want to stay relevant in the industry for the next 20 or more years.
I think that’s more to do with unbalanced response ratios than with actual balance of people in the field.
People with more experience tend to be less interested in “surveys” and stuff like that, just want to get the job done and not be bothered with more paperwork.
self-taught 30 years ago. still learning a ton every month. whatever it’s called. decades have flavors.
“decades have flavors” indeed they do, this decade tastes of the ghost of yesterdays gabbage, carrion and ashes! 🙂
Are you saying it is all going to hell in a hand basket?
Wars, refugees, idiots in power, brexit . . . not quite “hell in a hand-basket” but lots of things definitely taking a few steps in the wrong direction imho
What we’re experiencing in the current age is essentially the 1930s all over again: radical attempts at change brought about by financial collapse and mass refugee movements from a cataclysmic series of conflicts. I’m pretty sure the end is going to be similar to what it was then, too.
“I’m pretty sure the end is going to be similar to what it was then”
And what about the beggining?
Should we make a better beggining out of this end?! 😉
Good developers do indeed keep learning, every day of their careers. I met a guy who had graduated from a software development program 2008-ish and never learned another new tech beyond what he was taught in school. He was creating web-apps without even knowing what javascript is; every click a post-back. Sadly, he’s not the only one in that boat.
However, 30 years ago there were few if any “software programs” being offered. It was a lot easier to become a self taught programmer in the Wild West days of the industry, when standards were just being developed by the pioneers.
Today, those standards and best practices have matured. Developers need to be familiar with an ever growing technology stack in order to design and implement even a relatively simple application. And while it’s easier than ever to access learning resources, there’s also a greater than ever complexity to how these technologies must interact.
I would argue that being a self taught developer (in the sense of having zero education in the field) is more difficult today than it was 30 years ago. I understand why some other engineering or science related fields have a lot of overlap, however, as most of these university programs teach at least some software basics these days.
Free food is one of those anti-patterns IMO. People bond far more when having to organize lunch and hang out for an hour than when they get free food and are done in 20 minutes. I say this as someone that worked at free food places for 6 years. At first I thought free food was great but then I realized walking to the company cafeteria, eating, then going back to my desk didn’t go as far to bring me together with my coworkers as “who’s going to lunch? Who’s driving? Talking while driving 5-10 mins, talking while waiting 5-10 mins for seat, ordering, talking while waiting for order to arrive, eating, talking while driving back”
Maybe being able to expense lunch would satisfy both?
I’ve worked somewhere with subsidised meals, and we’d all organise going to the canteen and go throug hthe same ritual you describe. Maybe it’s finding a place with free food that everyone wants?
Really? You drove from your office to the company cafeteria for 5 to 10 minutes. You ordered from a menu an had time to to discuss things while waiting for your order?
My experience was people organize to go to the cafeteria. It takes 3-5 minutes to walk downstairs or to the next building. We separate to get our food because there are multiple food stations depending on what each person wants (salad station, pizza station, burger station, etc..). Then we’d all sit at a table together and eat. In 15 minutes we’d be done and then it was back to our desks. The organizing which cars to take and who’s driving. The discussion in the car. The discussion while waiting for seats. The discussion while waiting for orders to arrive. The discussion while driving back all gone. That’s like 30 to 40 minutes of time together gone.
Again it’s down to the place, I guess. Yes we’d drive there, it was a large campus we worked at. But it was a really small canteen with only one line. Then after we ate, we’d sit and chat until Wed had our hour for lunch. Yeah sometimes one of us would walk back early (or more likely not go) but it wasn’t often.
I do know what you mean though, other places I’ve worked at had a canteen like yours, and I got tired of it quickly.
Why would you expect a Web Programmer do have a CS degree? It is not impossible for them to do it but it is very much like asking Stephen Hawking to teach high school math.
“when I end up doing for example a front-end job, it’s fairly irrelevant whether I know about the things you mention”
It actually IS relevant. Probably you actually know about them due to experience, but here’s just a few examples:
1. If you don’t know about algorithms or complexity theory, you are probably going to write inefficient code in JS: maybe choosing the wrong sorting strategy for some list, maybe using data structures that require O(n) lookup rather than O(1).
2. If you don’t know about computability and formal languages, you may be tempted to “parse” HTML using regular expressions, forgetting (or ignoring) that HTML is not a regular language (level 3, according to the Chomsky classification) but it is context-free (level 2).
3. If you don’t have a formal preparation on database design, you might produce a relational structure which is not normalized, showing redundancy, inconsistencies or functional dependencies. You might also forget to place the correct indices (or not fully know how indices work). You could get a “intuitive” idea of what a transaction is but not how it works.
Point 1 could lead to slow code. Point 2 could lead to fragile and/or broken code or worst, insecure code if the HTML is user input that needs sanitization. The pumping lemma basically guarantees there is a way to break an improper “parsing” of HTML done with regular expressions.
Point 3 might be mostly relevant to backend devs, but databases are currently used also in the browser so they become also a frontend problem.
Does it mean you must have a CS degree? No it doesn’t. Can you do great work by self-studying and experience? Heck yeah! All the positive skills that you have mentioned above are more design-oriented and they are great to have.
But theory and scientific background should not be underestimated. Some people (again, not talking about you!) think that knowing how to program or a little bit of databases is all you need in life so they start developing without the proper background. It’s not exactly like that.
My algorithms professor at the University of Venice had a very neat quote on the first slide deck of the course precisely for those people:
“He who loves practice without theory is like the sailor who boards ship without a rudder and compass and never knows where he may cast.
Practice must always be founded on sound theory, […] and without this nothing can be done well.
— Leonardo da Vinci”
You can get this background on your own, it’s just way harder. Not impossible though!
The DevOps stats are apparent to me, and it’s not about choice for new grads. DevOps isn’t taught in school – it has to be passed by transmission. That means you need to work in a house that has DevOps and you need a mentor or you’re self taught which is really pretty hard for a discipline focused on enterprise scale and cloud computing. It’s part of the diversity issue in DevOps too, clearly, where only 2-4% are women and even fewer are people of color. Few of the DevOps engineers I’ve met have computer science degrees however and it’s a liability for the whole stack that the specialty is a clique without strong CS chops. If there’s anyplace you need to understand how the machines work, it’s in DevOps, but most of the engineers I know drifted into it from IT certs and a few college coding classes. This is why infrastructure projects are expensive and risky. Hopefully that will change, but there’s a lot of resistance to DevOps from existing IT/SysAdmin culture so raising the bar for code quality and CS education is further down the road.
So I graduated in 2013, and started my career as an ASP.NET Developer. Back then, there weren’t many postings that required knowing ASP.NET MVC and building WPF with MVVM design pattern. Fast forward to today and many ASP.NET positions require you to know these if you are looking for a .NET position. I sort of regret not keeping up to speed on these things and I’m sort of late to the game, self teaching myself these technologies. Advice: Keep learning. Stay at a company that adopts the latest technologies and standards.