Approaching Software Engineering as An Evolutionary Process

Source: https://www.publicdomainpictures.net/en/view-image.php?image=220443

A year or two ago I had an opportunity to sit down with AWS’s Marcin Kowalski in a cafeteria and discuss the problems of software development at almost-unimaginable scale. I walked away with a new (for me) conception of software engineering that is part engineering, part organic biology, and I’ve found this perspective has shifted my approach to software development in a powerful and immensely helpful way.

As Computer Scientists and Software Engineers, we’ve been trained to employ precision in algorithm design, architecture and implementation: Everything must be Perfect. Everything must be Done Right.

For smaller, isolated projects, this engineering approach is critical, sound and practical, but once we begin to creep into the world of integrated solutions and micro-services it rapidly begins to break down.

We simply don’t have time to rewrite everything. We don’t have time to build “perfect” solutions. We can’t predict the future.

Context matters. Circumstances matter. The properties and requirements of an emergent system take precedence over those of its constituent parts.

“You cannot upgrade an airplane wing in-flight”

(Or maybe you can?)

--

--

Adam Fisher / fisher king (@therightstuff)

Software developer and writer of words, currently producing a graphic novel adaptation of Shakespeare's Sonnets! See http://therightstuff.bio.link for details.