<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
This is an interesting side discussion to the problem of HR
departments filtering out the good people and passing on people with
the highest number of keyword matches to the hiring managers.<br>
<br>
[This one keeps coming up in both GTALUG and UU discussions:
crossposted.]<br>
<br>
<div class="moz-forward-container">--dave<br>
-------- Original Message --------
<table class="moz-email-headers-table" border="0" cellpadding="0"
cellspacing="0">
<tbody>
<tr>
<th nowrap="nowrap" valign="BASELINE" align="RIGHT">Subject:
</th>
<td>Resume Driven Development</td>
</tr>
<tr>
<th nowrap="nowrap" valign="BASELINE" align="RIGHT">Date: </th>
<td>Sat, 11 Oct 2014 13:38:37 GMT</td>
</tr>
<tr>
<th nowrap="nowrap" valign="BASELINE" align="RIGHT">From: </th>
<td><Mike Loukides></td>
</tr>
</tbody>
</table>
<br>
<a class="moz-txt-link-freetext"
href="http://feedproxy.google.com/%7Er/oreilly/radar/atom/%7E3/vgBYi2NC_FY/resume-driven-development.html">http://feedproxy.google.com/~r/oreilly/radar/atom/~3/vgBYi2NC_FY/resume-driven-development.html</a><br>
<br>
<title>Resume Driven Development</title>
<base
href="http://radar.oreilly.com/2014/10/resume-driven-development.html">
<p><a moz-do-not-send="true"
href="https://www.flickr.com/photos/howardlake/4834299551"><img
moz-do-not-send="true"
src="http://s.radar.oreilly.com/wp-files/2/2014/10/Crossed_Wires_Howard_Lake_Flickr.jpg"
alt="Crossed_Wires_Howard_Lake_Flickr" class="aligncenter
size-full wp-image-71237" height="205" width="620"></a></p>
<p>I had a conversation recently with <a moz-do-not-send="true"
href="http://mechanical-sympathy.blogspot.com/">Martin
Thompson</a> (<a moz-do-not-send="true"
href="https://twitter.com/mjpt777">@mjpt777</a>), a
London-based developer who specializes in performance and
low-latency systems. I learned about Martin through <a
moz-do-not-send="true" href="https://twitter.com/KevlinHenney">Kevlin
Henney’s Tweets</a> about his recent talk at <a
moz-do-not-send="true"
href="http://gotocon.com/aarhus-2014/speaker/Martin+Thompson">Goto
Aarhus</a>.</p>
<p>We talked about a disturbing trend in software development:
Resume Driven Development, or RDD. Resume Driven Development
happens when your group needs to hire a developer. It’s very
hard to tell a non-technical HR person that you need someone who
can make good decisions about software architecture, someone who
knows the difference between clean code and messy code, and
someone who’s able to look at a code base and see what’s
unnecessary and what can be simplified. We frequently can’t do
that ourselves. So management says, “oh, we just added Redis to
the application, so we’ll need a Redis developer.” That’s great
— it’s easy to throw out resumes that don’t say Redis; it’s easy
to look for certifications; and sooner or later, you have a
Redis developer at a desk. Maybe even a good one.</p>
<p>And what does your Redis developer do? He does Redis, of
course. So, you’re bound to have an application with a lot of
Redis in it. Whenever he sees a problem that can be solved with
Redis, that’s what he’ll do. It’s what you hired him for. You’re
happy; he’s happy. Except your application is now being
optimized to fit the resumes of the people you hired, not the
requirements of your users.<span id="more-71224"></span></p>
<p>I have nothing against Redis. Substitute any other great tool
(Node, Django, jQuery, AngularJS — the list is very long) in any
tier of the application, and you’ll end up with the same story.
If this scenario bears any resemblance to the truth (and it
certainly does), you probably will rinse, substitute some other
tool, and repeat. Now you have a developer whose job is to make
sure there’s a lot of Angular in the system. Sooner or later,
you have a nice “full stack” that’s using just about everything
in the modern bestiary of programming languages and frameworks.</p>
<p>This isn’t a good situation. The problem isn’t the tools, each
of which serves a need and is good at doing what it does. The
problem isn’t the developers; you hired good Redis, Angular, and
Node guys, and they’re all doing what they were hired to do. The
problem is that your team is optimized around the inability to
communicate at a critical stage: the inability of a technical
team to specify what they really want (a developer with good
programming taste and instincts), and instead hiring someone who
has a particular skill or credential. Martin and I suspect that
Resume Driven Development is quite pervasive: an overly complex
application stack that’s defined by the people you hired, and by
the current toys that the “cool kids” on the programming block
get to play with, not by the requirements of the application.</p>
<p>If it all works, what’s the problem? Well, the problem is that
it probably doesn’t work. Martin has gotten latencies from tens
of seconds down to sub-second levels just by stripping layers
out of the stack. The resulting code is simpler, easier to work
with, and much more productive: customers buy stuff; customers
actually explore the site and shop because they’re no longer
frustrated while waiting around for their request to percolate
through an overly complex site.</p>
<p>This isn’t an easy problem to solve. The complete system
(software, engineers, HR staff) tends to optimize around the
wrong problem: simplifying the process of evaluating candidates
by listing a set of skills. In the process, it pessimizes what
should be most important: the ability to serve customers
effectively. The result is a large, complex technology stack, a
Yak with a lot of multi-colored hair to shave, that’s defined by
the institutional setting, not the job’s real technical
requirements.</p>
<p>How do we fix this? It’s easy to say “hire good people”; but
hiring good people is hard. When you’re looking for good
programming instincts and a solid understanding of the
fundamentals, certifications don’t help; degrees don’t help. But
certainly understanding the problem, understanding why your
“full stack” has grown so full, is a start. And before you ask
HR to find a developer who is familiar with AcuteJS and Lymph,
think about who you really want in that seat.</p>
<p><em>Cropped image on article and category pages by <a
moz-do-not-send="true"
href="https://www.flickr.com/photos/howardlake/4834299551">Howard
Lake on Flickr</a>, used under a <a moz-do-not-send="true"
href="https://creativecommons.org/licenses/by-sa/2.0/">Creative
Commons license</a>.</em></p>
<div class="feedflare"> <a moz-do-not-send="true"
href="http://feeds.feedburner.com/%7Eff/oreilly/radar/atom?a=vgBYi2NC_FY:8OLvyutoYS8:V_sGLiPBpWU"><img
moz-do-not-send="true"
src="http://feeds.feedburner.com/%7Eff/oreilly/radar/atom?i=vgBYi2NC_FY:8OLvyutoYS8:V_sGLiPBpWU"
border="0"></a> <a moz-do-not-send="true"
href="http://feeds.feedburner.com/%7Eff/oreilly/radar/atom?a=vgBYi2NC_FY:8OLvyutoYS8:yIl2AUoC8zA"><img
moz-do-not-send="true"
src="http://feeds.feedburner.com/%7Eff/oreilly/radar/atom?d=yIl2AUoC8zA"
border="0"></a> <a moz-do-not-send="true"
href="http://feeds.feedburner.com/%7Eff/oreilly/radar/atom?a=vgBYi2NC_FY:8OLvyutoYS8:JEwB19i1-c4"><img
moz-do-not-send="true"
src="http://feeds.feedburner.com/%7Eff/oreilly/radar/atom?i=vgBYi2NC_FY:8OLvyutoYS8:JEwB19i1-c4"
border="0"></a> <a moz-do-not-send="true"
href="http://feeds.feedburner.com/%7Eff/oreilly/radar/atom?a=vgBYi2NC_FY:8OLvyutoYS8:7Q72WNTAKBA"><img
moz-do-not-send="true"
src="http://feeds.feedburner.com/%7Eff/oreilly/radar/atom?d=7Q72WNTAKBA"
border="0"></a> <a moz-do-not-send="true"
href="http://feeds.feedburner.com/%7Eff/oreilly/radar/atom?a=vgBYi2NC_FY:8OLvyutoYS8:qj6IDK7rITs"><img
moz-do-not-send="true"
src="http://feeds.feedburner.com/%7Eff/oreilly/radar/atom?d=qj6IDK7rITs"
border="0"></a> </div>
<img moz-do-not-send="true"
src="http://feeds.feedburner.com/%7Er/oreilly/radar/atom/%7E4/vgBYi2NC_FY"
height="1" width="1"> <br>
</div>
<br>
</body>
</html>