About the Book
Mankind has invested vast resources (time, manhours, computer machinery
sunk costs, maintenance, building space, heating, venting, cooling, and so on)
into software for all kinds of digital and analog hardware for over sixty years.
Far longer if you consider punched cards, and so on. In the end, most of the
source code ends in the waste heap of history. Old code gets forgotten, rub-
bished, and a new wave of developers is forced to recreate new versions of old
ideas. People get promoted, graduate from college, and leave to get married;
before they do they don’t have time, don’t believe in the priority, and don’t
place the code where others can find it to make an important curation of their
software; and by this donate it to future generations, worldwide, the society at
large. If organizations, at the other end of the spectrum, would realign software
for a legacy of centuries instead of product runs, mankind can preserve the sunk
costs, speed up advancement, and make software impact far wider when it’s
made in a reusable form. People move to a new job, and remake linked lists,
factory classes, or ring buffers in the new language of the day, or within the
design paradigm of the latest fad management.
It’s kind of insane when you think about it, people spend many years getting
a consumer product working, finely tuned and profitable. Then two companies
merge, product lines are unified or obsoleted, and some or all of the intellectual
property gets forgotten in a corner as one team is merged and the others retire
to golf, or the pool. While filling in cardboard boxes of stuff as they leave, does
anyone drag out the old tapes and floppies to make sure the new guys aren’t
starting by reinventing the wheel?
Why? The culture has a serious misunderstanding of where the value, where
the intellectual property comes from and where it gets stored. This wasteful
malaise needs to change.
This book is a launching point, not a destination. It is designed to evolve in
small, incremental ways along with your reusable software development guide-
lines, over many years. From novice coders starting out to experienced, and
jaded, software managers; all practical and technical issues are presented in
two natural layers ( for the simplest stratifications - explained in Section 8)-
one, the manifesto paints broad strokes in a proscriptive manner about how
to steer your organization gradually towards code for longevity, and two, the
toolbox brings together a set of free tools to get you started, a bunch of tried
and true realities about what makes sense while plumbing inside someone else’s
code, and realistic high level strategies to make sense of what you find. There’s
no practical way for this small book to cover every topic fully, the manuals
alone for autotools are several thousand pages. But the goal is a comprehensive
perspective, and that can be achieved, quickly.
This book provides a wider perspective, by looking back on the history of
software reuse, and the development cycle not as a painful target to meet and
then forget, but as a stepping stone that brings on differing teams, ramping
up and ramping down, to meet the custom needs of every stage of software.
Doesn’t that sound more productive, on the face of it?
Maintenance was the old end of software development, the goal of software
reuse is to make all software a continual maintenance cycle for mankind. The
goal is to accelerate the next generation farther and faster, perhaps into the
stars. But even in a humble grounded form, make impacts felt worldwide.
Easier to start, longer to impact, cheaper to deliver. The goal of all software
reuse: to untrap all the value stored there by society.
For each chapter, I parallel the main ideas of reuse with a Buddha koan.
Enigmatic ideas smashed together like koans are like the perfect proscriptive
advice: they present paradoxical and enigmatic ideas that appear ungrounded
in the importance of the day, until you wander into a situation, perhaps a con-
flict of ideas, and the answer leaps out of the confusion - linked to your brain by
the wise words of a koan. It all becomes clear, with time, patience, and practice.
Like the discipline needed to transform people’s habits to instill software
reuse, Buddhism is a practice. It is a “life raft built for one”, as the expres-
sion goes. There are many aspects, many dimensions, to consider as important
factors in making software more useful to a wider group. Like any discipline,
there will be areas people stumble, and other areas where people excel, and
areas that take a great deal of resources to conquer. And conquer them you
shall, with some humble guidance and a positive outlook.
About the Author
Dave Erickson has been a soldier, scientist, engineer, and mercenary. But he's also a coach, a father, and an all-round likeable guy. No one knows why.
He is a student of tactics and Buddhism. Yes Buddhism.
He applies sober scientific strategies to break a problem into it's constituent parts and then reconstruct it again with new perspective. He goes where the truth takes him.
He wants to make sure you are happy with the book. Please email me directly at firstname.lastname@example.org if you have any questions, comments, concerns, or ideas to improve the book.