I have been a developer for over 20 years. Over the course of those 20+ years, I have often heard statements along the lines of "there's never been a better time to be a developer" or "now is the best time to be a [technology name here] developer." But, let's be honest, this wasn't always accurate. Or, perhaps like the article touting that "there's never been a better time to be a Blackberry developer" from 2009, it was accurate for all the wrong reasons (as in, things deteriorated relatively quickly thereafter).
How much irony can you fit into one article subhead?
So, if we were to ask ourselves honestly, is today the best time to be a developer? My personal answer is no, but with a caveat that we are doing a lot of things well and many of the things that we don't do well, we are actively trying to improve. Let me explain.
Note: I am aware that, for the most part, the data and information presented in portions of this article is US-centric. This is where my own experience is and where I feel I am qualified to honestly discuss the developer experience and workplace.
Ok. Let's get the bad news out of the way first...and unfortunately, there is quite a bit of it facing today's developers.
The past couple years have seen the reputations of some of the biggest (and, previously, most respected) names in the industry fall from grace. Whether it is sexism and misogyny at Uber, to fake news and exposing of personal information at Facebook, to the failure of Twitter to prevent rampant abuse and misuse of their service, to sexism (and sexist memos) at Google. For instance, here's a timeline of significant scandals from just last year. Even today, as I post this, Google employees are walking out over how the company handles sexual harassment.
I would go on, but it is depressing. Suffice it to say, the industry's once (perhaps undeservedly) glowing reputation is now deeply tarnished. The industry-wide problem is largely an ethical one rather than a technical one. It obviously impacts the businesses and industry, but it also directly involves developers. Developers in today's tech industry are often becoming an important line of defense - they are forced to look past "Can we build it?" and also answer "Should we build it, even if we can?" New technologies like big data, artificial intelligence and machine learning only further complicate this conundrum and place developers at the heart of projects that have the potential for future scandal.
Despite these scandals, the industry keeps growing.
The tech industry has a well-earned, bad reputation when it comes to diversity. While the diversity issue in tech is broader than just developers, it definitely applies.
On a positive note, data cited in this Wired article on the topic shows that the percentage of non-whites seeking computer science degrees as a share of the whole population has increased significantly.
Blacks and hispanics are still underrepresented in relation to their share of the US population, but the situation has improved. However, the data also shows that most of the increased representation has been taken by men:
And the irony is, today, more women than men earn college degrees, even as the number of women studying computer science is falling.
Blanca Myers, Women and Minorities in Tech, By the Numbers
This is reinforced by other research that shows that "from 2004 to 2014, the share of bachelor’s degrees earned by women decreased in all seven [Science and Engineering] disciplines." A degree is often the first step towards a career as a developer (though there are other non-degree paths). Thus a recent study by Girls Who Code and Accenture describes women's declining share of developers in the workforce as well:
Research by Accenture and Girls Who Code shows that women’s share of the U.S. computing workforce is declining. On current trends, women will hold only one in five computing jobs in the U.S. by 2025.
And anyone who follows social media or who has simply talked to a female colleague knows that women frequently face a hostile work and professional environment - the stories of harassment or just plain inappropriateness at conferences or in the workplace are seemingly endless and depressing. I can't honestly say if the situation is improving, but I do know that more and more women seem to be bravely sharing and often confronting this issue directly, and I think that has and will continue to have an impact.
I'll start this section by saying that I am fully aware of how difficult it can be to judge the quality of candidates for developer jobs. And when your business depends on code, the quality of your software engineers is especially critical. Some qualifications such as a computer science degree or relevant experience are a good indicator, but often don't get at some of the specific skills companies need. As an industry, we have also tried certifications and so far found them lacking in usefulness - perhaps because the nature of our work is constantly changing.
Still, the solution that we've largely ended up with has its flaws.
Sweet - but still be ready to pass an obscure code test for Google that has little to nothing to do with your actual work.— Raymond Camden (@raymondcamden ) August 23, 2018
(OK OK Ray shut up about the damn test you failed...) https://t.co/kHUsDdb29C
I was rejected for a job by @TwitterEng years ago, even tho I knew several people on the team who liked me & wanted me to join. I was later told by HR that one of the interviewers said I "didn't know JS" very well. That was part of the motivation for @YDKJS. #ShareYourRejections— getify (@getify ) August 23, 2018
It is a process that emphasizes sometimes unnecessary coding knowledge in favor of traits that often, in my opinion, make a developer more successful - things like a willingness to learn, an ability to work with others and collaborate and the ability to creatively problem solve.
It also tends to favor the hiring of individuals who devote their life to code, which brings us to the final negative I want to talk about.
It may be fair to say that every type of job comes with the potential for burnout, but I also think it is fair to say that certain characteristics of being a professional developer lead to a high levels of burnout. A quick Google search produces endless posts and threads on the topic of developer or programmer burnout.
Part of this is related to the type of people we are hiring through the interview process. We are an industry that often celebrates those who live and breath code. It's a work ethic that is perfectly parodied by the "Silicon Valley" television show where the programmers literally live at work (and, no, that's not even the joke). Many tech companies even push this sort of work ethic by offering services that encourage people to stay at work and even to build social lives around work. These are for all the employees, of course, but developers frequently have the added expectation that they are supposed to go home and work on passion projects or open source to keep their resumes competitive.
This kind of work ethic puts pressure on every developer to compete on that level. When mixed with the natural demands of a job that requires continuous adaptation and learning, it can be a toxic combination.
Hopefully I haven't gotten you fully discouraged at this point in either your potential or current developer career. As you can see, the items above are generally related to the jobs and industry that developers have to work in. The good news is that when it comes to actually coding, things are really quite good. And, there are good aspects to the jobs and industry developers work in.
Let's improve our mood and take a look at these.
We live in an age of widely available and generally high-quality free and open source software for developers. It is so ubiquitous for today's developers that it can be hard to imagine that we ever debated the value and viability of open source software. And this ubiquitousness also causes us to sometimes be inured to the huge benefits.
First, let's look at some numbers. Github had 25 million public repositories as of 2017. Ruby Gems almost 150,000 modules. npm has close to 700,000 packages, making it the single largest package registry in the world. And these are just a few of the resources that host projects used by developers.
But the other important point is that the quality of the projects developers rely upon is high. In many cases, these projects are created by or, on some level, are supported by some of the biggest companies in the technology industry.
While all this tooling does make for some complex workflows and architectures, it also makes available resources that, once upon a time, were extremely costly or didn't exist. For instance, when I started in web development over 20 years ago, I recall spending hundreds of dollars (1997 dollars no less) on Dreamweaver, Flash and ColdFusion Studio...each!
Yes, once upon a time software came in shrink-wrapped boxes!
That is a huge barrier to entry for the prospective developers. I also remember, years later, searching through directories filled with commercial solutions for projects (things like shopping carts or bulletin boards for example). This made it difficult to find the right solution and, I speak from experience, the quality was no better for the cost.
Continuing on that theme (which is apparently that I am getting old), when I began my career, nearly all of the learning resources available were in the form of books. These either came in the form of manuals provided along with the expensive software or books sold by publishers, which were anywhere from $60-100 (again, in 1997 dollars).
Nowadays, learning materials come in a variety of formats: books, tutorials, videos, interactive training. Those provided by the software companies are all online and, for the most part, freely available (even for commercial software). While book publishers still publish, many have moved away from print to digital formats that are generally less expensive and even allow for shorter form formats - meaning topics that might not ever get a full book now get covered. Companies like Pluralsight, LinkedIn Learning, Udemy and others provide broad learning platforms covering a huge range of topics including programming and development.
There are honestly far too many resources for me even to list. Even for those who may not have the budget for some of these services can find sites like FreeCodeCamp or the endless free tutorials on The Practical Developer or CSS Tricks, to name a couple of my favorites.
Then of course you have a multitude of conferences (ranging in price, of course), local programming-focused meetups, or even online meetups and conferences.
I could go on, but I think you see the point.
We live in a world where some of the most powerful companies are run by developers. A world where everything from our cars to our smarthome lightbulbs require some degree of code. So it should be no surprise that demand for developers continues to increase.
According to the US Bureau of Labor Statistics occupational outlook handbook, demand for developers through 2026 is supposed to increase 24%, which is much faster than the average. For web developers, it is supposed to increase 15%, also much faster than the average.
The news is not all rosy. The outlook for computer programmers is supposed to decline 7%. Confused? So am I. I thought software developers and web developers were computer programmers, and the official definitions don't do much to disavow me of that opinion. Then again, I don't work for the government.
Solid demand usually leads to good pay and, generally, developers, both in the USA and globally, earn a good living. For example, the Stack Overflow developer survey shows developers globally earning between $40-90k a year. In just the USA, the numbers are significantly higher, ranging from $80-140k a year (the official US Bureau of Labor statistics puts the median pay for software developers at $103k but for web developers at far less, $67k, in 2017). While the global numbers are significantly below the US numbers, they are all well above the median individual income in the US, which is $31,099.
The one caveat to this is that much of the higher pay seems to be concentrated in specific geographic regions. Taking the US for instance, PayScale data shows a national average salary of $70,169, coming in well below the StackOverflow data but still far above the median individual income. However, much of the higher end of the pay range is concentrated in a few locations: San Francisco, New York and Seattle.
In looking at this issue, I tried to be fair and honest. Admittedly, there were a lot of important cons, but I am not negative or pessimistic. I am grateful to have worked as a developer for so many years and to count myself as part of the developer community. I also truly believe that we are working towards getting better in each of these areas that we currently fall short. This means that - even though today may not be the best day to be a developer - tomorrow is. And there is no better day to get started building tomorrow than today!