Whilst pushing new methodologies into a software development team, one should understand the difference between methodologies of team relevance and of individual taste…
At least in my small software developer’s world, I observe some controversy on how a
team
is to do software development the right way and whichmethodologies
ateam
got to adopt. Overstating the case (yes, I am guilty), opinions regarding software developmentmethodologies
might look as follows:
- “… our
team
must doTest-driven development
- we areTDD
…” - “… we ought to integrateTDD
into our development process ‘cause that’s howindividual
developers will deliver better results - period!” - “… living the spirit of
Kanban
means that theteam
must doCode Kata
to get better …” - “… practicingCode Kata
is the way for you developers to get a good coder …” - “…
Scrum
is the way (methodology
) we organize our software development process …” - “… our team is settled uponagile
software development for seamless teamwork…” - “… coding is done in our company by strictly doing
XP
…” - “… everyone must dopair programming
to deliver better code …” - “… you’ll get your work done when you are confessed to
GTD
…”
You might have heard them statements above here and there? I surely have. It is on the team
to do this, it is on the team
to do that. You may truly believe that the one or the other statement hit the bull’s eye? You think if everybody in the team
would obey them above stated methodologies
, the team
would finally deliver good software (as of your point of view)? … You feel uncomfortable with (some of) them statements?
Are all statements above correct or is none correct? Have you noticed that I highlighted
the words team
, individual
and methodology
throughout this text? To me it seems that the answer can be boiled down to those three keywords and the question:
What do the above mentioned
methodologies
have in common? Where are the differences? Is there any differentiation regarding theteam
, theindividual
and everything in between?
The buzzword cloud
Let’s take closer look at the buzzword cloud of methodologies
to be applied to a team
:
Agile
Scrum
Kanban
Code Kata
Coding Dojo
Test-driven development
TDD
Extreme programming
XP
Pair programming
Getting Things Done
GTD
I experienced that supporters of the one or the other methodology
from above believe in them in terms of an ideology. As of discussions I observed, I got the impression that the ideological view on them methodologies
gets vastly overemphasized, underemphasizing other aspects.
I believe each of the
methodologies
from above has its right to exist, though take care to take anexperienced
look at your givencircumstances
…
Are we all equal?
I observed that there is a big misunderstanding between the methodologies
for the team
to work together seamlessly and the methodologies
for the individuals
organizing and structuring their own work and the methodologies
for individuals
teaming up. Them methodologies
seem to be considered applicable to a team
as a whole. This leads me to the question: Are we all equal? Can a methodology
be expected to work for each individual
the same, if we only try hard enough? I don’t think so. Let us take a closer look at the team
and the individuals
of a team
teaming up:
The team
The team
is represented by all the participating individuals
. It somehow has to organize its goals to get some deliverable in time and in money.
The individual
The individual
has talents
, weaknesses
, strengths
, preferences
as well as antipathies
, not to forget the individual
’s experiences
. Just to mention some characteristics where individuals
differ from each other.
In the 1970s, the discipline of the Psychology of learning worked out the concept of learning styles (Lernstile), identifying three learning modalities:
- Visual: The
individual
prefers digesting information in avisual
style. Such as working out amind map
. Such as drawing aUML
diagram. Such ashighlighting
a text’s passages of importance. Or such asmentally visualizing
the circumstances of interest. - Auditory: The
individual
prefers digesting information in anauditory
style. Such as explaining issues to anotherindividual
. Such asreading aloud
a text’s passages of importance. Or such asrecording
relevant issues on tape. - Kinesthetic: The
individual
prefers digesting information inkinesthetic
style. Such as being inmotion
whilst working on topics of relevance. Such as writing down keywords onpost-its
. Or such asticking off
digested issues of importance.
Guess what? Not everybody equally prefers the same mixture of them learning styles. Oversimplifying - for the techies amongst us - an individual
may be 65% visual
, 25% auditory
and 10% kinesthetic
whereas another individual
may be 30% visual
, 55% auditory
and 15% kinesthetic
.
The
team
consists ofindividuals
who are not equal and not equally exchangeable.
Individuals teaming up
Now often individuals
work together in small groups to accomplish some goals. They team up
and have to find a way (methodology
?) on how to best challenge the given goals.
Methodologies
Methodologies
give you a good guideline, being a set of balanced best practices, on how to accomplish a goal.
Methodologies
can be seen as a tool-set tackling various differing types of challenges.
So let’s take a closer look at them methodologies
and how they team up with an individual
and the team
and everything in between there:
- Some
methodologies
are relevant for theteam
- Some
methodologies
(may) belong to theindividual
’s tool-set - Some
methodologies
are a good approach forindividuals
teaming up.
What I am missing is the classification of
methodologies
such as:Team methodologies
,Personal methodologies
andTeam-up methodologies
.
Categorizing methodologies
Let me catch up on this. Oversimplifying I would categorize the methodologies
as follows:
- Team methodologies:
Team methodologies
are applicable to ateam
as a whole. Theteam
knows and has to know the rules of themethodology
in question in order for theteam
to work together seamlessly. - Personal methodologies:
Personal methodologies
are adoptable by anindividual
supporting thatindividual
coping with daily business. Whetherpersonal methodologies
are applicable depends on the bias of thatindividual
. Theindividual
should have knowledge on thepersonal methodologies
out there for choosing the ones which individually fit best. Though anindividual
cannot be demanded to adopt a givenpersonal methodology
. - Team-up methodologies: The
team-up methodologies
are applicable to a group ofindividuals
teaming up to challenge a given goal. Whichteam-up methodology
to use for a given group ofindividuals
teaming up depends on the mixture of biases of thoseindividuals
. Theindividuals
should have knowledge on theteam-up methodologies
in order to decide which one suits them. They “speak the same language” which makes finding the best approach (team-up methodology
) much easier.
“… As of the categorization from above, many
methodologies
are wrongly considered as beingteam methodologies
…”
Methodology categorization table
Below find a table which categorizes the mentioned methodologies
accordingly:
Team methodology | Team-up methodology | Personal methodology | |
---|---|---|---|
Scrum |
X | ||
Coding Dojo |
? | X | |
XP |
X | ||
TDD |
X | X | |
Code Kata |
? | X | |
GTD |
X |
What do I think?
Let me examine the statements right at the beginning of this text. Here some individual
seems to propose methodologies
which that individual
believes are good for the whole team
and therewith for all the individuals
building-up the team. As of the categorization from above, many methodologies
are wrongly considered as being team methodologies
:
1. “… our
team
must doTest-driven development
- we areTDD
…” - “… we ought to integrateTDD
into our development process ‘cause that’s howindividual
developers will deliver better results - period!”
TDD
should belong to an individual
’s tool-set; also for teaming up. TDD
in conjunction with REST
enables unexperienced developers to magically build good interfaces. The more software designing experience you have, the less you require to follow TDD
in every detail. For my taste TDD
is a tool one can use to solve a problem in a well structured manner
I am the
visual
kind of person, so I happily do software design and sound interfaces usingUML
. By the way, what happened to the cool round trip engineering tools likeTogetherJ
andTogether Control Center
?
I guess an experienced developer picks some TDD
best practices for her / his individual
’s tool-set. With TDD
the junior is taught on how to approach a problem in a well-structured manner. It is not a team methodology
.
2. “… living the spirit of
Kanban
means that theteam
must doCode Kata
to get better …” - “… practicingCode Kata
is the way for you developers to get a good coder …”
A Code Kata
every now and then can be fun, especially doing it with other developers, exchanging ideas.
Being
Code Katas
an event for exchanging ideas looks fine to me.
I also believe that a good developer is a curious and creative developer. Always trying to find out new and better ways to solve some problem. Therefore a good developer won’t need Code Katas
to try out different solutions for a given problem. An experienced developer most probably mentally tries out various approaches before deciding on one or two of them; given that the experienced developer is a good developer ;-). Same again: Code Katas
are not mandatory. Each individual
in the team
should know on Code Katas
and that them are a tool which one might use to sharpen one’s skills; keeping in mind that it’s not everyone’s cup of tea. It is not a team methodology
.
3. “…
Scrum
is the way (methodology) we organize our software development process …” - “… our team is settled uponagile
software development for seamless teamwork…”
Now we got a team methodology
whose tool-set and roles are to be known by the team
. As it is a team methodology
it is mandatory - nothing much more to say.
4. “… coding is done in our company by strictly doing
XP
…” - “… everyone must dopair programming
to deliver better code …”
A very individual thing, there are some factors which influence whether XP
will work for two individuals
teaming up or not. So it is very much up to the individuals
in question whether they want to practice this team-up methodology
. As dislike or affection regarding XP
is very individual, it should not be treated as a team methodology
. Being a team-up methodology
it should be up to the individuals
whether they want to practice XP
on a regular basis.
5. “… you’ll get your work done when you are confessed to
GTD
…”
It’s a good thing to know how Getting Things Done
works. Each individual
might pick some best practices working best for her / him. By the way: Decades before, secretaries applied similar schemes to get their filing system organized. As each individual
is different, there is not one way which is the right way to get things done. Some people can keep everything up in their brains not forgetting anything. Usually people believe that they can remember everything, usually they are wrong - and it would be a good idea for them to take a look at GTD
…
Upshot
Actually methodologies
are all about structure. Unexperienced developers need more assistance for structuring their work than experience ones need. So the personal methodologies
and the team-up methodologies
are good exercises to teach on how to tackle a problem in a structured manner.
Methodologies
should make appetite fore more …
Regard methodologies
being a tool-set making the best of an individual
’s talents
, strengths
, preferences
and experiences
. One cannot level out each individual
to like or dislike the same things, to have the same experiences and so forth. Trying to push personal methodologies
into a team
most probably will fail. Pushing team methodologies
successfully into a team
requires you to take a close look at the team
constitution (the individuals
) for you to apply the right adjustments to them team methodologies
.