ApacheConNA: On delegation #
In her talk on delegation Deb Nicholson touched upon a really important topic in
OSS: Your project may live
longer than you are willing to support it yourself.
The first important point about delegation is to
delegate - and to not wait
until you have to do it. Soon you will realise that mentoring and delegation
actually
is a way to multiply your resources.
In order to delegate people to delegate to are needed. To find those
it can be
helpful to understand what motivates people to work in general as well as on
open source in particular:
Sure, fixing a given problem and working on great
software projects may be part of it. As important though is
recognition
individually and in groups of people.
Keeping that in mind, ``Thanking'' is actually a
license to print free money in
the open source world. Do it in a verbose manner to be believable, do it in
public
and in a way that makes your contributors feel a little bit of glory.
Another way to lead people in is to
help out socially: Facilitate connections,
suggest connections, introduce people. Based on the diversity of the
project
you are working on you may be in a way larger network and have access to much
more corporations and
communities than any peer who is not active. Use that
potential.
Also when leading OSS projects keep
in eye on people being rude: Your project
should be accessible to facilitate participation.
In case of
questions treat them as a welcome opportunity to pull a new
community member in: Answer quickly, answer on your
list, delegate to middle
seniors to pull them in. Have training missions for people who want to get
started and
don't know your tooling yet. Have prepared documents to provide
links to in case questions occur.
In
Apache we tend to argue people should not fall victim of volunteeritis.
Another way to put that is to make sure to
avoid the licked cookie syndrom:
When people volunteer to do a task and never re-appear that task is
tainted
until explicitly marked as ``not taken'' later on. One way to automate that is
to have a fixed deadline
after which tasks are automatically marked as free to
take and tackle by anyone.
When it comes to the
question of When to write documentation: There really is
no point in time that should stop you from contributing
docs - all the way from
just above getting started level (writing the getting started docs for those
following
you) up to the ``I'm an awesome super-hacker'' mode for those trying
to hack on similar
areas.
Especially when delegating to newbies make sure to set the right expectations:
How long is it
going to take to fix an issue, what is the task complexity, tell
them who is going to be involved, who is there to
help out in case of road
blocks.
In general make sure to be a role model for the behaviour you want in
your
project: Ask questions yourself, step back when your have taken on too much,
appreciate people stepping
back.
Understand the motivation of your new comers - try to talk to them one on one
to understand
their motivation and help to align work on the project with their
life goal. When starting to delegate, start with
tasks that seem to small to
delegate at all to get new people familiar with the process - and to get
yourself
familiar with the feeling of giving up control. Usually you will need
to pull tasks apart that before were done by
one person. Don't look for a
person replacement - instead look for separate tasks and how people can best
perform
these.
Make visible and clear what you need: Is it code or reviews? Documentation or
translations, UX
helpers? Incentivise what you really need - have code sprints,
gamify the process of creating better docs, put the
logo creation under a
challenge.
All of this is great if you have only people who all contribute in a
very
positive way. What if there is someone who's contributions are actually
detrimental to the project? How to
deal with bad people? They may not even do
so intentionally... One option is to find a task that better suits
their
skills. Another might be to find another project for them that better fits
their way of communicating. Talk
to the person in question, address head on
what is going on. Talking around or avoiding that conversation usually
only
delays and enlarges your problem. One simple but effective strategy can be to
tell people what you would
like them to do in order to help them find out that
this is not what they want to do - that they are not the right
people for you
and should find a better place.
More on this can be found in material like ``How
assholes are killing your
project'' as well as the ``Poisonous people talk'' and the book ``Producing
open source
software''.
On the how of dealing with bad people make sure to criticise privately first,
chack in a
backchannel of other committers for their opinion - otherwise you
might be lonely very quickly. Keep to criticising
the bahaviour instead of the
person itself. Most people really do not want to be a jerk.