Review:
The Effective Engineer, by Edmond Lau
Publisher: |
Effective Bookshelf |
Copyright: |
2015 |
ISBN: |
0-9961281-0-7 |
Format: |
Trade paperback |
Pages: |
222 |
Silicon Valley start-up tech companies have a standard way of thinking
about work. Large chunks of this come from Google, which pioneered a wide
variety of new, or at least not-yet-mainstream, ways of organizing and
thinking about work. The rest accreted through experience with fast-paced
start-ups, engineer-focused companies, web delivery of products, and rabid
turnover and high job mobility within a hothouse of fairly similar
companies. A key part of this mindset is the firm belief that this
atmosphere has created a better way to work, at least for software
engineers (and systems administrators, although heaven forbid that one
call them that any more): more effective, more efficient, more focused on
what really matters.
I think this is at least partly true, at least from the perspective of a
software engineer. This Silicon Valley work structure focuses on data
gathering, data-based decision-making, introspection, analysis, and
continuous improvement, all of which I think are defensibly pointed in the
right direction (if rarely as rigorous as one might want to believe). It
absorbs bits and pieces of work organization techniques that are almost
certainly improvements for the type of work software engineers do: Agile,
Lean, continuous deployment, and fast iteration times.
In other cases, though, I'm less convinced that this Silicon Valley
consensus is objectively better as opposed to simply different;
interviewing, for instance, is a puzzle that I don't think anyone has
figured out, and the remarkable consensus in Silicon Valley on how to
interview (basically, "like Google except for the bits we thought were
obnoxious") feels more like a social fad than a sign of getting it right.
But every industry has its culture of good ideas, bad ideas, fads, and
fashion, and it's quite valuable to know that culture if you want to work
in that industry.
The Effective Engineer is a self-published book by Edmund Lau, a
Silicon Valley software engineer who also drifted (as is so common in
Silicon Valley) into mentoring, organizing, and speaking to other software
engineers. Its purpose, per the subtitle, is to tell you "how to leverage
your efforts in software engineering to make a disproportionate and
meaningful impact." While that's not exactly wrong, and the book contains
some useful and valuable tips, I'd tend to give it a slightly different
subtitle: "a primer on how a Silicon Valley software engineer is expected
to think about their work." This is a bit more practical, a bit less
confident, and a bit less convinced of its own correctness than Lau might
want to present his work, but it's just as valuable of a purpose if you
want to work in the industry. (And is a bit more honest about its
applicability outside of that industry.)
What this book does extremely well is present, in a condensed,
straightforward, and fast-moving form, most of the highlights of how
start-ups and web-scale companies approach software engineering and the
SWE role in companies (SWE, meaning software engineer, is another bit of
Google terminology that's now nearly universal). If you've already worked
in or around this industry for a while, you've probably picked up a lot of
this via osmosis: prioritize based on impact and be unapologetic about
letting other things drop, have a growth mindset, reprioritize regularly,
increase your iteration speed, measure everything constantly, check your
assumptions against data, derisk your estimates, use code review and
automated testing (but not too much), automate operations, and invest
heavily in hiring and onboarding. (The preceding list is a chapter list
for this book.) If you're working at one of these sorts of companies,
you're probably currently somewhere between nodding and rolling your eyes
because no one at work will shut up about these topics. But if you've not
worked inside one of these companies, even if you've done software
engineering elsewhere, this is a great book to read to prepare yourself.
You're going to hear about these ideas
constantly, and, if it
achieves nothing else at all,
The Effective Engineer will give you
a firm enough grounding in the lingo and mindset that you can have
intelligent conversations with people who assume this is the only way to
think about software engineering.
By this point, you might be detecting a certain cynicism in this review.
It's not entirely fair: a lot of these ideas are clearly good ones, and
Lau does a good job of describing them quickly and coherently. It's a
good job for what it is. But there are a couple of things that limited
its appeal for me.
First, it's definitely a primer. I read it after having worked at a
web-scale start-up for a year and a half. There wasn't much in it that
seemed particularly new, and it's somewhat superficial. The whole middle
section in particular (build tools for yourself, measure everything, be
data-driven) are topics for which the devil is often in the details. Lau
gives you the terminology and the expected benefits, but putting any one
of these techniques into practice could be a book (or several) by itself.
Don't expect to come away from
The Effective Engineer with much of
a concrete plan for how to do these things in your day-to-day software
development projects. But it's a good reminder to be thinking about, say,
how to embed metrics and data-gathering hooks into the software you write.
This is the nature of a primer; no 222-page book can get into much depth
about the fractal complexity of doing good, fast, scalable software
development.
Second, there's a fundamental question raised by a book like this:
effective at what? Lau tackles that in the first chapter with his focus
on impact and leverage, and it's good advice as far as it goes. (Regular
readers of my book reviews know that I love this sort of time management
and prioritization discussion.) But measuring impact is a hard problem
that requires a prioritization framework, and this is not really the book
for this.
The Effective Engineer is written primarily for software
developers at start-ups, leaves the whole venture-capital start-up process
as unquestioned background material, and accepts without comment the
standard measures of value in that world: fast-deployed products,
hypergrowth, racing competitors for perceived innovation, and finding ways
to extract money. That's as deep into the question of impact as Lau gets:
increases in company revenue.
There's nothing wrong with this for the kind of book Lau intended to
write, and it's not his fault that I find it unsatisfying. But don't
expect
The Effective Engineer to ask any hard questions about
whether that's a meaningful definition of impact, or to talk much about
less objective goals: quality of implementation, craftsmanship, giving
back to a broader community via free software contributions, impact on the
world in ways that can't be measured in market share, or anything else
that is unlikely to lead to objective impact for company profits. At best
he leaves a bit of wiggle room around using the concept of impact with
different goals.
If you're a new graduate who wants to work at Silicon-Valley-style
start-ups, this is a great orientation, and likewise if you're coming from
a different area of software development into that world. If you're not
working in that industry,
The Effective Engineer may still be
moderately interesting, but it's not written for that audience and has
little or nothing to say of the challenges of other types of businesses.
But if you've already worked in the industry for a while, or if you're
more interested in deeper discussions of goals and subjective values, you
may not get much out of this.
Rating: 7 out of 10