[Boulder.pm] Academic vs Production Code

Rob Nagler nagler at bivio.biz
Mon Aug 27 10:15:04 PDT 2012


> They're still not teaching version control? (ANY version control system?) Isn't this like an art student having no concept of a paint brush?

It's interesting you choose this analogy.  In Hackers and Painters,
Paul Graham whom I'm respect highly doesn't mention version control:

http://www.paulgraham.com/hackpaint.html

He also doesn't mention testing either.  Paul Graham is a penultimate
hacker, an absolute genius of creating abstractions.  However, he
doesn't know how to run a software business that lasts more than a few
years.  Y Combinator is about making money with technology solutions,
not about software longevity.  Joel Spolsky, I suspect, understands
the longevity issue, but doesn't get the abstraction part.

There are some practical aspects of programming such as version
control, testing, and so on.  There are also some artistic aspects of
programming, such as, "test what is likely to break", OAOO, and
TIMTOWTDI.  I'm not concerned about the practical aspects.  They are
easy enough to learn, and I would expect companies to train people in
their methodology anyway.  It's quite similar to understanding a
business, and why we train people in The Great Game of Business (see
book by that name).  I don't expect people to understand how business
works, although I consider it essential to writing good software.

What disturbs me is the knowledge that Paul Graham provides in his
books are not well-known.  There are some crucial ideas about creating
software that most programmers don't understand at all -- to the point
of not even understanding the words used.  They are native to the
culture of Lisp, and should be in all dynamic language cultures.

One of my ideas of how to remedy this problem is to teach a course on
refactoring which takes OSS packages, and has students applying the
skills of OAOO, IMTOWTDI, and three strikes rule to get a grade.  Most
software can be refactored to about 1/10 the size.  This isn't a big
effort, and it can be done in a short projects.  For example, I took
Mail::POP3Client and trimmed it down in my book
(http://www.extremeperl.org/bk/refactoring).  There are a number of
aspects of being a programmer-artist which are important and go
untaught in companies and universities.

No time right now to do this, but someday...

Rob


More information about the Boulder-pm mailing list