The impact of the digital revolution this past decade has made software development a mainstream news topic. After all, every software app you’ve used on your phone, tablet, and computer was made by software developers, as was every website, online service, and Internet-connected gadget.
Because of my software development experience and role at the college, I get plenty of questions from friends, family, neighbors, strangers, and potential students about it. Most want to know what it’s like to work as a software developer, or what it takes to become a software developer today. If you’ve also had these questions, then this post is for you.
Some things never change
I’ve been a software developer for over 30 years. And while a lot has changed in how we approach software development since then, much has remained the same. For example, software developers have always been investigative problem solvers, like Nancy Drew. That is, we want to understand both the nature of the problem, and why the eventual solution we develop works. Additionally, we:
- Break problems into smaller tasks that are easier to solve. This allows us to focus on a smaller set of logic.
- Spend a large amount of time researching the problem, often acquiring new skills along the way (e.g., math, data science, logic patterns).
- Build our software development abilities through repeated practice solving different problems.
What has largely changed over the past three decades in the software development world is how we do it.
It is now much, much easier
In the early 1990s, printed documentation and books were the primary resources used for research, and you’d find shelves packed with them in any software development department. Today, however, we can research the information we need much faster by leveraging Internet resources (e.g., Google searches, StackOverflow, vendor websites), machine learning (e.g., GitHub Copilot), as well as the experience of other software developers via online forums.
Because of this, new software developers can now start solving problems before mastering a programming language. They only need to familiarize themselves with the basics of a programming language and core software development principles, and then learn the rest along the way.
The process and tools we use for software development have also improved dramatically over the past three decades. Most software development projects in the early 1990s were carefully planned and rigidly executed. This was called waterfall development. Today, however, most software development projects use a faster agile development approach that allows for changes to occur continuously throughout the software development process. The most common agile development approaches used today are called Scrum and Kanban.
By breaking down problems into increments that are worked on by different developers over a short period of time (called a sprint), agile development naturally fits how developers approach problems. And after completing a few dozen sprints successfully, new developers often lose any imposter syndrome they had earlier.
To support agile development, a whole set of new development and collaboration tools have appeared over the past few decades that make the development process easier than ever before. Software development code editors (e.g., Visual Studio Code) are incredibly advanced compared to earlier offerings, and code repositories (e.g., GitHub) have become the central place to store software code, as well as view, discuss, and manage software development projects. Moreover, software developers can easily push new versions of the software they create to production servers or the cloud multiple times a day for testing and running without having to rely on other teams or departments. This process is often called DevOps.
There’s plenty of room for advancement
As a new (or junior) software developer, you’ll start by working on sprints. Over time, you’ll gain more insights into the larger design and structure of the overall software you’re developing, as well as learn good software design (or software engineering) principles. At this point, you’ll be considered an intermediate developer. Eventually, you’ll build a senior developer skillset that also allows you to mentor and manage a team of junior and intermediate developers. And after you further expand your understanding of how software projects work on both a macro and micro level, you could design entire software development strategies as a software architect.