The Agile Developer's Life: issue 2 July 30th 2003
From Dave Kirby - The Developers' Coach
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Introduction: What's in a name?
Welcome to the second edition of The Agile Developer's Life -
formerly called The Agile Life. I have decided to change the name
to emphasise the fact that its focus is on issues that affect
all aspects of software developers' lives and is not just concerned
with agile development methods. I believe that many software developers
are not too concerned about what many perceive as the latest 'fad'
methodologies, but do want concrete ways of making their lives
easier and less stressful.
So what is an 'Agile Developer'? Some years ago I worked with
a C++ programmer who took pride in the fact that he had learnt
just enough C++ to do his job, and studiously avoided learning
any new language features or techniques that would take him outside
his comfort zone. The idea of learning a new language such as
Java was abhorrent to him. He is probably still in the same job,
writing exactly the same programs in exactly the same way as he
was back then. An agile developer, on the other hand, prides himself
or herself on being flexible, and is constantly looking for new
ways of working, or learning new languages, skills and techniques
to add to their toolbox. Being flexible means not being hung up
on the one 'right' way of doing something, but being willing to
explore alternatives with an open mind and with a view to continually
improving what you do and the way that you do it.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Article: Creativity in Software Development
Many years ago, I worked as a programmer for a multimedia company
that produced CD Rom software for the education and home markets.
There were a mixture of programmers and artists who worked together
to produce the products. The company was owned by a former graphic
artist and on several occasions I heard him showing people round
the offices. He would point to where the programmers sat, and
say "over here is where the programmers work", then
he would point to the artists' area and say "and over here
sit the creative people". I would sit there gritting my teeth
and fuming. The idea that software development could be a creative
process would never occur to him, and I am sure this attitude
contributed to the low morale and high turnover that the company
suffered from.
I believe that software development is an intensely creative
activity, on a par with writing a novel or painting. You are taking
something that exists only as an idea in your head, and turning
it into reality.
Over the last few decades a lot of research has been done on
the psychology of creativity, and much has been written on the
subject. It used to be believed that creativity was a purely innate
talent, but now it is known that creativity is a skill, and like
any other skill it can be learnt and improved through practice.
There are now a huge number of techniques for becoming more creative,
and countless books on the subject.
There are a lot of creativity techniques that have been developed
over the years, but they all essentially fall into two groups
- conscious techniques and unconscious techniques.
Conscious techniques work by focusing the conscious mind on specific
questions or areas of the problem to be solved. An example of
this is the SCAMPER technique, based on work done by Alex Osbourn
in the 1950s. It is often used for generating ideas for new products,
but can be used for any problem that needs a creative solution.
SCAMPER is an acronym for a set of transformations to apply to
the aspects of a problem to find potential new solutions:
S - Substitute. Can you replace one part of the problem with
something different?
C - Combine. Can you combine it with something else?
A - Adapt. Can you adapt a solution to a similar problem to this
situation?
M - Modify & Magnify. What happens if you alter one aspect
of the problem? What if you exagerate its size?
P - Put to other uses. Can you find another use for this product?
Can you apply the solutions you have to new problems?
E - Eliminate. Can you remove or minimise aspects of the problem?
R - Rearrange. Can you re-order the components in some way to
come up with something new?
Unconscious creativity techniques are those that use the power
of the unconscious mind to find new solutions to problems. The
simplest technique is incubation, where after thinking about the
problem consciously for some time, it is put to one side and left
for a while. Often a solution will pop into your mind unbidden,
as your mind continues to work on the problem below your level
of awareness. There are other techniques for utilising the power
of the unconscious mind to come up with creative solutions to
problems. For example the image streaming techniques of Wim Wender
- see http://www.winwenger.com/imstream.htm
for more information.
Here are some simple guidelines to help you become more creative
in your life:
1. Decide to be more creative. Creativity is essentially an attitude,
a decision to go beyond the obvious and find alternative viewpoints,
solutions, and ideas.
2. Think about your thinking. When tackling a problem take the
time to observe your own thought-processes and ask yourself: how
can I think about this differently? Is this the best approach?
What am I focusing my attention on? What else could I focus on?
3. Don't stop at the first answer - or even the first question.
The essence of creativity is to go beyond the obvious, and one
of the easiest ways of doing this is to never be satisfied with
what you already have but always look beyond for alternatives.
Set yourself a quota for the minimum number of solutions you must
find. If you force yourself to not stop until you have five, ten,
or even twenty alternative solutions then even though 90 per cent
of them may not be viable, you're still likely to have a better
solution than if you had just stopped at the first one.
4. Play with ideas. Play is a crucial part of creativity - taking
an existing idea and tweaking it, modifying it or combining it
with other ideas is a great way to improve on what you have. This
is the principal behind the SCAMPER technique.
5. Incubate. If you do not come up with an immediate solution,
then put the problem to one side and go and do something completely
unconnected with it. The solution will often come to you when
you least expect it, often in the middle of the night or on waking
in the morning.
6. Do something. The best ideas in the world are useless if they
are never acted upon. Even if the ideas you have are not ones
that you feel are particularly good, implementing them in even
a small way, such as a prototype, will give you valuable information
and may lead you on to more successful ideas.
7. Get a coach. A good life coach does not give you all the answers.
Instead, the coach will help you find your own answers by revealing
your thought processes to you and stretching you to go beyond
the obvious to find new, creative solutions. See the end of this
ezine for an exclusive special offer from The Developers' Coach.
8. Read up on creativity, thinking skills and problem solving
techniques. There are thousands of books out there on the subject,
so finding the best ones can be a daunting task. Here are some
of my favourites:
* Thinkertoys by Michael Michalko
This is a wide ranging compendium of creativity techniques. It
covers both conscious and unconscious techniques, including SCAMPER,
and has exercise for group creativity as well as techniques to
use alone.
Buy it from Amazon
US
Buy it from Amazon
UK
* Are Your Lights On? by Don Gause & Gerald Weinberg
This book focuses on the importance of defining the problem in
the first place - often by changing the definition of a problem,
it can virtually solve itself.
Buy it from Amazon
US
Buy it from Amazon
UK
* Programming Pearls by Jon Bentley
This is a book about programming, but much of the focus is on
finding creative solutions to programming problems. A must-read
classic for programmers.
Buy it from Amazon
US
Buy it from Amazon
UK
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Summer Offer:
I am offering a 25% discount on one-to-one coaching for subscribers
to this ezine up until the end of August. As your coach I can
help you design the life that you want to live and work with you
as you take action to achieve it. As an NLP life coach I have
the tools and techniques to enable you to make significant changes
in your life. As a developer with twenty years experience in the
IT industry I speak your language and know first hand the issues
and pressures that you may have in your life.
For more information on the coaching services that I offer, see
http://www.thedeveloperscoach.com/personal.htm.
To book a free introductory session email me at summer@thedeveloperscoach.com,
and mention this ezine to claim your discount.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This ezine grows by referrals. If you know others that may wish
to subscribe, please forward this on to them. If you have had
this forwarded to you, you can subscribe at http://www.thedeveloperscoach.com/AgileLife.htm.
Share and Enjoy,
Dave Kirby - The Developers' Coach