The Nature of Software Development

Developing software is a huge task which may easily overwhelm you. You need to learn not only the programming language itself, but also algorithms and algorithmic design. You need to master tools like Git (cheat sheets here), improve your debugging and testing skills, and improve your collaboration skills when working in teams (e.g. agile methods).

In the following video, I summarize the one big idea I got from the book “The Nature of Software Development” from one of the coauthors of the popular “Agile Manifesto”, Ron Jeffries.

Basically, the ideal software development process consists of the following steps:

  1. Decide on the features that would be valuable to ship to the client.
  2. Associate two values to each feature: costs of implementation (e.g. time or money) and value for the client.
  3. Take the feature with maximum value per cost and implement this feature, test it properly, and ship it to the client.
  4. Seek feedback and go to step 1.

At the heart of this process is a value first approach — and the philosophy of continuous improvement. For continuous improvement in Python, feel free to check out my free email academy with Python cheat sheets:

Leave a Comment