This page describes my software development process, which is based on the Software Development Life Cycle (SDLC) standard.
SDLC is a framework that defines and provides a well-structured flow of tasks in different stages of the software development process. SDLC's benefits to an organization include:
SDLC recommends the following stages for software development projects:
SDLC provides a good starting point when implementing any software project, regardless of whether it's traditional software project or a Web3 application. My approach is flexible and depending on the project's scope, we can combine, omit, or split tasks within each stage.
While many different variations of SDLC exist, I gravitate towards a hybrid of the agile and iterative SDLC models. I leverage productive tools and frameworks to reduce development costs and rapidly build and deploy applications.
An agile SDLC model focuses on end user feedback and input and empowers the team to make rapid adjustments to its plan when necessary so as to be highly responsive to customer feedback.
An iterative SDLC model favors developing the software in iterations or small steps. What this means is getting a basic version of the software up and functional quickly, and then improving on it in small steps (or iterations) over multiple life cycles.
So a hybrid of these two models would typically involve initially building a Minimum Viable Product (MVP) with just enough features to meet the needs of early adopters, and then adding features over time, based on end user feedback, to make a finished application.
The rest of this document describes each SDLC stage in more detail.
Stage 1 addresses the following questions:
Stage 1 objectives may include, but are not limited to:
Stakeholders include anybody who may use the software, such as customers, sales reps, programmers, industry or subject matter experts, etc. By gathering end user or customer feedback early on in the process, SLDC can help reduce avoidable rework and after-the-fact fixes.
In Stage 1, the team will develop a strong understanding of what problems their eventual solution should address, so that they can design an accurate, targeted solution in the next stage.
Stage 2 addresses the following questions:
Stage 2 objectives may include, but are not limited to:
By the end of Stage 2, the team will have a clear roadmap for achieving the goals of the project, and they will understand the costs and resources required to get there. They will be able to fine tune the product market fit and polish the overall design of the product before a single line of code is written, thereby saving time and resources.
The team adopts a project management methodology (e.g. Scrum or Kanban).
Stage 3 is typically the most time-consuming part of the entire life cycle, as developers would often need to return to this stage if any bugs or issues occur in the subsequent SDLC stages.
Stage 3 addresses the following questions:
Stage 3 objectives may include, but are not limited to:
In Stage 3, the development team will be able to produce organized and consistent code that's easier to understand and to test during the next stage.
Stage 4 addresses the following questions:
Stage 4 objectives may include, but are not limited to:
Stage 4 minimizes the number of bugs and glitches in the application so that end users will be more satisfied and will be more likely to continue to use the application.
The software may initially be released only to a limited segment of the user population, and after a while, if all goes well, be released to the entire user population.
Stage 5 addresses following questions:
Stage 5 objectives may include, but are not limited to:
Stage 5 will help the team become confident that the software would not present any major issues to end users after it is deployed to production and that the software would meet user expectations.
The deployed software needs to be monitored continuously for errors, up-time and performance. You may want to conduct A/B tests to learn what works and what doesn't for users so you can continuously improve on the end-user's experience.
Stage 6 addresses the following questions:
Stage 6 objectives may include, but are not limited to:
Stage 6 will ensure that the software would continue to improve over time as the team continues to iterate on the software by incorporating end user feedback and optimizing the application infrastructure.