make sure there is always a pipeline of
new ideas. You have to make sure the
pipelines are set up so they never stall—
keeping things innovative.
Kate’s takeaway: Think about the people around you. Do you have enough
different opinions to keep your team
out of a local optimum? How can you
get more diversity?
What are the common mistakes that
even good engineering managers some-
Your prior assumptions are not higher order—that is, you are not making assumptions about your assumptions. I keep
reading How to Win Friends … because I
understand it is easy to fall back into my
default behavior. That is the big thing: your
work is never done. You never know and
you aren’t perfect. There is always stuff
to learn. You have to keep up with your
trade and keep learning. You have to keep
pushing yourself to get better.
Once you get stuck and stop pushing yourself, you are toast.
Kate’s takeaway: Think about some of
the past lessons you’ve learned. What
could you use a refresher on? What are
some new things you want to learn?
What is your best interview question?
Given a generic type Cont r a =
(a -> r) -> r, prove that this type
forms a monad.
If you try to solve this question by
brute force, you are going to fail. But if
you look at it from the right level of abstraction, it is easy. So it forces you to
problem solve your own problem-solving skills.
The particular formulation using
monads and type sounds really theo-
retical, but it is super practical. When
you make the system do things that no
one thought was possible?
Being agile is about communication.
The process needs to change with the
situation. You have to have a big picture
of where you want to go, but any plan or
process will shatter immediately when
you hit your first bug or something happens out of your control.
In most projects there are two
phases: an explorative phase and an
execution phase. Your project should
progress like a damped sine wave,
where the amplitude gets smaller over
time (see the accompanying figure).
You have to figure out what to build,
and figure out what question you are
trying to answer. In the beginning you
want to increase the vertical velocity
to get uncertainty under control, and
then you want horizontal velocity to
increase when you get into execution.
With prescriptive processes, people
are looking for a silver bullet to solve
problems, but it doesn’t exist. It comes
back again to “The Humble Programmer.” The world is super-confusing, and
you have to embrace it and work with it.
Kate’s takeaway: You have to make your
process work for you. Imagine your
projects progressing on a damped sine
wave—first focus on finding the right
questions, and then the answers.
Who is the best manager you ever
worked for? What made this person
William Adams. He was my manager at Microsoft. He is an inspiration,
and I am still trying to emulate him in
There are several things I like about
him. One is the importance he sees
in diversity. For example, when dealing
with feedback loops and prior assumptions, you need diversity to challenge your
thinking. You have to actively put energy
into creating a diverse environment so
you are always challenging the status quo
and maybe resetting your accumulated
state. Don’t get stuck in a local optimum.
The other thing is that he always fo-
cused on people first. You want to create
the circumstances where everyone can
focus on their strengths. Always find the
best job for the person. Try to get a sense
of the progress and circumstances so
you can get ahead of what is next. For
example, if the project is winding down,
Being a great developer is difficult. It
requires constant learning and a pas-
sion for technology and science. The
same thing is true for great technical
leaders. There are a lot of smart les-
sons, but perhaps the most important
one is always to be pushing yourself,
and to be smart about your brainpower
and energy (working smart).
Lean Software Development:
Building and Shipping Two Versions
It Probably Works
A Conversation with
Erik Meijer and José Blakeley
1. Carnegie, D. How to Win Friends and Influence People.
Simon and Schuster, 1936.
2. Colyer, A. The Morning Paper; https://blog.acolyer.org.
3. Dijkstra, E. W. The humble programmer. Commun.
ACM 15, 10 (Oct. 1972), 859–866; http://dl.acm.org/
4. Meijer, E., Kapoor, V. The responsive enterprise.
acmqueue 12, 10 (2014); http://queue.acm.org/detail.
5. U. S. Marine Corps. Warfighting, 1997; http://www.
6. Zuckerberg, M. Mark Zuckerberg’s letter to investors:
‘ The hacker way.’ Wired; https://www.wired.
Erik Meijer has been working on “democratizing the
cloud” for the past 15 years. He is known for his work on,
among others, the Haskell, C#, Visual Basic, and Dart
programming languages, as well as for his contributions to
LINQ and the Rx (Reactive Extensions) framework.
Kate Matsudaira ( katemats.com) is the founder of
her own company, Popforms. Previously she worked at
Microsoft and Amazon as well as startups like Decide,
Moz, and Delve Networks.
Copyright held by authors/owners.
Publication rights licensed to ACM. $15.00
Damped sine wave.