The Journey of Software Engineering: From Backlog to Release
In the realm of software engineering, the journey from conceptualization to deployment is a carefully orchestrated process that involves multiple stages and stakeholders. Let's delve into the intricacies of this journey, from the inception of an idea in the backlog to the triumphant release of a polished product.
1. Backlog:
It all begins with the backlog, a treasure trove of ideas, features, and enhancements waiting to be explored. Here, stakeholders collaborate to prioritize tasks based on business value, user needs, and technical feasibility.
Usually stakeholders, project managers and also tech leads, sit down to prioritise this list and have some sort of quarterly plans
2. Sprints:
With the backlog as our guide, we embark on iterative cycles known as sprints. Each sprint is a focused effort lasting a fixed duration, during which a cross-functional team works collaboratively to deliver a set of user stories or tasks.
Most companies work with Sprints, 2 weeks cycle to be able to monitor and get feedbacks from the system.
3. To-Do:
As the sprint kicks off, tasks are pulled from the backlog into the "To-Do" column, signaling the team's commitment to tackle them within the sprint timeframe.
After estimations and refinement sesisons, you have taken responsibility to make these tickets done.
4. In Development (In-Dev):
With sleeves rolled up and keyboards clacking, developers dive into the heart of the codebase, bringing concepts to life and turning requirements into tangible features. Tasks transition into the "In-Dev" column as work progresses.
Each developer on their standup will take a ticket and move it to in-DEV, that's a sign that this engineer is working on what, and if he/she needs an assist or if they are blocked or anything else that might cause a delay.
5. Ready for Review:
Once development is complete, code changes are submitted for review. This critical step ensures code quality, adherence to coding standards, and alignment with architectural principles. Reviews may involve peer code reviews or pull request approvals by fellow developers.
Code review is a practice needs to be taught, it's also comes from WOW or ways of working within the team. So the better the code review, the higher the product lifecycle.
6. Design Review:
In parallel, design elements undergo scrutiny in a dedicated design review phase. Here, designers, developers, and stakeholders collaborate to ensure that user interfaces are intuitive, visually appealing, and consistent with brand guidelines.
It's brilliant to have this step earlier in the process. It will remove tons of smaller tickets later on.
7. Ready for QA:
With code and design aligned, the spotlight shifts to quality assurance (QA). Testers meticulously verify functionality, conduct regression testing, and hunt down elusive bugs to ensure a robust and reliable product. Tasks transition into the "Ready for QA" column as they await scrutiny.
Most companies have QA process which usually happens in dev environments.
8. Ready for Deployment:
As the QA team gives its stamp of approval, tasks ascend to the "Ready for Deployment" stage. Here, preparations are made for the smooth transition of changes into the production environment. This may involve finalizing documentation, coordinating release schedules, and configuring deployment pipelines.
Tests are passed, PR is ready and so on, now it's time to take everything to a most similar environment to production which might be staging, UAT or any other name you might have. (We were calling this Wombat) :D
9. Ready for Release:
The moment of truth arrives as tasks reach the "Ready for Release" milestone. With all checks and balances in place, the stage is set for the grand unveiling of new features or enhancements to end-users. Rollout strategies are executed, and stakeholders eagerly anticipate user feedback.
Final tests, e2e tests and everything is working, if you have or not have feature flags, everything is fully tested, Developers are responsible to double check everything here and release is ready to go live.
It's important to note that while this journey provides a structured framework, the engineering process is highly adaptable and subject to iteration and refinement. Each team may tailor its approach based on project requirements, organizational culture, and lessons learned from previous endeavors.
In conclusion, the journey of software engineering is a collaborative odyssey marked by meticulous planning, disciplined execution, and continuous improvement. From the humble beginnings of a backlog item to the triumphant release of a polished product, every stage of the process contributes to the creation of innovative solutions that delight users and drive business success.