Development Cycle

Let's talk about software development prioritization as well as the development cycle.

Development flow

When developing a software system, should we choose to build it in a bottom-up fashion, starting from low-level components, or should we follow a top-down style, starting from high-level features? Here is the comparison.

Comparison

No matter which way of prioritization we choose, here are some tips:

Now we have figured out our priorities, and we are ready to talk about the development cycle.

Development cycle

  1. Create development tasks based on requirements (plan).
  2. Prioritize development tasks based on impact to engineer hour cost ratio, achieving high Return-On-investment (ROI).
  3. Synchronize with customers on the tradeoff between time and feature quality/quantity, and delivery deadlines.
  4. Pick up development tasks from the backlog and put them into a two-week sprint.
  5. Develop and commit the source code into the code repository (code).
    • Prefer many small Pull Requests (PR) over one large PR.
      • Choose among feature addition, bug fix, and refactoring but not two or more.
      • Colleagues are more willing to review many small PRs rather than one giant PR.
      • Get feedback early to revise architecture design before spending too much time and energy on less impactful things.
      • Smaller PR works well with Continuous Integration / Continuous Delivery (CI/CD) and testing.
  6. Build the binary (build).
  7. Conduct the unit test (test).
  8. If the build passes the unit test, store it into the artifactory and deploy it into the development environment, otherwise, go back to step 3.
  9. Conduct the integration test.
  10. If the build passes the integration test, deploy it into the Quality Assurance (QA) environment, otherwise, go back to step 3.
  11. Conduct the QA test which includes version-specific test, regression test, cross-version test and performance test.
  12. If the build passes the QA test, deploy it into the UAT environment, otherwise, go back to step 3.
  13. Conduct the User Acceptance Testing (UAT).
  14. If the build passes the UAT verification, promote it to a release candidate.
  15. Make the release and deploy the build into the production environment (deploy).
    • Git branch management
    • Semantic versioning
    • Release schedule
    • End-of-life schedule
  16. Monitor the production environment and watch for alerts. Escalate issues if needed (monitor).
    • Error logging
    • Performance metric monitoring
    • Failure alerting
    • User feedback collection
  17. Write documentation (document).
    • Versioned documentation
    • Migration guide

See also

←Previous Next→