<strong><br> "Learn to Love Maintenance"</strong><br><a href="http://www.kitware.com/blog/home/post/24">http://www.kitware.com/blog/home/post/24</a><br><br><br>It is tip #27 in
the book<br><strong><em><br>"The Passionate Programmer"</em></strong><br>by
Chad Fowler<br><a href="http://oreilly.com/catalog/9781934356340" target="_blank">http://oreilly.com/catalog/9781934356340</a><br><br>and
it is indeed great advice!<br><em><br>"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."</em><br><br>Says Fowler...
and he adds<br><em><br>"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?."<br></em><br>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.<br><br>Only by doing maintenance you
can learn about<br><ul><li>Bad coding</li><li>Bad design</li><li>Bad
architectures</li><li>Poor build configuration systems</li><li>Insufficient
testing</li><li>Feature creep</li><li>Bad documentation</li><li>Poor
team coordination</li><li>Bad Copyright and License checking</li><li>Bad
project management</li></ul>and develop the necessary <strong>Passionate
Hate </strong>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. <br><br>Only by suffering through <em>Valley of
Maintenance</em> you will develop the pride to say: "This will not
happen on <strong>my watch</strong>".<br><br>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.<br><br>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.<br><br>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.<br><br><strong>Learn to Love Maintenance !</strong><br><br>...since
the only other option <br>is to get used to design and write software<br>that
people use <strong>only once</strong>...<br><br>and that is a very
pointless life to live.<br><br><br><br>-------------<br><a href="http://www.kitware.com/blog/home/post/24">http://www.kitware.com/blog/home/post/24</a>