Let me digress for a moment to distill everything you will learn about product development processes into a single question given to me by Rob Gingell, Sun Microsystems' former Chief Engineer:
"How do you know when you are done?"
The answer isn't "when we get to the ship date"!
The beauty of the question "How do you know when you are done?" is its recursion. You know when you are done when your product meets its design requirements. How do you know it meets its design requirements? Because it passes the test you created. Where did the specifications for the requirements and tests come from? You generated them before you went about designing the product, and you iterated them along the way. So what you are doing is proving you did what you said you would do. That's process.
Throughout all of this, I have had the pleasure of working with, and then managing, some truly gifted engineers. And this pattern began to emerge. The engineer's engineer. What do they have in common? I think it's three basic things:
* First, they know their stuff. They have a thorough grounding in their discipline and they never stop learning.
* Second, they use their expertise to identify the essence of a problem and drive toward the simplest possible solution. A complex answer always makes them worry: Where did I go wrong? What am I missing?
* Finally, they develop (after many years in most cases) the ability to step back and judge their own work objectively, and openly accept the critiques of others. To distance their egos from the artifacts they have created.
Wanna be a great engineer? Know your stuff, make things that are simple and elegant, and embrace criticism in order to make them even better. That's all there is to it. Easy, huh?
Why not?
You're engineers. You should be as passionate about your work as any other creative artist. That's exactly what you are, by the way. A creator of constructive arts. And the great ones pour their hearts and souls and life experiences into the things they create.
So, how are you going to take that passion and view the resulting work dispassionately?
It won't be easy, and it takes most of us years to reach a point where criticism of our work doesn't feel like criticism of our selves, but I think the place to start is with the realization that you have a responsibility to other people.
...
Whether we're talking about RFID or genetically modified food or any of the myriad places where engineering connects science and society, the top-of-mind question has to be: How will this affect people's lives? And how will people who don't have the benefit of your education imagine the affect on their lives.
If you want to be a great engineer, if you want to do work that really makes a difference, think about that every step of the way. Practice engineering in a social context.
You have a duty to make things simple, usable, secure, and safe.
During your careers, you may be tempted at times to scoff at people's reactions to new developments. You may be tempted to dismiss them as ignorant or alarmist. And you may have occasion to rail against the politicians who enact laws about things they don't understand in the least.
Resist those temptations.
It's your responsibility to communicate the benefits of what you create. And, believe me, public policy is too important to be left to the politicians. So it's up to you to get involved, join the discussion -- lead the discussion -- and make a difference out there.
Think of yourselves as citizen engineers. You may even learn a thing or two from the people who will (or won't) use the things you create.
- Greg Papadopoulos, The Citizen Engineer