04 Nov 2013
I think it’s fair to say that everyone has ideas. They are the lifeblood of the
mind and the foundation of hopes and dreams for the future. I think it’s also
fair to say that most ideas don’t make it out of the individual’s head.
Eventually you forget the specifics of it or why you thought the idea was
important in the first place.
What’s that smell?
The problem is lack of execution. When ideas are allowed to persist as pure
concept, they begin to rot. Like the unfortunate chipmunk that made it into
your crawlspace - only to die - ideas trapped in your head start to decompose
and stink up the place.
Say you have an idea for a blog post - initially, it’s fresh and new and full
of creative potential. However just like no plan survives contact with the
enemy, no idea is so perfect as to survive execution. What seemed so clear and
elegant in your mind becomes gauche on the page. But that’s exactly the point!
A fully formed idea in your head does not have room to grow, change, and
adapt (it is, after all, fully-formed). The act of committing it into the real
world forces you to consider parts of it that seemed clear, but were just
being filled in with fuzzy mind-stuff. And the process of resolving these
deficiencies allows for the idea to grow in new directions - sometimes
unexpected ones.
Breaking the Habit
A very real danger of letting ideas die on the vine is how it habituates you to
think and act in a certain way. Having ideas that don’t go anywhere is not
really a productive activity - it amounts to daydreaming. Years of doing this
and the natural impulse when faced withan idea is to do nothing. This means
that when an opportunity to do something meaningful comes along, you will
discard it like the rest of the ideas in your head.
If this is already you, realize that there’s always a way to change and grow.
Namely, you have to execute. It might suck at first and people may not like it
or understand it, but the first priority is to break the habit. Competent
execution will come in time - as you get better at doing whatever it is you’re
trying to do.
20 Oct 2013
No figure in the modern software industry is more sought-after than the “10x”
engineer. Possessing productivity well in excess of a mere mortal, this
mythical beast is the basis for numerous articles.
A lot
has
been
written about
“10x” engineers and whether they exist already and I’m not going to explore
that particular issue. Instead, I think it’s interesting what the rise of the meme of
“10x” (AKA ninja or rockstar) engineers says about software development as a
discipline. Hint: it’s nothing good.
Why 10x?
I think it’s pretty well understood that measuring productivity in knowledge
work and especially in software development is tricky business. Over the
years, numerous heuristics have been developed for measuring programmer output -
including lines-of-code, function points, bugs closed, commits
made, value added, and the venerable “time spent in seat”. A “10x” engineer is
presumably 10 times more capable along one or more of these axes[1].
10x is a big difference though, in fact it’s an order of magnitude. The choice
of 10x as the dividing line between average and great says a lot about our
ability to measure differences in ability with any precision or nuance. Can the
average startup differentiate between their 2x and 4x engineers? What about 5x
and 9x? These are substantial differences in skill that will absolutely affect
product schedules and quality.
At some point, the focus on 10x becomes harmful. Being able to identify your
10x, A-player, ninja, rockstars is great but as an organization grows it does
not necessarily solve the problem of
keeping the rockstars around,
nor does it help you best utilize the rest of your team.
Engineers Don’t Grow on Trees
So where do 10x engineers come from? Tellingly, most of what I’ve seen written
on 10x engineers is about finding and hiring these individuals and not about
creating them.
I’m a big believer in the idea that human ability is - especially in the realm
of the mind - is malleable. It’s highly unlikely that 10x engineers are simply
born, fully formed. Certainly some minimal aptitude for math and logic is
required for good programming, but the skill to quickly write complex software
requires experience. Many of the engineers who are 10x straight out of college,
probably earned their abilities through curiosity and late-night coding
sessions in high school. Their peers who started software may be just as bright
but lacking the experience needs for “10x” performance.
Given this, the world is probably full of 2x and 5x engineers who, with the
right mentoring can become the 10x engineers everyone seeks. It seems curious
that this approach is not more common.
I think the unfortunate reason for this is the short-term focus of the current
Silicon Valley culture. You don’t have time to develop a 10x team out of
promising 2x candidates if your product has to be profitable 6 months from now.
But for big-idea products, where the technology will take years to develop and
mature, starting with less-experience engineers and training them up seems like
a natural choice. As the technology grows so does the skill level of the team.
Problematic Framing
The way that the talent acquisition problem has been framed in the software
industry - as a matter of finding and hiring rock-stars - is unfortunate. While
software is a technical discipline, I believe it is also a
craft
and if software is indeed eating the world we are going to need plenty of “10x”
engineers for projects whose time horizon exceeds the next 6 months.
[1] Of course it’s possible that someone talking about a 10x engineer is
measuring productivity using their own subjective metric.