April 9, 2012
There’s an excellent interview of Ward Cunningham at InfoQ (Nov 2011). He talks about agile, wiki’s (including smallest-federated-wiki), meta-programming, CoffeeScript, but mainly about living as a developer. He is fascinating and motivating. Here are some of my favorite quotes :
On pair programming / social coding
I don’t think any developer really wanted to work alone, but they got a reputation as being loners that was unjustified because they did so much in their head.
On agile’s pace of development
I feel that the formulation of most Agile methods are a little plodding, you are coming in, you do the same amount of work every day, but you don’t have days go by where nothing gets done. Like the tortoise and the hair, and the tortoise wins the race, because the tortoise doesn’t get stuck.
If you say what is the business need and what can we do, and if we know what we don’t know and we make a plan for that the next week, and then just work away and don’t apologise for what’s there, don’t promise things you don’t know you can do, in earnest, chip away at it.
Just know more tomorrow than you know today, and that can be about the code that you have to work with or what the real needs are. And that is the basis of anything Agile, and that can be applied anywhere.
On technical debt
If you want to go fast you take some debt. But the misunderstanding was that people thought that you never have to pay it back. If you are going to take on debt you have to pay it back or you go out of business. It’s called bankruptcy and there have been plenty of bankrupt projects.
.. in something as complex and as multidimensional as product design, there is a lot of ways to approach it and sometimes if you just step back and say “This way is just a slug, I wonder if there is a shortcut going around this way”, and like I say the computer is really powerful, how can you have that computer help you in a way that most people wouldn’t think that they are allowed to program.
On the link between wiki’s and agile
if you think about [wiki] what it really does is, how can we make a database useful when the database is incomplete? Well that’s exactly the same as how can we make a computer program useful when the computer program is incomplete. Agile is all about first iteration, you make something that works, and then you add more to it, so you grow it. Well wiki is the same thing, how do I make a database of ideas in my company, that’s incomplete but still useful enough that people want to add to it?
Hang in there. I’ve devoted my life to programming, I think programming is one of the most powerful ways you can exercise your mind. I found that I can do a day job and serve whoever is paying my salary in a way that respects their goals, and still have energy left at the end of the day and do things just to please me. Or to please people who know me.
And I would say that Agile is a pretty marvellous set of values, I say open source is a different but pretty marvellous set of values and both of them are based on understanding code. So I say don’t hesitate to learn more about code, don’t hesitate to do it in an Agile way, do it test driven, maybe work with friends, but don’t hesitate to open it up.
I think that it’s easy to be overwhelmed you say “Gosh I just learnt this and now it’s that”, but I tell you, you put two days into studying something and you are already half way to expert. Stuff is coming out that fast, take the time and there is great blog posts on stuff and learn something new every week.
On CoffeeScript and the browser environment
Coffee Script and the environment will all the powerful browsers is the closest I’ve felt to the power I had twenty years ago in SmallTalk. But it’s not in one machine for one person, it’s on the whole world for the whole world. And I am excited to go down the stairs because there is a lot more to Coffee Script than I even knew and I learned it last night and I am going to go apply it and in another week I will be an expert. And you can do it too.
And we are all programmers, so let’s program.