Software Development As a System

Author photo

Alex Kurkin

Alex enjoys building, mentoring, growing teams and then lead them into deep water to tackle challenging problems 🚀 He is keen to experiment with ways of working and innovative technical approaches. It is important for Alex to be committed to highest standard in every initiative he is involved in 🧨


What is a system?

System consists of a few building blocks:

  • Stocks - things that can be see, feel, count or measure at any time. For example: backlog of user stories.

  • Flows - action of changing stock. For example: PMs add new user stories to a backlog or devs complete user stories.

  • Feedback loops - process of receiving feedback after performing some action.

There are 2 types of feedback loops:

  • Balancing Feedback Loop - that's a bad outcome, you need to change behavior. For example: tests are failing in CI.

  • Reinforcing Feedback Loop - you're doing great, keep going! For example: No kickbacks from QA to dev

How do you know if you are looking at a system or a “bunch of stuff”?

  • Can you identify parts?
  • Do the parts affect each other?
  • Do the parts together produce different result comparing to the result that each part produces on it's own?