No, I'm not talking about reading, writing, and 'rithmitic, I'm
talking about the three Rs that are critical in creating and keeping a
software organization strong.
The three Rs in this case are Rigor, Resources, and Raison
d'etre. Let's take a look at each of these in turn.
I begin with resources because when push comes to shove
this is one of the most important factors in making your team a
Am I saying that you can't build an incredible team with nothing but
the sheer will to bring your idea to fruition? Hell no. I'm saying
that good will only goes so far. After a while you will need to pay
your people what they're worth, and be able to hire enough help that
individual contributors don't feel like they're being exploited and
suffering from burn out.
This is a mistake I'm seeing more and more companies make over time.
Modern development techniques are increasing our overall
productivity dramatically, but they are not a substitute for having
enough man power to do the job you need done in the time frame the
You can't substitute creature comforts for this either. No amount of
free snacks, soda, coffee or snuggles will make an engineer who's
working night and day with no time to take care of themselves
happy. These things are nice add-one and can make employees feel
valued, but only when they're in addition to an environment that gets
the basics right.
There are other aspects to being properly resourced. Be sure you can
afford the equipment you need. If your business demands that you run a
data center, do it right! If you don't, you will increase the
frustration your employees have to deal with day to day to get their
jobs done, and that will seep into overall job satisfaction very
There's more to say on this - good office work environments including
sit/stand desks, keyboard trays or whatever else your employees need
to be productive without harming themselves. Don't skimp on this
stuff, it's super important, and your employees will thank you for it.
I wrestled with myself a bit as to whether this should come
first or second, but anyway, Here we go. We all know that having
rigorous processes as individual contributors and organizations is
important. It's what enables us to deliver quality software in a
timely fashion and bring value to our customers.
However a lot of people, including some very experienced engineers,
seem to think that how we get there is some kind of magical journey to
another dimension, only attainable by the assistance of some wizard or
But the cold, hard, in-sexy truth is that it's all about
discipline. Doing precisely the same set of things over and over again
until they become second nature, "baked in" whatever you want to call
Let's take code reviews as an example. I can't even begin to tell you
the difference I've seen between strong organizations and weak ones,
and almost inevitably, how teams handle code review is the canary in
the coal mine.
I'm not suggesting that code reviews in and of themselves are some
kind of magical panacea that will make your organization great, but
chances are good that if you're doing regular code reviews with every
merge, you're also doing testing. If you're doing comprehensive
testing, you're probably also taking the time to write good
documentation. The list goes on and on.
Everybody knows these are good things, but why are so many
organizations slow to adopt them? Well, as usual with such things,
It's Complicated. One contributing factor is definitely team size
versus work load, as outlined in the section on Resources.
Individual contributors who are working straight out all the time
aren't going to take the time to do proper code reviews, and chances
are good that in such organizations, their managers won't be pushing
for them either. It's a kind of myopia that cripples teams and
actually hurts the business both short term and long. Some people are
beginning to see that, but it's something we should all be aware of
and actively promoting within our organizations wherever we are on the
This is about vision. I know, we've all had that
word misused, abused, and generally beaten to death so much over the
course of our careers that most of us cringe when we hear it. However
no other word embodies what I'm trying to get at in quite the same
In order to form a cohesive unit - something we all agree is critical
to success, we all have to know where we're going. What precisely are
we trying to build, and why? Where's the value for our customers, and
where do we see our product going in the future?
I've encountered many organizations where this isn't clear at all, and
when that happens, a sort of spiritual malaise sets in. It's like a
disease, spreading up through the ranks and sapping job satisfaction
and pride in workmanship.
Fixing things once your organization has gone this way is hard. I
mean, really hard, because regaining the trust of your team is not
something you can do over night. You'll need to overcome years of hard
earned scar tissue before people will be able to have the confidence
in you and your product that are necessary for success. There are no
clear cut prescriptions to make here, because each organization's path
to healing will depend on the nature and scale of the wounds.
Much easier to start on the right foot and stay that way. Doing so is
actually straight forward. The key is having a clear vision yourself,
and communicating that with your team.
I realize our business is a harm scarum one and that changes in
direction are not only inevitable but desirable to meet changing
conditions in the field, but how those changes are handled and the
frequency with which they occur can mean the difference between an
organization that thrives and a cadre of walking wounded, shambling
from one death march to the next until they take too much damage and
decide to ply their trade elsewhere.
Hiring and layoffs are another aspect of employee trust whose import
should not be underestimated. When you hire, hire for the long haul
or be crystal clear about what your expectations are "We're trying
this risky new thing and you're here to make that happen. If it
doesn't work out, we may need to go our separate ways." I can't
imagine anyone who wouldn't appreciate knowing that up front, and if
they have even a tiny amount of character and maturity, if that's the
way it plays out when the time comes, you can walk away friends. It's
a booming industry out there and there are no shortage of jobs.
If they must happen, layoffs should be handled quickly and
professionally. You need to be crystal clear with both the people
being laid off and the people left behind as to why this is happening
from the perspective of the business. The people who are left will be
nervous and unsettled, and they'll be able to recover much more
quickly if everything is handled in an above board way.
Again, don't lie. If you need to lay people off, and you have a
flexible schedule in your office, by all means do send out mail
saying "mandatory meeting at X time" to be sure everyone will be in
the office, but don't tell those being laid off that it's a meeting
about something else entirely. They will resent you for it.
Crystal clear, honest communication and clear vision will result in
enthusiastic employees who are excited at the prospect making their
company a raging success.