- Posted by Ian Suttle on September 24, 2007
- Filed under General
I've been interviewing and hiring engineers for years and the one saying that holds true in this experience is "it's hard to find good help these days." Not to say there aren't a number of bright individuals with good experience and characteristics out there, it's just they all have jobs already. It literally can take six months or more to find the right candidate for the position. Maybe I'm too picky. I probably pass up some would be good candidates, but I very rarely hire a bad one. I probably couldn't pass my own interview process actually :). Through the years I've come to realize some key traights of good engineers:
- Foundational knowledge - It's not enough to know the textbook on the latest and greatest programming language. You need to understand the fundamentals of software engineering. School may not be teaching you the latest version of .Net or Ruby on Rails, but they're teaching you about data structures, object oriented concepts, etc.
- Relevant experience - Okay, so knowing the textbook is good too. A good engineer can learn a new language and set of tools, and combined with foundational knowledge and industry experience they're now a well oiled programming machine.
- Positive attitude - Negativity is infectious; avoid it at all costs. We all get stressed and frustrated at times but how you react to those situations shows your true character.
- Sense of humor - If you can't smile, I can't hire. A good sense of humor can make up for other imperfections you may have.
- Dependability - Huge. If you can take the baton and carry it through to the finish line you're worth gold. There's a pit crew there for support but you've got to drive the car. Whatever you do, don't drop the ball... or crash the car to stick with the analogy :). It was pointed out by a reader this sounds critical so let me clarify. I define "drop the ball" as being flakey and not as making mistakes. Making mistakes is a natural progression of learning and growing and is expected without lashings in return :).
- Communication - You must be able to understand what's being asked of you and discuss important topics. If you can't, you won't build the right software and you'll mold inaccurate perceptions. Your manager should also be up to date on status, happenings, and obstacles. It's your manager's job to help clear the path.
- Creativity - Can you think outside of the box or do you hit your face trying to find your way out? In the software engineering world no two projects are the same and if they are, well that's what code reuse is for (note I'm specifically NOT saying Copy and Paste).
- Enthusiasm - Love what you do. Learn what's new without your job requiring it of you. Keep up with the latest trends. Work on your own pet projects. If you got in to the "computer industry" for the greenbacks, I predict a change of profession in your future :).
The position being hired for likely has specific requirements and would be in addition to the traights I've listed. Lastly, everyone can improve on all of these aspects so don't give up hope if you think you fall short.
Oh yeah... if you do fit this description contact me - I have a job for you :)