Software Engineering as a career is a juggernaut. In 2011, it was described as the best job in America by CNN
, U.S. News and World Report
and others. Why? High pay, good work environment and a whole lot of hiring, mostly. Sounds pretty good. So where are all these software engineers going? What will we be doing? And how do we get there? That's what we'll talk about here, in the Dice Software Engineering Talent Community. Let's start with a definition and some current trends. First, a definition: In the U.S., "software engineer" is the common name for anyone whose primary responsibility is the creation and maintenance of computer software. This includes jobs that would more formally be known as developer, computer scientist, programmer or even software architect. Software is ubiquitous, running everything from cars to the latest websites, to phones and the apps that run on those phones. Because of that ubiquity, software engineers are everywhere, with a lot of different focuses. Some people spend entire careers building Web-based software, while others work on embedded devices and still others write software to further scientific pursuits. In the end, we are all software engineers. And let's face it: software is EVERYWHERE.
Next, let's talk trends. What's going on in software engineering? What's the current "next big thing?"
The Rise of Specialization
It used to be that a software engineer was a software engineer. As the sheer amount of software continues to grow, the number of relevant technologies increases just as quickly. It's no longer possible to be a generalist across all types of software so, more and more, software engineers are specializing in specific fields. It's not good enough to specialize in one technology—for example, to be a Ruby on Rails developer—since any one technology will be outdated in a few years. However, it's certainly possible to specialize in a particular type of software like, for example, Web software. Major areas of specialization include Web software, mobile software, embedded software (aka devices), infrastructure software, and enterprise software. More devices, more ways to deliver software, more software overall—we're all going to need to specialize.
The Maker Movement
Engineering is leaving the confines of the workplace and coming to the forefront as a hobby and consumer pastime. Since the 1990s, home computers have become common and ever more powerful. Add the availability of the Internet, and all of a sudden people around the world can do professional quality software engineering from their homes. Meanwhile, night-and-weekend engineering is driving the creation of software projects done not for the good of an employer, but because they're fun. As a bonus, this maker movement is fueling the rise of open source software (again). After all, what fun is making something cool if you can't share it? Open source aggregation points like GitHub
help people share their work and let others take advantage of the usefulness—and coolness—of it.
Cloud computing has dramatically decreased the cost of delivering software. Instead of needing hardware, data center space, systems administrators and a lot of up-front costs, software can be published to cloud providers with a few clicks and a relatively low per-hour cost. Success is no longer a problem, either: Build your software well and additional cloud resources will help it scale up and down as needed. Small companies and even individual software engineers can provide the same level of service in the cloud as big enterprises.
This trend often goes under the name "agile software," but we'll save that for another post (tune in later!). The heart of this trend is a focus on getting software to customers, or to people representing customers, as quickly as possible. This trend is built on the idea that customers are the best ones to decide if they're getting what they want, and that the right way to figure that out is to show them the software early and often. Using the software itself as a means of communication and basis for discussion helps make sure that as little as possible is lost between the customer's expression of need and what actually gets built. That's a lot to take in. But there's more coming. Where are we going from here? What do we need to do to be ready for it? What does the future hold? Oh, and what's this "agile" thing? Come back soon. I'll have my predictions for the future of software engineering, and I'll be interested to see what ya'll think!