Huzzah! You just got hired as a junior front-end developer in a company to create websites!
Congratulations Reader! You got your fancy nice computer and chair, met the team, got onboarded, and were given your first ticket:
Add a button on a webpage
"Oof, how do I do that again? What's a tag? Where's the repo again? What's a variable?"
It takes you three days of googling, but you manage it! Let's go 💪
You just completed one small task of what turns out to be a huge and complicated machine of millions of moving parts and processes.
We call this machine "the software development process".
To make sense of this giant machine, very smart people in the past figured out you could divide this process into a series of steps or phases. These phases are part of what's called "the software development cycle" (SDLC)
It's a simple series of concepts and is separated into x amount of steps. The x number will depend on which author you choose to read (although the main concept doesn't change). For this explanation, let's say there are 6 steps:
You talk to the client and plan what you want to make or develop
You analyze how hard it would be to create what the client wants, what resources you'll need, and identify all requirements based on said needs of the client.
You sit down and design the solution. This means working together with designers and architects to get an idea of how you're going to build it.
You develop and build it! This is a very long and messy step. You'll run into loads of issues and it usually isn't pretty.
You finish development and QA takes over as they test the developed code to make sure things work as expected. Once everything is okay, you integrate it.
Maintenance starts. This means you support and fix any issues that might pop up as the software runs and is used by its users.
Every step and phase has its roles and processes to follow. There's a lot of simplification going on here as well, as most of the time, the phases can have a lot of back and forth, as well as overlap, and can happen at the same time! So, understand this involves a lot of nuance in practice.
Despite the nuance, it still means that developing software is a team effort. In a big project, you might need project managers, functional analysts, client and stakeholder participation, architects and designers who consider scalability and UX/UI; developers for backend, frontend, and DevOps; quality assurance teams; and lots and lots of money and time.
If you're a freelancer or a senior dev, you might need to put on different hats and help with many phases of the development cycle.
But if you're a junior dev, you'll only have to focus on 2 or 3 phases in the beginning
You're still figuring stuff out. You're understanding how to develop software based on somebody's interpretation of the client's needs. Things are still really hard! So don't worry (too much) about planning, analyzing, or designing the software. As you gain experience and increase the impact you have, you'll slowly learn the different skills these phases require.
But for now as a Junior?
Just focus on the Software Development Croissant 🥐
Focus on learning how to implement (with best practices), work with QA teams, and maintainability of projects.
Another way of looking at these phases is they're the steps that will help you practice and improve your hard skills. You know, the program-y types of skills we all love to work on. How to implement code in such a way that it's easy to read, easy to test, easy to maintain, easy to scale, and easy to add upon.
Once you more or less get a good handle on it, it becomes easier to consider the other aspects and skills needed in the other phases.
Plus croissants are delicious and dividing the wheel in 3 makes it look like a croissant!