I’ve worked with a lot of good engineers and Yahoo! and other places. Recently I was thinking that a lot of the traits that make them great are borderline dysfunctional. Perhaps all good engineers are savants? When hiring, here are the traits I look for.
Good engineers are lazy.
After all, premature optimization is the root of all evil. Good engineers don’t spend their time dealing with things don’t matter and don’t spend time fixing things until they know what’s broke.
Good engineers are selfish.
When an engineer can scratch their own itch, selfishly building products to serve their own needs, they become highly motivated. The hardest part of designing products is figuring out what your customer wants. If you’re your own customer, the feedback cycle is exponentially faster and products mature quicker.
Good engineers are ignorant.
Sometimes all that’s needed to kill a good idea is knowing too much about the problem space. When you know all the existing solutions and all the constraints, you tend to reject new ideas quickly, thinking of 100 reasons they won’t work. Sometimes all it takes is a few tweaks to get around those constraints to solve a problem in a novel way.
Good engineers are paranoid.
If you’re not scared, you should be. There are lots of things to fear about programming, from hackers to bad passwords to accidentally deleting all your web pages. You know what’s really scary to me? While loops. One badly-terminated while loop can run forever and consume an entire server very quickly.
Good engineers are insecure.
Complacency is the death of a good engineer. As soon as you think you’re better than everyone else (you’re not) and stop learning, you start dropping in value. If no one’s reviewing your designs and code and telling you how very wrong you are, you’re never going to get lazy, just not the good kind of lazy.
Of course, taken to an extreme, any one of these attributes could make for a really bad engineer. The good engineers have just a little bit of each.
How about you, are you lazy? How about insecure? Know any paranoid friends? If so, I’ve got jobs for you. Consider it getting paid for your own therapy.
I think you pretty much hit the nail on the head here and I’m impressed with your intuition on the matter. However, I would like to offer a few tweaks to your descriptions. I would change the point labeled “Good engineers are ignorant.” to “Good engineers have brazen optimism.”. Speaking as one of the very engineers that you describe in your post, it’s not that we are totally unaware of the potential pitfalls, it’s just that they are not afraid of them, and are confident in our ability to innovate around the obstacles. I would also change the point titled “Good engineers are insecure.” to “Good engineers are hungry.”. This all goes back to the famous line that his Steveness quoted in his commencement speech to the graduating class at Stanford in 2005, “Stay hungry, stay foolish.”, and that’s what we types are all about. Staying hungry for growth, knowledge, and innovation and being foolish enough to chase it wherever it is without fear of being judged or decried. By the way, I love the Don Knuth quote, he’s one of my heroes.
All progress is due to laziness. Only a lazy man would spend an hour thinking up a way to do a 30 minute job in 15 minutes.
lazy: check I’m hugely lazy, rather not do the work, but if I have to, I’ll find the minimal
selfish: check It’s all about me
ignorant: check but not ignorant enough
paranoid: check I don’t trust anyone, even myself
insecure: check I think I will get fired for incompetence every year
> Good engineers are lazy.
> Good engineers are ignorant.
Heh. I came to the same conclusion:
Why Good Programmers Are Lazy and Dumb
So this post has stuck in my head for a while and now I realize I missed the point on Jeff’s “Good engineers are insecure.” point. I think it’s because I find the word “insecure” to have negative connotations and that doesn’t jive with my brain. Perhaps I would restate it as “Good engineers have humility”. I think humility is a much more positive term to attribute to someone who has managed to detach their ego from their work, accepting and learning from all forms of criticism without ego resistance. It’s hard to empty your cup of knowledge and make room for more if you lack humility.
the job is insecure thats the nature of new technology remember betamax)
!but in the end you get paid well for something you love doing.
i’m nearly everything that you say
and i may be the worst software engineer on earth
i need an article about dysfunctional attributes of useless thinkers 😀
I am a good Engineer who follow my leader’s opinions. I eat 2 sandwiches per day as not to loose time heating my food. I eat while working, work 15 hours per day, and do not accept large amounts of money, because i accept the fact that i am constantly learning and improving.
Long live DEP, Long live KAG 🙂
Pingback: Jeff’s 5 Dysfunctional Attributes of Good Engineers « Tony Tam | Cate Tam
Pingback: The Origin’s of My Interest in Technology |
Pingback: The Growth Trajectory of a Front-End Engineer | allenc
Pingback: My Interest in Technology | Benjamin Smith, CPA
This was exactly what I was looking for. I’ve recently started programming, and I’m an artist, so I’ve been really stricken by the engineering personality types I’ve come across. Amazed actually. I looked up “personality traits of an engineer” and all I got was like a bunch of wonderful traits of children taking apart toys, which is all well and good, but I love this piece because it shares both sides of the equation, so to speak. Thanks! Subscribing.