Wednesday, October 12, 2011

The Perfect Engineer

For reasons that should be shortly entirely obvious, I have been thinking about job interviews. It was so bad that instead of typing "routes.rb" while looking for a file, I typed "resume.rb". Heh.

And, in thinking about this I realized what I think companies want out of the perfect engineering candidate.

We've had a good deal of changes where I work. Let me state right now that I have a tremendous amount of confidence in the leadership, their vision and the work that we're doing. However, when things change, folks get all shook up. First, after a sizable push to get new infrastructure up and running on an accelerated schedule, we lost a bunch of folks. Some were contractors that wrapped up and others were stalwart members who accomplished something really great and felt it was time to move on to new challenges.

Then, we had a change in team leadership. This caused more unrest and another flurry of departures. Although we're looking for replacements, they are hard to come by and a linear extrapolation of our head count over the past year shows no one left by next July. We mostly look at that downward progression as gallows humor.

So, thinking about my departing colleagues and having had to do due diligence myself, it occurred to me that companies seem to be looking for an engineer with the following qualifications:
  • Amazing Abstract Thinker: Software architecture, design and algorithms
  • Rock-Solid Concrete Contributor: Code structure, comments, testing, source code control, branches, merging. Master of multiple languages
  • Top-Notch Manger of the User Experience: Site flow design, UI design, HTML, CSS, JavaScript implementation
  • Unshakable Foundation Provider: Schema architecture, database configuration, SQL wizard across multiple databases both commercial and open source
  • Deployment Master: development, staging and production system configuration and management, deployment processes and scripts
  • Systems Genius: Unix, OS/X, Windows, Networks and OS internals
  • Unparalleled Business Analyst: Business needs analysis, specifications, requirements documentation, feature prioritization, cost estimation, ROI projections
  • Zen Guru: personable, calm, professional, communicative, approachable, polite and respectful, unflappable
  • Project Management Prodigy: team management, task estimation, assignment, prioritization, budgeting, conflict resolution, risk management
  • Strategic Wonder: project current business realities into future business needs and align technical infrastructure, staff and supporting resources to meet tomorrows needs today.
  • Workaholic: Put in a solid 40 hour week plus full time availability for emergencies and fire-fighting
  • Hero: Take critical business needs and urgent projects, pull out all the stops and deliver them ahead of all expectations
  • Inexpensive: after all, we're just talking about friggin' writing code for a web site. How friggin' hard can that possibly be? Plus, there are a ton of engineers and they're easy to please. Give 'em a fast computer and lots of free food and they're fine.
Ja, this is pretty snarky. But as I review it, I'm gonna stick by it. I recently realized that I started managing folks when I was 16 and ran a ballet studio for the summer while the owners were traveling out of the country. I've been doing this management stuff for over 30 years. Holy cow!

BTW, I can lay legitimate and concrete claim to most all of the aspects identified above and feel darn good about that. However, I've worked with a lot of folks and know that really good engineers are really hard to find; may be 1 out of 20. They have the ability to sustain an entire company and turn it around on a dime as needed.

Like I said, I feel good about where I am. I know the value I bring and know that I continue to work with some very talented engineers whom I respect tremendously. I also know that I would be hard pressed to replace them and hope I don't have to any time soon.