Dr John Vlissides, working out of IBM’s Thomas J. Watson Research
Centre in Hawthorne, is one of the celebrated ‘Gang of Four’ – a
co-author of the modern classic ‘Design Patterns: Elements of
Reusable Object-Oriented Software’. His most recent work is ‘Pattern
Hatching: Design Patterns Applied’.
1. What was the first computer you worked on?
If by ‘computer’ you don’t mean programmable calculator, then
that would have to be a CDC 6400. But my first exposure to
programming was an Olivetti something-or-other in 7th grade. I had
no idea what I was doing, but it sure beat taking tests.
The first thing I programmed sentiently was a friend’s dad’s
HP-55 a couple of years later. That got me hooked on programming. I
promptly joined the HP-65 Users Group without letting on about my
age and without owning a HP-65 – I just ran the code in my head.
After months of dropping hints, my father bought me my very own
HP-25, and my hacking days began in earnest.
2. What was the first computer language you worked in?
My first ‘high-level language’ (as opposed to machine language)
would have to be Fortran, circa 1979. But I wrote countless
thousands of lines of code for HP and Wang calculators before
that.
3. How many computer languages have you used? Are you still
fluent?
Sheesh, I dunno; I’ve never taken inventory. But I guess now’s as
good a time as any.
In order of increasing use, I’ve coded in SNOBOL4, Smalltalk,
APL, Ada, LISP, Basic, Pascal, Java, Fortran, C, Modula-2 and C++.
I’m probably leaving out some, and I’m definitely leaving out
assembler and programmable calculator code. I’m fluent in all but
the first five.
4. What was the last program you wrote?
My last significant piece of code was part of a system for
visualising the execution of Java programs (www.research.ibm.com/jinsight).
That was almost three years ago, I’m sorry to say. Since then
I’ve built only toys and counter examples.
5. What was the most difficult project you worked on?
Probably Unidraw, a drawing editor framework I did as part of my
Ph.D. I burned more midnight oil on that than anything else.
I hasten to add that very few projects have been fundamentally
difficult, as in mind-bending algorithms or concepts. The
difficulties have been more operational – configuration control,
maintenance, bug fixing, backward/forward compatibility, people
management. It’s the difference between accidental and essential
complexity that Brooks talks about.
6. Are the best software developers born or made?
Made, mostly. Some people are better wired for software
development, but I believe anyone can do it with enough training.
Yet the people who do it best are those who fall in love with it,
just like anything else: their love impels them long after most
people sputter and poop out. That sets them apart largely
independent of their intelligence.
7. Which one aspect of the software industry would you change, if
you could?
Managerial ignorance and apathy. It’s hard to come by managers
who have a passion for people and technology. Too many have
lost touch with either or both. You can’t have great software
without great management, even if it’s largely spiritual as with
Torvalds and Jobs.
8. What advice would you give to someone starting in software
development today?
Keep everything in perspective. Don’t sacrifice your family on
the altar of career. Work as much as possible, but not more so.
(That is, 40 hours a week should be plenty if you don’t waste
time.)
9. What is your proudest accomplishment, within IT?
The Design Patterns book.
10. What is your proudest accomplishment, outside of IT?
Talking my wife into marrying me, and the children we’ve since
been blessed with: Matthew, Helen, Mark and the new arrival slated
for September.
11. If you didn’t work in IT, what would you be doing
today?
Probably designing antennas. My training is in electrical
engineering. In fact, software was always something I did for fun. I
didn’t switch to computer science until the Ph.D. level, and even
there my degree is officially in EE. How many disciplines let you
get away with that?
12. Commercial, shareware, freeware, Open Source?
My high school English teacher would disapprove of that sentence,
but I think the answer is ‘yes’. My graduate research was open
source before open source was cool (the mid ’80s), and so of course
I’m a big proponent. There’s a place for each of the others,
too.
13. How do you react to the flames of language wars?
I don’t get involved.
14. What is your favourite book?
The Bible, droll as that may seem to those who’ve never studied
it.
It’s tough to pick a number-two – there are so many. I must have
read Kidder’s The Soul of a New Machine a hundred times as I
wrote my dissertation. It’s a story of a Herculean effort I could
commiserate with, and still do now and then.
15. What is your favourite film?
Another tough one. I’ve probably seen It’s a Wonderful
Life more times than any other, yet I would hesitate to say it’s
my favourite. But the title certainly fits my experience. For sheer
coolness, 2001 is tough to beat.
16. What is your favourite website?
I probably visit news.com more than any
other. Amazon is a close second. And as a Chrysler fan from way back
(it hasn’t always been easy), I follow http://www.carandtrucknews.com/
pretty closely.
17. What is your latest gizmo?
A stubby antenna for my StarTAC. Hint: Don’t waste your
money.
18. Systems or applications? Which do you build?
Both, although as I’ve confessed it’s been too long since I built
a sizeable example of either.
19. Have you read all published volumes of The Art of Computer
Programming?
Heck no. Like 99% of computer professionals, I have copies on my
bookshelf but rarely look to them for technical insights. They’re
too steeped in the ’70s to be useful to me on that level. But they
have been a great source of writing inspiration. Their breadth and
depth and soothing prose are just awe-inspiring. I want to be like
Knuth when I grow up.
20. Anything else to be taken into consideration?
If you find Design Patterns daunting, check out Pattern
Hatching and ignore what I say on page 1.