Hey, tech companies. Hey, engineers working at tech companies.

There’s a great post by Chad Fowler going around with a job description for an engineer we’d all love to work with.

He says he can’t find any of those engineers to hire. Spoiler: neither can your company. I’m going to tell you why not, and what it would take to fix it.

If you’re going to read Chad’s post unbiased, do it now. Otherwise I’ll summarize that engineer for you:

  • Very reliable with a great attitude about the job and the work.
  • Serious empathy for co-workers
  • Communicates clearly and constantly
  • Makes technical decisions humbly, focusing on the users and the company, not the developer him/herself; no “science projects”
  • Lots of experience, so s/he knows all kinds of development methodologies, and which parts actually work
  • Hates “ceremony” — no-nonsense
  • Willing to adapt to frameworks, tech, constraints and people except when it will have a “materially negative impact”
  • Make boring tech choices at work, play in free time (or “whenever it’s appropriate”)
  • Don’t mind looking bad when s/he deserves it
  • Love to teach and learn
  • Confident in lots of programming languages, architectures and operating systems, but not dogmatic about focusing on one

So: do you see why these people are very rare yet? It’s not just that this describes three or four full-time jobs to stay current (though it does.) It’s that several of those jobs conflict with each other and with your company.

Here’s an example:

  • Puts his/her primary focus on users and company, makes boring tech choices
  • Plays around only in spare time
  • Super competent at many dev methodologies and technologies

See the problem?

Here’s another set:

  • No time for ceremony; hates it
  • Communicates clearly and constantly
  • Always perceived as having a good attitude

Not a Contradiction

It’s totally possible to do all of these, of course. You can go gain a lot of skill in technology, then stop gaining more for awhile, or gain it more slowly (i.e. not at work with “science projects”.)

The communication/attitude thing is possible too — it requires a level of humility and empathy that doesn’t come without a lot of practice and a fair quantity of screwing up over a number of years.

It’s just that you want somebody who has put a short teaching career worth of effort into teaching. And a long programming career worth of effort into programming. And architecture. Plus you want them to be constantly positive, effectively humble and a clear, constant communicator. Let’s call that one more job worth of preparation.

Why You Wouldn’t Hire One Right Now If S/He Interviewed

Imagine somebody like the above — a great communicator, great teacher, broadly experienced with many methodologies and many technologies. You’re talking about somebody older. With a minimum of three full careers’ worth of skills, they’re not 22 any more.

So: somebody older, very experienced, highly skilled, but not currently trying to learn new stuff at work.

Do you see why s/he has about two years before s/he can’t get a new job?

Do you see why at your small startup, you wouldn’t hire him/her now?

An engineer fitting this description is committing career suicide. You won’t find many of them because only a small number of highly talented people have decided they’re done as programmers but haven’t yet left the field or switched to another.

The first thing your company does with older programmers is to “make sure s/he is keeping current and hasn’t just stopped learning.”

Could We Have Nice Things?

Would it be possible to have an industry that allowed such people to keep working? Absolutely. Do we have one now? Nope.

If you had enough stability that making humble technical choices wouldn’t result in career suicide in two years, that would do it (we don’t.) If would help extra if older people weren’t required to demonstrate how current they are with any technology they couldn’t have learned five years ago. This is often true at, say, defense contractors, and sometimes that allows such engineers to thrive.

If you put aside a specific chunk of time, regularly, for keeping skills up to date, that might allow somebody like this to work for you — see Google’s now-defunct 20% time for one possible method.

Or, if we were willing to pay these engineers as much as a decent lawyer or doctor, they could stay this good and still make choices that would put them out of work in two years. Two years working at 150% salary, six months off to refresh skills, repeat.

I’m sure there are other methods. Some day, perhaps our industry will adopt one.

What If I Want To BE ONE?

You could get an uncommon concession like the ones above. Please try to get it in writing — it can be hard for your manager to justify honoring an only-verbal agreement for an unusual concession. You know how it is.

Or you could put in the much lesser effort to start your own company, become a freelancer or otherwise work for yourself. I suspect you’ll pay yourself more and respect yourself more than almost any company.

Also, have you thumbed through a copy of John Sonmez’ “Soft Skills”? That’s another technique to get good, work for yourself, and genuinely get the benefits of being something as awesome as the above.

Being humble gets easier when you’re being treated well. Being treated well gets easier when you can just walk away.

I’m writing this because I do know people that match that description. And I see how they’re usually treated.

I want better for you.

The Upshot

If you’re a company trying to hire one of these, now you know why you can’t find them. You can treat them better, or you can keep never finding them. You have no other options.

Free Email Rails Class? Free Chapters? News?

* indicates required
You'll hear about Ruby on Rails internals, database migrations and whatever Rails programmers can benefit from.

Comments