natural

Natural Development

on Sep 11 in blog posted , , , , by admin

In 1859, Charles Darwin set out his theory of evolution by natural selection as an explanation for adaptation and speciation. He defined natural selection as the “principle by which each slight variation [of a trait], if useful, is preserved”.

My take on natural selection in software is that with each subsequent update, the functions that are most useful should be preserved and those that aren’t should either be dropped, or improved if they show promise. This method will quickly produce effective systems that are tailored for their specific requirements. With each successive update, the system becomes more aligned with it’s intended use, even if that changes from time to time.

To achieve this result there needs to be a few things first.

  • Regular updates of the software
  • Measurable feedback on the changes
  • Clear objectives of what you want to achieve

These roughly translate into offspring, fitness and drive; Each generation (update) of the system needs to be evaluated (feedback) for fitness against the objectives (drive).

Software development has already formalised this process (in 2001), calling it Agile Software Development. The fundamentals are here and I’ve been doing it for a long time.