It seems like more and more often, people are writing about “the demise” of software development. For example, Wired recently published an article titled The End of Code, in which the author proposes in the near future coding will change from being a massively in-demand craft to a niche activity done by a small group of specialized people.
Is this actually true? Probably not. And even if it is true, software engineers (people who code) will likely have a major advantage over those who don’t have programming skill.
Let’s walk through why this is the case and why the end of code really isn’t coming as soon as people would lead you to believe.
Let’s start with some facts.
- The wheel was invented in approximately 3000 BC
- The Industrial Revolution happened between 1760-1840 (almost 5,000 years later).
- The Wright Brothers made their first flight in 1903 (60 years later)
- Soviets put a satellite in space in 1957 (50 years later).
- Neil Armstrong lands on the moon in 1969 (another 12 years later)
And to bring it home, the Apollo Guidance Computer could process 41.6 instructions/second. An iPhone 6 processes about 3.36 billion instructions/second.
This means that the technology in your pocket has the computing power to guide 120 million Apollo rockets to the moon at the same time in 1969.
Computers and technology are evolving at an increasingly rapid pace and are becoming only more and more ingrained within our culture. In 2016, the only way to be a power-user of the tools is to speak technology’s language: code. And this won’t likely change in the near future.
To illustrate why, we’ll focus on two key areas:
First, we’ll play mythbusters and talk about why the current arguments for why coding will be irrelevant in the near future are silly.
Second, we’ll cover the state of the industry in 2016, and we’ll outline the various types of places that employ software engineers. (they are more prevalent than you may realize). At the end of this post, hopefully you’ll realize why we’re currently living through the golden age of programming.
Let’s start busting some common programming myths.
Myth #1: The End Of Code Is Coming Because Machine Learning Will Make Programming Irrelevant.
Machine Learning is really interesting. And Artificial Intelligence is fascinating too. But these concepts exist in parallel to programming. Not as a replacement for it.
Machine Learning and Artificial Intelligence allow technology to “learn” the optimal way to do things. A concrete example of using artificial intelligence to solve a problem is this:
Given the rules of a maze (you can take some paths and not others), what is one of the most optimal ways to go through the path?
This might sound like a totally pointless endeavor. For example, earlier this year engineers at Google DeepMind built bots that are capable of navigating mazes, much like the mazes that existed in the 90’s video game Doom, simply by looking at the screen.
Why would developers spend time optimizing a way to automatically play a video-game like Doom? Well, the ability to solve these types of problems are actually really interesting to companies like Google.
Think about how Google’s search results give you insights. There are over 1 billion websites on the Internet. Google allows us to search the results to find the most relevant sites using a variety of machine learning, backlink information, and date on how long visitors stay on the page (the free Google Analytics service gives them information about how long visitors stay on each page).
Google doesn’t make employees visit each site on the Internet to rate it for relevance. Instead, they build machine learning algorithms to put systems in place to determine the most relevant entries to show.
In 2015, it was estimated that there were over 30,000 developers at Google. While Artificial Intelligence and Machine Learning can help guide software to making smarter decisions, concrete work is needed to make this happen. This includes things like building the Google Chrome Web Browser, Gmail client, Google Drive and all the various aspects of Google products. Software developers build these features, not Artificial Intelligence. So despite being a pioneer in the Machine Learning space, Google doesn’t have a shortage of developers. Instead, they’ve hired a ton of developers.
Machine learning can’t solve problems like:
- Making Google Docs allow text to be bold or italic.
- Adding features to Google’s self-serve ad platform, which generates around $70 billion dollars a year.
Instead, these types of problems rely on software engineers, who can program specific features.
Myth #2: The End Of Code Is Coming Because It’s Easier Than Ever to Make a Website.
In 2016, it is easier than ever to build a website. This is true. And you don’t even need to write code to do it. People use sites like Wix and SquareSpace to build websites without code. And these sites can be remarkably polished as well.
In order to build a simple webpage, you don’t need to learn to code. Nor should you. You should simply use the right tool for the job. There are many scenarios in which it’s a better strategy to use a landing page builder or website generators that to code something from scratch.
But things like SquareSpace, Wix and landing page generators fall apart when you need to add custom functionality that can’t be accomplished with a cookie cutter solution.
For example, you may want to allow users to enter their email in a form, then register the user account so that they can log back in later. Out-of-the-box solutions usually will provide a quick up-and-running setup, but they don’t allow you to fully control the environment.
Software Developers spend their time solving much more complex problems. Developers use cutting edge technologies to approach problems in a drastically different way.
Sometimes, there are cases where technologies make writing simple code irrelevant. But to maintain 100% control of the technology, you need to be able to access and understand code at some level. The programming languages of today might be irrelevant in the future. But if this happens, they will be replaced by different programming languages…not a WYSIWYG editor.
Myth #3: The End Of Code Is Coming Because Developers are Constantly Reinventing the Same App Solving the Exact Same Problems.
There is a massive movement in the software development world to stop re-inventing solutions to the same problem. The open source movement is really remarkable. The entire culture is one centered around sharing reusable code.
There is nothing preventing a company from using the open source technology built by a competitor to build a competitive product. A perfect example of this is Ruby on Rails itself. Rails was built by DHH to help build Basecamp, a web-based product management tool for teams of designers, developers and product managers. And it’s been used by many developers to build a variety of different types of web applications.
But there are at least 15 web-based product management tools built on top of rails. This means there are at least 15 alternatives to Basecamp that are leveraging the Rails framework.
But you know what? Basecamp is so, so good…that people will pay for it. And the people who will set up their own server to host RedMine are probably outside of Basecamp’s customer demographic anyway.
Rather than hoarding solutions to problems and re-inventing them constantly, developers maintain a high level of openness for the community and give back to make the world a better place. This is often true even when it could potentially give a competitor a slight advantage.
Myth #4: The End Of Code Is Coming Because Someone told me they could build a social network in only a few weeks, by himself. There must be a lot of developers at companies like Facebook slacking off.
On the surface, it may seem easy to build applications that seem like other applications. But at real-world companies, the code and various systems can quickly become more and more complex.
In programming, there is a concept known as the Law of Leaky Abstractions. These are systems that do a lot of the work but hide a certain level of detail. They can make your life easier as a developer, but they quickly require you to understand how everything works under the hood.
For products that support millions of users, there needs to be a lot of abstractions (or basically sub-problems) that can be managed by separate teams. To support massive scale, companies like Google, Facebook and SnapChat need to be sufficiently complex in order to support the massive amount of scale (and the scale of people to be working on the project).
Large applications at scale not only have more users to manage, but also have hidden aspects people generally don’t think about. If you wanted to build an application like Facebook, you’d have to think about questions like:
- How robust would your spam reporting be?
- How detailed would your Facebook page analytics be?
- How deep would you allow people to target ads based on personal demographics?
Complex applications have a lot of components you probably don’t think about.
In the real world, systems are complex.
Myth #5: The End Of Code Is Coming Because Programming is Monotonous and Tedious and People Don’t Want to do it.
Some people argue that code needs to end because people don’t want to do it. This simply isn’t the case.
Programming is challenging. Programmers need to have really solid problem solving abilities and know how to work through complex challenges. But most programmers also work on a side-project for fun (usually on the nights and weekends) in order to have full control and build something they love.
It might sound strange that people who get paid to write code in an office all day like to go home and write more code during nights and weekends. But it happens.
Plenty of people want to have the support of a well-paying job and the ability to build a new innovative product on their own. But most wouldn’t have the drive to do it if thought programming was tedious. Plenty of people really do enjoy programming and find the process itself incredibly rewarding.
There Are Software Developers In More Places Than You Realize.
It’s easy to point to metrics that indicate that the field of programming is only growing. But rather than talking about the Computer Science deficit, let’s investigate the full breadth of industries that will always need programmers.
Consumer Technology Companies
When you think of where developers work, the first types of companies that come to mind are probably consumer technology companies like Facebook, SnapChat, Uber and AirBnB.
Consumer tech companies are companies that build software products that people use in everyday life.
These types of companies absolutely need software developers. But they certainly are not the only types of companies that are in need.
Business Technology Companies
An even bigger industry than consumer tech is business tech. Business are generally willing to pay more for software services that solve their problems than consumers, which means there a lot of companies solving business pain points that need software engineers.
Companies like Salesforce, 37 Signals, and MailChimp are all examples of software startups that solve real business problems. Most people don’t think about the incredible amount of money that businesses are willing to pay software engineers to solve their wide range of problems.
Companies are spending billions of dollars to communicate with customers through advertising platforms. There are big companies like Facebook and Google that control much of the field. But there are also countless different banner ad exchanges, and other types of companies specifically in the AdTech space.
Optimizing click-through rates and advertisements might not be the coolest job in the world, but there are an abundance of jobs in the AdTech space.
Companies like Apple, PayPal, LevelUp, Square, Toast, and even now Intuit are operating in the payments space. Visa and MasterCard’s monopoly on payments is over, and it’s a really exciting time to be play in this space.
With the influx of innovative new players, the demand for developers is growing more now than ever.
The biggest websites, like Huffington Post and Upworthy, are built on top of custom tech stacks that allow them to publish content in a way that works for them. These stacks support the ability to allow various publishers to log into their sites and publish content. They need developers to build and grow these features.
With news and journalism moving more and more to the Internet, software developers are needed more than ever to smooth the transition.
Software companies are also disrupting television, too. Companies like YouTube, Netflix, Twitch.tv are all media platforms that require a lot of developers to support the incredible scale of users and video content.
Video Game Companies
Video Game companies need a lot of developers to build a single video game. Getting jobs at most video game companies is generally fairly difficult, as there is a lot of competition to get in. And once you get a job the company generally expects developers to work more than other industries.
Regardless of the game, be it Angry Birds or a console game built by a massive company like Blizzard, software engineers will always be in demand in the video game industry.
Universities and Academia
Universities need software developers too. Why? Software developers work at universities in many different capacities.
Software developers build libraries of digital knowledge. Because digital assets are replacing physical books at schools across the world, the library departments employ software developers to keep the digital footprint of the library up and running.
Research departments need developers too. Places like Harvard University have research laboratories. They perform complex things, like genetic sequencing and other types of experiments. The genes that build up our body contain a lot of data. Software developers are responsible for building the systems that allow people to transfer and manage all that data.
Also, universities operate at such a large scale there are so many different types of opportunities. Take a look at the open programming positions at Harvard. The opportunities span all sorts of initiatives the school is running that require programming experience (that list contains several jobs that are tangential to programming too, but it’s worth digging in and seeing the type of work that’s available).
Physical goods often have a software component, and developers need to write the software needed for them to work. Devices that need software include things like FitBit, Nest, and many many more.
Plenty of Other Industries Need Developers Too
This is by no means a comprehensive list. There are software engineers at companies like Ford: The car company. And if you look into it, they have a ton of software developer positions on their site. There are plenty of massive industries that most people don’t even know about that need software developers. Industries like insurance, mortgages, new cars, mortgage refinancing are some examples. Government regulation industries, the military, and even Fox News hires computer programmers.
People say stuff like “software is eating the world” because it’s true. In 2016, most industries leverage technology for their advantage. These companies need people who can speak the language of computers: code.
The world’s increasing reliance on technology to get things done is making software development more important than ever. And since technology keeps improving, it has never been a better time to be a developer.
Think about it. In 2016, coding environments look like this:
In the 1960’s, developers wrote computer programs but punching out holes in notecard. Seriously. It was that bad. Here’s an example of a computer programming environment from the 1960s.
Coding isn’t dead. And it isn’t dying. We’re currently living through the golden age of coding.
So please don’t listen to the detractors. The end of code isn’t really coming.
It has never has been more enjoyable, rewarding, and economically viable to be a programmer.