“A learning experience is one of those things that says, ‘You know that thing you just did? Don’t do that.’” — Douglas Adams, The Salmon of Doubt
Here’s a thinking tool: when you’re having difficulty finding a solution, guess. Then you have something to work with.
In other words, when you don’t know what to do next, oversimplify and self-monitor. Iterative development strategies like The Agile Method are just versions of this idea. It’s also fundamental to many machine learning (or AI) strategies.
Daniel Dennett once gave a nice breakdown of how evolution works:
How To Create a Chicken:
1. Take a dinosaur
2. Let it replicate
3. Select for flightworthiness
4. Repeat steps 1-2-3
5. Repeat step 4
6. …until you get a chicken
The thing about evolution is that nobody really knows what will be selected for, or how future conditions will impact individual survival, or just how all of that will produce chickens or ocelots or the particular way an owl turns its head. There is no intelligence to it — it’s a thoughtless process. The lesson is to keep moving, to keep iterating. Progress is always better than stagnation.
The great news is that you are an intelligent designer. You can observe and change reality at will; you need not wait on randomness to discover working designs—but don’t be afraid to guess. The mistake is in assuming that you’re designing the perfect final state of a solution (complex) instead of the first working state (simple).
Try to promote continuous improvement through ongoing positive change, keeping on an open mind about unconventional solutions. Foster a culture of accountability, have a clear purpose, and keep checking if you’re any closer to your goal. Trust that useful properties will emerge out of creative interactions, in unpredictable ways. Be open to surprises:
1. Intelligently analyze complex systems to find weaknesses and inefficiencies.
2. Create a range of solutions and intelligently determine both the right solution and the right success criteria.
3. Model and test the solution in collaboration with all stakeholders to validate the solution
4. Analyze the results, measure against success criteria, and restart the process on failure.
5. Standardize success into repeatable guidelines and share that knowledge with all stakeholders
6. Repeat 1-5, continuously.
7. …until you get a chicken (Okay, maybe not a chicken. But you get the point.)
At InRhythm, we work tirelessly to ensure that our engineers are prepared to succeed in any engineering culture. Our training program, InRhythm University (IRU), is designed to ensure that every graduating engineer has mastered the technologies and techniques that we know work at the highest levels of the industry through continuous repetition of the above process. As we continue to train and teach new engineers through IRU, we will also continue to pass along what we learn. Keep learning and keep growing.