January 7, 2010
Engineer’s function is to tame. A good engineer earns her living by treating a problem as her enemy. She then tries to battle the enemy and relishes to tame it, if not defeat it. To an engineer, the fix is to be able to make a code run in 200ms from 2 minute (enemy: Slowness). To be able to get 60MPG in a Prius (enemy: Gas Price). To invent a body airbag to keep old people from getting hurt at fall (enemy: Gravity and old age).
Biggest trait for a good engineer is intolerance of measurable deviations for structured entities. In our world, this means good engineers are eager to solve problems. While doing so, the engineer relies on a mix of experience, analysis and measurement. Say, Reed is a great engineer. Whenever he sees a bug he gets impatient to solve it. He accesses knowledge-based analysis tipped with years of experience to try a solution. He keeps tinkering with the solution till the measurement satisfied him.
A Manager’s function is to understand and remember. Key trait for good manager is to be able to put on the other person’s shoes. To understand people; their bias and strength; their “trigger” points; what they complained about last year; what happens usually when they promise ‘will be done in another week’. The biggest tools for Engineering — knowledge, experience and measurement — are not the most useful ones in such cases. e.g., for every Myers-Brigg Type Indicator (MBTI) measurement, there is “Forer effect”. These metrics are unlike third law of Thermodynamics which usually does not get spoofed. For a manager, the trait to see every problem as “adversary” and try to immediately solve it often backfires. Often, the reason something is not done in two weeks (as planned) is not as linear as “those 5 lines of code takes 75% of time”. People may neither be right or wrong; or good or bad — unlike a $4 per gallon gas price. Most of the days, trying to take a unannounced heroic shortcut — even successful — would confuse the team. An engineer would be lauded, and probably even be rewarded, for doing the same.
The transition between two domains is truly difficult, if not permanent. I myself have gone through it, and knowing the challenge I started giving managers more sympathetic ears. Then you come across a popular manager who actually proposes “the solution” while looking at the code over your shoulder. It appears he has not even coded in last several years. You can think no less of superhero for him!