[Insight-developers] Learn to Love Maintenance !
Luis Ibanez
luis.ibanez at kitware.com
Mon Apr 19 14:27:50 EDT 2010
* "Learn to Love Maintenance"*
http://www.kitware.com/blog/home/post/24
It is tip #27 in the book
*
"The Passionate Programmer"*
by Chad Fowler
http://oreilly.com/catalog/9781934356340
and it is indeed great advice!
*
"Though software developers are typically creative, freedom-loving people,
the programmer "society" is surprisingly caste-like. Programmers want to be
designers, who want to be architects, and so on. Maintenance work gives them
neither a notch in their belts nor a clear, elevated role (such as
'architect') that they can tell their parents or college buddies."*
Says Fowler... and he adds
*
"The irony surrounding the project vs. maintenance split is that project
work is maintenance. As soon as your project team has written its first line
of code, each additional feature is being grafted onto a living code base.
Sure, the code might be cleaner or there might be less of it than if you
were working on a legacy application, but the basic act is the same. New
features are being added to and bugs are being fixed in exiting code. Who
knows how to do this better and faster than someone who has truly embraced
maintenance programming and made it a mission to lean how to do it well?."
*
I will go further, and claim, that no developer can achieve Mastery of her
craft unless she has first made her time on maintaining someone else's code.
Only by doing maintenance you can learn about
- Bad coding
- Bad design
- Bad architectures
- Poor build configuration systems
- Insufficient testing
- Feature creep
- Bad documentation
- Poor team coordination
- Bad Copyright and License checking
- Bad project management
and develop the necessary *Passionate Hate *for each one of those items that
will drive you to recognize their manifestation in any other piece of
software that you or others write, and to fight for their final obliteration
into the dark vacuum of deep space.
Only by suffering through *Valley of Maintenance* you will develop the pride
to say: "This will not happen on *my watch*".
Maintenance is the software activity that brings you closer to your users,
it connects you to the daily reality of software use, and exposes, for you,
all the limitations of the software, its ambiguities, and shortcomings.
Maintenance is the place where you realize what things should have been done
differently. It is also the place where you realize what needs to be changed
in order to better satisfy the needs of your users.
Maintenance is the place where you hunt and kill bugs, and in the process
you learn about their life cycle, their feeding habits, their behavior in
the wild, the places where they use to hide, and how they breed, replicate
and evolve. Such experiences enrich and inform your decisions when you
design and implement new pieces of software, or when you refactor old ones.
Maintenance is how you develop the eye to recognize when something is done
wrong and, by contrast, you will be able to write software of outstanding
quality, since your eyes will not rest until there are no traces left in
your code of any of the bad things that you have seen crippling other pieces
of software.
*Learn to Love Maintenance !*
...since the only other option
is to get used to design and write software
that people use *only once*...
and that is a very pointless life to live.
-------------
http://www.kitware.com/blog/home/post/24
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/mailman/private/insight-developers/attachments/20100419/2cbb2464/attachment.htm>
More information about the Insight-developers
mailing list