Alex has been doing software development since 1990. His current passion is how to bring soft back into software. He firmly believes that our industry has reached the level of sophistication where this lofty goal (i.e. bringing soft back into software) is fully achievable. One of the amazing ways to accomplish that is to adopt the 'fail fast' approach by crafting a measurable goal/test and then iterating until the test passes. Following that, send the sniffing police dog to check the cargo (i.e. use mutation testing), and if the dog does not detect any illicit material, your code is optimally structured. Which means it is now back to being soft, maleable, pliable. Which means you have improved the flexibility of the business operations.
Alex is presently consulting at WorkSafeBC, an organization dedicated to ethical treatment of safe work environments in support of employees and employers in the province of British Columbia. Alex is responsible for leading and ensuring prudent software engineering practices at the organizational level.
To read more of Alex's writing on technology, visit his blog: http://digitalexprt.com/blog.html
Authored Comments
There is a huge difference between nature and human invented engineering. Nature has all the time in the world, while engineering is severely constrained by the budget (time and money concerns).
We could theoretically devise a system where the Best Guess for the square root of the supplied positive number is just some random number, then check to see if it passes the test, and if not iterate but taking another wild, random guess. Eventually, given unlimited time in the Universe, the random guess will be correct.
You know the saying "trillion monkeys, each sitting at a typewriter, will eventually produce complete works of Shakespeare".
Given enough time, anything is possible. But in the world of engineering, we win by winning the race with time. The first mover advantage and all that jazz.
Interesting take on those challenges. You may have misunderstood the intent of the article. Unlike in the nature, iterations in software engineering are not random. They obey certain algorithm. The only thing that is random is the initial Best Guess; everything else following that initial guess is deterministic.