Monthly Archives: November 2014
Seb Rose is well known to most ACCU members. For those who do not know who he is, Seb is an independent software developer, trainer and consultant based in the UK. He specialises in working with teams adopting and refining their agile practices, with a particular focus on automated testing.
Since he first worked as a programmer in 1980 (writing applications in compiled BASIC on an Apple II) he has dabbled in many technologies for many companies, including Linn Smart, Amazon and IBM. He has just finished writing “The Cucumber-JVM Book” for the Pragmatic Programmer’s. His website can be found at http://www.claysnow.co.uk
How did you get in to computer programming? Was it a sudden interest? Or was it a slow process?
The maths department at my school had a PDP11 and a room with 8 terminals. I spent an afternoon watching someone write BASIC and wrote my first program the next day. The head of department then gave me a few photocopied sheets from Kernighan & Ritchie’s “The C Programming Language” and I started learning more about what was happening under the surface.
A few years later I got my first holiday job working at a service station on the A3, getting paid the princely sum of 60p an hour. It sounds grim, but I earned enough to buy a record deck (anyone remember the PL-512?), which meant I needed even more money to buy albums. A neighbour put me in touch with his accountant who was in partnership with a guy in Teddington who was writing accountancy software in his attic. I went round for a chat and showed off my BASIC skills and landed the job. He apologetically told me that all he could afford to pay was £3 an hour – a 500% pay rise! I was ecstatic and I’ve been programming (on and off) ever since.
What was the first program you ever wrote? And in what language was it written in? Also is it possible to provide a code sample of that language?
BASIC. Nothing very exciting, just asking for input and printing out a response. I then took a huge leap and tried to write a text based Dungeons and Dragons game in C. It never worked, but I spent many a happy hour tinkering about with source code on huge print-outs. I returned to BASIC (compiled for the Apple II) for my holiday job and spent a lot of time doing screen layouts using 80 x 24 grids. There were some lovely hacks for positioning the cursor at a specific location on the screen which we used to access via GOSUBs whenever we needed to present output.
What would you say is the best piece of advice you’ve ever been given as a programmer?
Tricky question. Maybe the advice from Steve Freeman and Nat Pryce to “Listen to your tests.” It’s all too easy to blame a technique (or tool) that you’re trying to learn, when actually it’s your failings in other areas that are the root cause of the problem. When I find it hard to write a unit test, I remember their advice and look at the code I’m trying to test with a critical eye.
The old favourite “don’t optimise (yet)” is regularly useful. As developers we often think about performance prematurely. The “shameless green” stage of TDD encourages us to get the test working without thinking too hard about the design. It’s the “refactor” step where we improve the design of the code, but even here performance should generally be a subsiduary concern to readability. There will always be situations where you need every ounce of performance you can get, but they are few and far between in most domains, and you should only pursue optimisation once you actually have the data to show what actually needs optimised.
If you were to go back in time and meet yourself when you were starting out as a programmer, what would you tell yourself?
I’d probably tell myself: “Good choice.” It’s hard to think of a career that has so many varied opportunities or that would have allowed me to work in so many different areas. I’ve been a freelancer for most of my career, and the occasional breaks between contracts have been invaluable for learning new skills and trying different things.
I ran an organic smallholding for 12 years, at the same time as working as a contractor. I tried to have the contracts end in the spring, so that I could spend the sunny, Scottish days doing more physical work outdoors. For 3 years around 2003 I ran the organic business full-time and didn’t do any commercial programming. I actually found that I spent more time at a desk during this period than I did when I was contracting – maintaining the website and order system, generating delivery reports, dealing with customers etc.
It was a relief to be able to return to programming when, after our best year trading, the accounts showed I’d only made £12,000 from delivering organic produce.
Do you currently have a mentor? And if so, what would you say is the best piece of advice you’ve been given by them?
I haven’t got a specific mentor, but I treat most of the people I meet as potential mentors in one way or another. Recently Jon Jagger told me he spends 1/3 of his time earning money, 1/3 working on OSS and 1/3 fishing. I’ll not be taking up fishing, but this seems like a mix to aspire to.
How do you keep your skills up to date? Do you get a chance to do some personal development at work?
I spend a lot of time reading blogs and books, as well as going to conferences. In fact, you could say that my job IS keeping up to date, at least with a small segment of the industry.
Twitter is a great source of information – not the throw away one liners, but the links to blogs that I wouldn’t normally notice.
And I organise the local BCS branch events, which forces me to talk to a lot of people and actively seek out new and interesting topics and speakers.
What would you describe as the biggest “ah ha” moment or surprise you’ve come across when you’re chasing down a bug?
Working with Weblogic in the early days of EJB 1.0 we were getting inexplicable , intermittent failures. Days of investigation later, having boiled the sample code down to something really small, it became clear that there actually was a problem in the application server. We submitted a bug report and, in due course, received a patch. Months later the problem reappeared – the supplier had rolled out an upgrade WITHOUT the patch.
I remember the first time I heard you talk was at the ACCU Conference where you were talking about Test Driven Development. There has been a lot of talk of late of TDD is dead (among the more extreme things I’ve seen) (http://www.infoq.com/news/2014/06/tdd-dead-controversy) I’m guessing you wouldn’t agree with that assessment? Or is it a case of the way TDD is done, and how it’s implemented that’s the issue?
I’m still talking about TDD. My current opinion is that TDD is a technique that is generally useful, but that context is, as always, an important consideration. The arguments stem from consultants making general statements that address segments of the development community without making it clear which segments they apply to. I say more about this in my session “So long, and thanks for all the tests” which is online at http://vimeo.com/105861375
The short answer is that TDD is not dead, but neither is it a silver bullet. It’s a useful technique to have in your toolkit, but like so many techniques it’s easier to describe than do. That’s why I think all developers should learn and practice TDD, at least until they know it well enough to make a considered judgement about whether it’s useful for them in their current role.
How scary was it to go from full time developer to free-lance developer? And how long did it take for you to feel confident to go for it?
I graduated in 1987 and did my first contract in 1992. In the intervening period I did 2 full-time jobs, one for 8 months and one for 5 months. So, I think it’s fair to say that I’ve always been freelance. I guess that confidence has not been too much of a problem for me.
That’s not to say that I haven’t worried about where my next paycheck will come from. I have, and at times where continuity is more important to me, such as when my children were young, I have returned to permanent employment. Strangely, though, I’m generally less stressed working as an independent than an employee – and I don’t think I’m alone in this.
Do you have any regrets as a programmer? For example wishing you’d followed a certain technology more closely or something like that?
I wish I’d read more books and bought fewer.
Where do you think the next big shift in programming is going to come in?
I have no idea. In the nineties, when first introduced to HTML and the internet, I said the equivalent of “it’ll never catch on.” Niels Bohr is credited with saying “Prediction is hard (especially about the future)” and I’m worse than most at making predictions.
Finally, what advice would you offer to kids or adults that are looking to start a career as a programmer?
I think I’d give the same advice for any domain, not just programming. Have a go. Do something that interests you and keep trying. Qualifications may help, but enthusiasm and aptitude are by far the most important ingredients.