Unwritten Rule of Engineering #4: Confirm your instructions and the other person’s commitments in writing.
Do not assume that the job will be done or the bargain kept just because someone agreed to do it. Many people have poor memories, other are too busy, and almost everyone will take the matter a great deal more seriously if it is in writing.
Unwritten Rule of Engineering #3: Do not wait passively for anyone — suppliers, sales people, colleagues, supervisors — to make good on their delivery promises; go after them and keep relentlessly after them.
Many [engineers] assume that it is sufficient to make a request or order, then sit back and wait until the goods or services are delivered. Most jobs progress in direct proportion to the amount of follow-up and expediting that is applied to them. Expediting means planning, investigating, promoting, and facilitating every step in the process. Cultivate the habit of looking immediately for some way around each obstacle encountered, some other resource or expedient to keep the job rolling without losing momentum.
When you take responsibility for delivering something, you take responsibility for the whole supply chain. Boeing famously discovered this truth with the 787 program. As Boeing engineer Hart-Smith said (years in advance of the problems):
If [taking ownership of whole supply chain] is not done, the performance of the prime manufacturer can never exceed the capabilities of the least proficient of the suppliers. These [risks] do not vanish merely because the work itself is out-of-sight.
Unwritten Rule of Engineering #2: Demonstrate the ability to get things done.
A combination of three basic characteristics:
- initiative, which is expressed in energy to start things and aggressiveness to keep them moving briskly,
- resourcefulness or ingenuity, i.e., the faculty for finding ways to accomplish the desired result, and
- persistence (tenacity), which is the disposition to persevere in spite of difficulties, discouragement, or indifference
Unwritten Rule of Engineering #1: However menial and trivial your early assignments appear, give them your best efforts.
Many young engineers feel that the minor chores of a technical project are beneath their dignity and unworthy of their college training. They expect to prove their true worth in some major, vital enterprise. Actually, the spirit and effectiveness with which you tackle your first humble tasks will very likely be carefully watched and may affect your entire career.
… [Long term] success depends so largely upon personality, native ability, and vigorous, intelligent prosecution of any job that it is no exaggeration to say that your ultimate chances are much better if you do a good job on some minor detail than if you do a mediocre job as a project leader. Furthermore, it is also true that if you do not first make a good showing on your present job you are not likely to be given the opportunity to try something else …
As a manager, and now an executive running a software organization, I definitely agree: we look to give greater responsibility and authority to people who are doing a great job regardless of the assignment over those who only excel on specific projects.
While re-reading The Unwritten Laws of Engineering , the 1944 classic that is a crucial compilation of “house rules,” or a professional code, I realized that most of them also apply to modern software engineering. So, for the next few months I will blogging out one rule every few days, perhaps with a little color commentary about the modern practices. (Or you could buy your own copy and read ahead.)