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 andSourceForge 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