"I got into the whole IT business through a backdoor..."
JavaRanch: First things first. How do you pronounce your name?
Lasse Koskela: "Lasse Koskela" -- how else can you pronounce it?
JR: Let's start with your first name. Which syllable do you usually stress, the first or the second?
LK: I usually stress the first syllable. Except when in France.
JR: And your last name?
LK: First. I like being first. Although I seldom are.
JR: How old are you?
LK: I'm as old as Brandon Lee when he filmed "The Crow".
JR: What about your parents?
LK: Yes, they are old. And I don't think they've seen "The Crow".
JR: [Aside: Um, OK. Let's see what you'll get for your "Yes, they are old."] You were born in Finland, right?
LK: Right.
JR: What city?
LK: Helsinki. I was actually the first in my family to born in Helsinki. My mother moved there in her twenties and liked it enough to hang around.
JR: When you were six year old, you wanted to be ...?
LK: My mother used to tell me I wanted to be an architect. A building architect, that is. But I think she just wanted me to become one ;)
JR: You seem quite attached to your mother. [Aside: there!] And you went to the college to study ...?
LK: Yes. I went to the Helsinki University of Technology for a few years but dropped out as soon as I had studied all the useful-sounding courses. Working in the bubbling IT business was too exciting to pass out on and eventually ran over the studies.
JR: Tell us about your working in the IT bubble.
LK: First of all, I got into the whole IT business through a backdoor. I had been working for a couple of media companies writing news articles about the IT industry when I was offered the opportunity to maintain and develop one of the group's many websites. I took the chance. The site was implemented with PHP and the code was utter crap, although I didn't really understand the magnitude of that crappiness back then. I lasted there for some months before I decided to move on. I ended up joining one of the cool new media companies and started working on their two web-based products. That was the best move I could've made.
One of the products was a rather complicated implementation of an online collaboration desktop targeted at advertising companies and the other was an online printing service. Together these two products gave me quite good a maze to run through and I learned loads about a variety of Java-related technologies, common design patterns for web applications, JavaScript (back then we called it DHTML, not Ajax ;), and even C++ because part of the system was implemented in C++. Oh, that C++ code base was also horrible, horrible code but, in hindsight, it was fun to try and figure out what's wrong with that in-house PDF generation software when everyone else is on vacation and I'm looking at the code for the first time.
Around those times I worked practically around the clock on a computer--either at work or at home. I sometimes jokingly say that I got two days of working experience every day... I just couldn't resist the thrill of learning new stuff. I went back and forth between programming stuff in Java to figuring out more artsy types of technologies like Flash. This lunacy resulted in me implementing my own PNG, PDF and XLS generating libraries--that was the "file format era"--and a personal website with more animation than should be allowed by the law. Good times.
JR: Can you explain what is "Test-driven development" in one sentence?
LK: TDD is a development technique that helps you create and evolve a design in a highly disciplined, safe manner in small steps of writing a test, making it pass, and cleaning it up. How's that?
JR: Yes, that's one sentence... Next question: you wrote "Test Driven ..." because you wanted to write it? Your publisher wanted you to write it? Somebody else wanted you to write it? Whose idea was it anyway?
LK: I didn't really want to write it but the voices told me I should. I was afraid they'd tell me to do something bad if I didn't obey. Oh, and the publisher might've had something to do with it, too. Seriously, it all started thanks to Mike Curwen who acted as a matchmaker between myself and the folks at Manning. "Test Driven" wasn't actually the first book idea that was discussed. For example, we also briefly considered a book on continuous integration. I turned that down, eventually, as it looked like I was putting together a software manual. TDD, on the other hand, was a perfect match considering how influential it had been for my own development.
JR: Could you give us a brief tutorial on "How to write a programming book"?
LK: The most important thing to keep in mind is to type fast. If you have any technology-specific material, you'll end up rewriting significant parts of those sections every 6 months so you want to finish before the next wave of open source project releases wets your manuscript.
JR: What was your publisher's role in the whole process? What helped you most?
LK: One part of Manning's role in the whole process was to make sure I write a book and not a series of random articles. That is, the wonderful editors they assigned to my project kept reading my drafts and pointed out structural issues with the table of contents and so forth. They made sure that I'll close the wide gaps between sections that would confuse the reader and generally ensured that there's a clear path through sections, chapters, and parts. It's hard to say what helped me most because taking away any piece of the puzzle would have such a drastic effect on the quality of the book. If I'd really have to pick just one thing as the most helpful, though, I'd probably say it was the development editors' advice on writing well on the small scale--writing sentences and paragraphs that flow well and are easy to read.
JR: In your interview with JavaLobby you said: "Manning's editors did an amazing job in schooling me about the various techniques and nuances that make for a good text." Can you share one tip?
LK: When I had signed the contract, Manning shared with me their secret authoring toolbox that contained all kinds of guides, documents, that described what kind of text they are looking for, what kind of techniques an author can and should use, and so forth. For example, one of these techniques is called a "crutch".
JR: A "crutch"?
LK: Yes. A "crutch" is essentially an introduction based on a concrete example that highlights a problem that is difficult to solve without the to-be-presented concept. It's a technique for helping the reader reach the right frame of reference, understand why she should continue reading the section.
This is the kind of stuff that I hadn't really thought about before. It's like I "knew" the technique and sometimes used it without thinking, but I wasn't aware of what I was doing. This kind of small techniques really help stitch together a seamless whole and understanding them makes it that much easier to become a good writer. Some people have it in them and some have to learn it. I belonged to the latter group.
JR: This photo...
LK: That's me. My first "exit", as they say. I've only done that four times. I was supposed to continue this summer but tennis came into the picture and skydiving lost the duel.
JR: How did it occur to you to jump off the plane?
LK: It all started with a friend of mine starting to skydive some three years back. He kept pestering me about giving it a shot, too, until last year I said "maybe I should try it some day". A week later, I get an email from the skydiving club saying, "thank you for registering for the course." Obviously I had done nothing and my friend knew I hadn't so he went and registered me on my behalf. And once I was up there, do you have any idea how embarrassing it would've been to not jump? It was fun, though.
JR: What did you feel during your first "exit"?
LK: Standing in the doorway, staring at the plane's engine, my only thought was, "why doesn't he give me the sign already?" That is, the jump instructor was supposed to slap me in the ass when I can jump. It felt like I stood there for 10 seconds before the slap. Half an hour later, looking at a video of my first exit, I realized it didn't take longer than one second... When I jumped, the only thing I was thinking of was getting that delta shape and arching my back as I was supposed to. Three seconds after the exit, I was already just hanging there with an open canopy. It was a wonderful feeling just flying back and forth high up in the air.
JR: Now the penultimate set of questions... Let's talk about your book.
LK: Why does the penultimate set have to be about my book? Aren't I much more exciting? I mean, at least I have a pulse and opinions.
JR: Of course you are! So we are not going to talk about your book?
LK: Isn't that exactly what we've been doing all the time? I just think the ratio between book-related and other stuff can be more balanced and less penultimate.
JR: OK. Let's not talk about your book. The first words in your book are:
To my colleagues,
for bugging me to finish this project.
And to my love Lotta,
who gave me the energy to do it.
JR: Lotta.
LK: Lotta is my girlfriend. She's a rollercoaster who makes my day with her smile. And roll my eyes with her unfathomable logic. She literally says the opposite of what she means, except when she doesn't.
JR: Can you think about any other question you want to answer?
LK: I'm already quite happy with the volume of stuff we have but maybe you could ask me something about how TDD relates to my work or to agile methods.
JR: How does TDD relate to agile methods?
LK: Well, the strongest link between TDD and agile methods is XP or Extreme Programming. This agile method, created by Kent Beck at Chrysler, had a set of 12 practices, of which TDD was one. People have worked test-first already decades ago but it's really XP that brought sexy back for TDD. Nowadays, however, I find TDD being more of a standalone practice in that I see all kinds of agile methods be applied in combination with XP engineering practices such as TDD. While TDD isn't an agile method, it's almost always applied by people using an agile method--although that doesn't have to be the case.
JR: What about your next book? Do you have any plans?
LK: I have plans. Several of them. Right now, however, I'm just enjoying the luxury of not having a manuscript in my lap crying for the much needed attention it's not getting.
JR: We are almost done. Lasse, thank you for your time. The only thing we need to do now is to add some human touches to all this dry and boring stuff. Could you tell us some jokes, please?
LK: Jokes? Are you kidding? I'm a Finn, remember?