Right now, it can feel like everyone is talking about becoming a software developer. Recruiters are looking to fill a huge number of new developer positions, and the role regularly features at the top of Glassdoor’s “Best Jobs” lists, with sky-high job satisfaction and even higher salaries. If you’re planning your next career step, it’s a great time to consider software development.
While there are certainly a defined set of skills you’ll need to master if you’re to succeed in a software development role, there’s more to it than just learning the tricks of the trade; you need to learn to think like a software developer. Here’s Udacity Senior Staff Software Engineer Art Gillespie with a bit of advice for aspiring developers:
“It’s incredibly important that new developers not only spend time developing their technical craft, but that they understand the processes of building software. Understanding the principles of the software development process, designs sprints, and even software development process management tools, are a prerequisite for being an effective developer.”
One of the core concepts Art describes is the Software Development Life Cycle (SDLC), which is what we’re going to explore in this article. The SDLC sets out the process that developers use to turn a great software concept into an exceptional finished product. It concentrates the efforts of large development teams, and helps developers meet deadlines and stay on budget.
So let’s explore what the different phases involve:
Great software design begins with developers understanding and documenting the specifications for a piece of software. This phase involves:
- Conducting interviews and surveys to formally gather feedback from stakeholders. This could include an external client, or the different parts of the developers’ own company, such as business development, sales, and marketing.
- Creating lists of actions (“use cases”) to show how a user will interact with a product to perform a particular function. Sometimes, prototypes will be built to help demonstrate how they will work.
- Discussing how feasible different ideas are, how long the project will take, and how much it will cost.
Requirements will be captured in a document called the software requirement specification (SRS). This will become a key point of reference throughout the rest of the process.
Once requirements for the software are fixed, the next step is to create the system architecture—the overall design for how the software will be put together. This is led by software architects and lead developers, who are responsible for creating Unified Modeling Language (UML) diagrams. This is a standardized approach to visually modeling how the software will function.Think of this as roughly equivalent to the architectural plans that a builder uses to construct a house.
During this process, every function of a product will be considered, from the screen a user will see after they click a particular button, to how the software could later be upgraded and improved.
The coding phase (also called the “implementation” or “development” phase) involves building the actual product. Code is written and then tested on a rolling basis to ensure different components work together.
Coding is generally the most time-consuming phase of the SDLC. Developers need to think about many things, including:
- Ensuring code meets the different stakeholders’ requirements, often by demonstrating functions in action.
- Creating the “back-end” data functions of the software, and the “front-end” that the user will see.
- Making sure the product is meeting the requirements of the SRS.
While a product is tested throughout the process, it is important to evaluate it in a dedicated testing environment. During the testing phase, issues are identified through automated tests. Program testers may also be used, who will effectively try to break the product to identify problems. This phase will include testing functionality, how well different systems have been integrated, and how these systems are operating.
Importantly, all project stakeholders are typically required to sign-off on the finished software, before the excitement of product deployment gets underway.
The deployment phase is when the software is released to end users. The complexity of what has been built will determine exactly how this is done:
- If a project is simple and straightforward, it might be possible to do this in a single, straightforward release to customers.
- If a product is more complex, developers will stagger the release into stages—rolling out software to a limited number of users, and treating their experience of using it as part of the product testing. This is referred to as “beta testing”. Nothing beats feedback from users for helping refine the way software functions! A staggered process also means that additional functions can be added over time, and released only when they are ready.
Developers treat the maintenance phase seriously because it is the time when a product is refined and enhanced, in response to how it performs in the real-world. The reputations of developers are built on their ability to create software that is robust and functions as it should. This comes from maintaining a product, perhaps for months or even years after deployment.
And that’s the SDLC! By following its basic structure, developers focus on the important things, at the right time, in the right order. If you’re planning to further explore a career as a software developer, Udacity offers a free Software Development Process program, providing a great in-depth exploration of many of the concepts we’ve talked about. And you should also look at our full portfolio of Software Engineering programs to learn more about the different skills you will need to become a software developer.