While It’s Compiling

While It’s Compiling: Skills Matter interviews Tom Stuart

In the run-up to CukeUp! 2015, we caught up with BDD expert and enthusiast Tom Stuart to ask him about his talk and what he thinks of the current state of BDD. Tom is a computer scientist and programmer. He has lectured on optimising compilers at the University of Cambridge, co-organises the Ruby Manor conference, and is a member of the London Ruby User Group. You can find him on Twitter here, and visit his website here.

You’re leading an open-discussion at CukeUp that’s looking to define what BDD actually is. Can you give us a brief overview?

The title of the discussion is “WTF is BDD?”, and the idea is to try to get everyone to agree on a simple, clear, concrete description of what BDD is and literally how to do it. I don’t know if that’s a realistic goal, but I thought it would be interesting to try.

Where did this need to redefine BDD come from – what has led you to this talk?

It’s not about redefining it so much as just nailing down a usable definition in the first place. I honestly don’t think we have one right now and I find that frustrating.

The term “behaviour-driven development” has mostly worked well for discussions between experts — primarily this means consultants and trainers — because the people involved in those conversations know how things have been done differently (and badly) in the past, and are able to use that experience to interpret, frame and prioritise the whole cloud of ideas that swirls around BDD.

But I’d say there’s been a failure to communicate the essential idea of behaviour-driven development to the wider non-expert community, which is a shame because it’s the non-experts who stand to benefit the most from it. I find BDD very useful but I also find it difficult to persuade other people to do it because there’s nothing to point at to show them what I’m talking about. That makes it look like it’s not a real thing. It‘s embarrassing.

Right now the only guaranteed way to “learn BDD” is to pay one of those consultants or trainers to come and teach it to you, which is fine in itself, but it shouldn’t be the only option. If BDD has validity and value then we should be able to communicate it straightforwardly, without jargon or enterprise-consultant-speak.

And even among experts there’s a lot of noisy disagreement over the details of what BDD is. There are so many blog posts out there about “doing BDD right”, “doing BDD wrong”, “BDD is not X”, “BDD is just Y”, “if you’re not doing Z you’re not doing BDD”, and so on. This sort of debate is a sign of a healthy and inquisitive expert community, but again it’s not helpful for getting people engaged in the basic principles and practices of BDD. It puts them off — “if these clever experts can’t even agree on what it is, what hope do I have?”. I like to think that if we set aside the fine-grained disagreements for a moment, we’ll be able to agree on some big fundamental stuff that would be useful right now to people who need help with their software development process.

You’re currently working on a book and screencast – How to Write a Web Application in Ruby. How did that come about? And when can we expect to see it!?

It’s adapted from a workshop I run for Ruby developers. In the workshop we incrementally build up a complete web application from scratch by reading the appropriate specifications and using only the Ruby standard library — TCPSocket, URI, CGI, that sort of thing. Then, once it’s working, we refactor it by replacing bits of our hand-rolled implementation with battled-tested third-party code like Rack, Active Record and Action Pack. So halfway through the workshop we have a long manual implementation of a web application, and by the end we have essentially a short single-file Rails app. People seem to get a lot out of the workshop when I run it, so the book and screencast are about taking that same content and making it available to anyone online.

The stated goal of the book is to help Rails developers to understand their tools better by illustrating what each piece does in isolation and how they fit together. Its unspoken ideological goal is to make the point that software isn’t magic and it doesn’t come about by a process of divine revelation. It’s just stuff made by people, and you’re a person, so you can make that stuff too. You don’t need to wait for someone else to come along and make a framework for you to use; you are capable of building a thing yourself. Of course there are good pragmatic reasons to reuse someone else’s work instead of building everything yourself, but ideologically it’s important to know that you have a choice. Software is brilliant and it should be empowering, not constraining.

I’m ashamed to say that it’s become a bit of a long-term project now, not because I’m not excited about it, but just because I’m a terrible procrastinator and I don’t have a publisher breathing down my neck about it, so I can easily put it on the shelf for months at a time while I’m working on other things. I first announced it on the Ruby Rogues podcast in August 2013 so it’s definitely been brewing for a while.

I’ve resolved to get it shipped this year. That sounds terribly pessimistic. What I mean is that I’ve made a resolution to speak at fewer conferences in 2015, because they ordinarily take up so much of my time, and the idea is that I’ll be freed up to get the book finished. It’s the main thing I’m working on right now. I just checked the PDF and it’s 77 pages so far. So it is real and it will be out before too long.

Your writing spans a pretty huge range of topics – not just technical (like this post from your website on the London Cycle Hire scheme). Where do you find your inspiration from?

I would love to say something motivational and high-minded here, but the truth is that my writing is mostly born of frustration. I am very excited about the possibilities presented by general-purpose computation, and that excitement turns to frustration when those possibilities go unrealised because of bad education or lazy design or whatever it is.

So much of what is wonderful and beautiful about the computable world is hidden under a thick layer of inane jargon, poor documentation, crummy explanations, arrogant behaviour, confusing interfaces and so on, and I feel compelled to try to dismantle those things whenever I see them. Often that amounts to just unproductive complaining, but sometimes it motivates me to try to build a really clear explanation of a particular idea, or at least a really clear illustration of why some existing thing is bad. That’s actually still just complaining but I invest some effort in dressing it up as something superficially more constructive.

Explaining things clearly, whether through human language or computer code or interaction design, is really difficult to do, but that’s what makes it important and worthwhile. I think that you can change someone’s life in a tiny way if you help them to understand something fundamental about the universe, so it’s worth putting a bit of effort into. In practice the main thing I’ve learned is that this is a terrible way to try to make a living.

Were you always going to be a developer? What do you think you’d be doing if you weren’t?

I was fortunate enough to have access to easily-programmable computers from a very young age, so yes, I’ve been programming for as long as I can remember, and it’s hard to imagine doing anything else for a living. I suppose that latterly I’ve been spending more time explaining things to humans than to computers, so under different circumstances maybe I’d have become a teacher. I am a huge fan of mathematics so it’s likely I’d have ended up as a maths teacher, if not an actual mathematician, if computers hadn’t existed. It’s a frightening thought.

Finally, and back to CukeUp; what are you looking forward to most at this years conference?

Well, obviously my bit is probably going to be amazing, but social convention dictates that I pick something else. Actually I’m really looking forward to the workshops, because workshops (more so than talks) are often an opportunity to really learn something new — to be that person who’s having their life changed in a tiny way. So I’m hoping to be shown different ways of thinking about Cucumber and BDD, and to get the chance to ask some awkward questions, and to find something new and interesting to complain about.

While It’s Compiling is a continuing series of interviews with experts across a range of bleeding-edge technologies and practices, exclusive to Skills Matter. Be sure to subscribe to this blog for future interviews, or follow us on Twitter.

Find out who we’ll be interviewing next, and get a chance to put your questions forward with the hashtag #whileitscompiling.

While It’s Compiling: Skills Matter Interviews Arti Mathanda


CukeUp! 2015, the conference all about BDD, is coming to London next month on the 26th and 27th March! There’ll be talks and workshops by Behaviour Driven Development experts and the inspiring Rachel Davies and Dan North will be our keynote speakers. In preparation for this fantastic event, we’ve picked the brains of Arti Mathanda, the event’s programme lead, to find out more. Check out the full programme here.

Arti, you were invited to join the CukeUp! 2015 organising team by Matt Wynne, lead developer at Cucumber Pro. Can you tell us how this came about and what points of difference you hope to add to this year’s programme?

I’ve known Matt for several years now. Last year we caught up again at Sandi Metz’s course and we started to talk about how one of the CukeUps that I had attended was very code focussed and he asked if I would help out with this years conference. I said yes! I was hoping to help make CukeUp more business focussed and also to help increase visibility for minority speakers.

What topics will you be exploring in the workshop you’re delivering at the conference this year?

My colleague Adam and I will be talking about how we use Hypotheses and Measures and how to use them to prioritise your work.

What initially attracted you to working with BDD?

It just seems like the right thing to do. BDD done right helps you figure out why you’re doing the work you’re doing and if it actually makes sense to spend time and resources doing it.

What questions would you most like to ask the community about at CukeUp!?

What are some of the topics you’d like to hear about at the next CukeUp? What are your favourite talks/workshops from this year. Most importantly – did you have fun!

What themes are you most looking interested in hearing about at the conference?

I want to hear about product owners and business stakeholders using BDD – rather than just the tech teams.

As is often the case at tech events, less than half the speakers at CukeUp! are female. What do you think holds women back on the tech scene? Is this changing?

There’s a multitude of reasons why women hold back on the tech scene. One of them is as innocuous as people organising conferences tend to ask people they know to speak at them – and since tech is typically a white male dominated industry, that usually leads to mostly white men being asked to speak. We made a concerted effort to reach out to the women we knew in the industry, whose work we admired. We have a pretty good number of women speaking at this year’s CukeUp including the keynote speakers on Day 1. There’s still work to be done, but we’re heading in the right direction. We also made sure there was a good Code of Conduct and resources for people who were scared of public speaking.

Read more about CukeUp! 2015 and see the full line-up here

While It’s Compiling is a continuing series of interviews with experts across a range of bleeding-edge technologies and practices, exclusive to Skills Matter. Be sure to subscribe to this blog for future interviews, or follow us on Twitter.

While It’s Compiling: Skills Matter interviews Graeme Rocher


The Groovy & Grails eXchange 2014 (from left to right): Guillaume LaForge, Graeme Rocher, Russell Winder

After the success of the Groovy & Grails eXchange at Skills Matter, we spoke to the event’s second keynote speaker Graeme Rocher. Graeme is the project lead of Grails at Pivotal as well as CTO at G2One Inc, an open source services organisation providing training, consultancy, support and products around Groovy & Grails. He gave us some insights into what the new Grails framework is capable of, why contributions are so vital to the success and evolution of the Groovy language, and why he left London for Spain’s beautiful Basque Country.

Groovy & Grails eXchange 2015 tickets are on sale now – only £95! (for a very limited time)

You recently delivered a keynote talk at Skills Matter’s Groovy & Grails eXchange 2014 with a preview of the 3.0 rewrite of the Grails framework. Can you give us an overview of what the new version is capable of?

We’re previewing Grails 3, which is what we’ve been working on for the last six months or so now, which is a lot more flexible than Grails 2. You’re able to target multiple environments via the notion of profiles, so a Grails application could be potentially deployed in other targeted environments whether it be traditional Servlet, Netty or Batch. It’s also written to be built on top of Gradle, so the build system is completely new and more robust thanks to Gradle. And it has a completely rewritten code generation layer API which is now formalised, whilst before it was just a bunch of disconnected scripts. It is now much more robust. And it’s of course built on top of Spring Boot, which means that you can run your applications as a JAR file or you can write applications that are just little Groovy scripts, so you get much more flexibility in terms of how you create Grails applications.

With the core Groovy team being so small, how important are contributions to the success and evolution of the Groovy language, and do you need more people to get involved?

The contribution is essential to the survival of both projects and we’re constantly on the look out for new contributors. Groovy has done exceptionally well in this area, especially in the core with around 50% of contributions from the community, and it continues to operate very much as a community-run effort and that’s fantastic. Grails is a little bit more divided. We get massive contribution from the plugin community via plugins and that’s really buzzing and continuing to evolve, and that area of plugins in Grails is significant by itself. We get fewer contributions to the core, but they are still significant and we rely heavily on that. And of course we’re always on the look out for people to contribute.

You co-founded G2One – the Groovy/Grails Company – with Guillaume LaForge. How did it start, and did you ever expect it to become as successful as it did and ultimately attract the attention of SpringSource?

Well, you always have those hopes and dreams when you’re creating a startup so we went into it hoping to be very successful and in the end we were! But in terms of how it started, it was really around 2007 when I was presenting Grails at JavaOne and I got to meet Guillaume (LaForge) and the community and really get to know people, and we started spinning some ideas around and got in touch with some fantastic investors and the idea came to fruition to start a small startup. What we created was compelling enough for SpringSource to acquire and we still believe it is.

You co-authored ‘The Definitive Guide to Grails’ with Jeff Scott Brown, which explains the roles that Groovy and Grails are playing in the changing Web (amongst other things!). Can you summarise what roles these are and why they’re important?

The web is clearly evolving in terms of having much fatter clients and smaller services at the back end and these kind of Micro Service applications are definitely very well expressed in a concise language like Groovy. You can see that when you look at Spring Boot, how well Groovy fits into creating these types of small, focused applications that fit into Micro Service architectures where you have an essentially REST-based backend with Mobile and HTML frontends. Grails 3.0 with its profile support allows flexibility in creating small micro applications are what we like to call “Modular Monoliths”.

You’re based in Bergara in Spain’s Basque Country. What’s it like working there as a tech professional, and do you ever think about locating to a more tech-focused city such as London or Berlin?

Well, I lived near London for 12 years and London in itself was and is a fantastic hub for technology and innovation and a great place to be for creating a startup or for being in the tech industry in general. In terms of where I live at the moment, the Basque Country is a beautiful area, and it certainly has a tech community especially around the cities like Bilbao and Donostia. But it’s no where near the size of London. In terms of why I’m here, its mainly family reasons. My wife is from the area so its very much a family decision being here. But I’d certainly recommend London if anyone is really into the tech industry as a place to work and be

While It’s Compiling is a continuing series of interviews with experts across a range of bleeding-edge technologies and practices, exclusive to Skills Matter. Be sure to subscribe to this blog for future interviews, or follow us on Twitter.

Find out who we’ll be interviewing next, and get a chance to put your questions forward with the hashtag #whileitscompiling.


While It’s Compiling: Skills Matter interviews Guillaume LaForge

Groovy & Grails eXchange 2014, Skills Matter, London

For an insight into this week’s Groovy & Grails eXchange, we caught up with Guillaume LaForge, whose keynote will cover ‘What’s up in the Groovy world?’. In addition to travelling the world speaking at conferences, LaForge is Head of Groovy Development for Pivotal, the creator of the Grails web application framework, the founder of the Gaelyk project (a lightweight toolkit for developing applications in Groovy for Google App Engine) and co-author of Groovy in Action… he’s a busy man! But we were lucky enough to pin him down to find out more about the latest release of Groovy, the burning ambitions he has yet to achieve… and ’Brownies dans un mug’!

Tickets for the 2015 Groovy & Grails eXchange are now on sale – with a very limited number priced just £95! Book yours now!

A couple of weeks ago, you announced the release of Groovy 2.4.0-beta-4. Can you give us some of the highlights of this latest release?

We’re aiming at releasing the final version of Groovy 2.4 at some point in January. Obviously we fixed various bugs, added minor refinements here and there, and also worked on some performance improvements (both for dynamic and static contexts), but the big bonus in this release is the support for Android. Developers will be able to use the Groovy programming language to develop their applications for the Android mobile platform!

A lot has happened in the Groovy sphere in the last year. Has the recent level of change been particularly strong?

The Groovy ecosystem never ceases to amaze me, as it’s very busy, very active, with lots of great tools, libraries, plugins, that make developers more productive. I started the Groovy Weekly newsletter roughly a year ago now, and there’s always so much news to cover. It’s really lovely!

Your career has been dominated by your work on the Groovy language. What is it about Groovy that has kept you hooked?

Interestingly, I thought I was the kind of person who would get bored easily with any topic after a few months. But Groovy is clearly a very motivating project, as there are so many things we can do with the language, with the project, and with its ecosystems, whether it is new features, or new opportunities to meet users and customers around the world. Groovy keeps on giving and being loved by hundreds of thousands of developers, and it’s really awesome to have the chance to work on such a project.

You’re Head of Groovy Development at Pivotal, you initiated the creation of the Grails web application framework and set up G2One with Graeme Rocher, you founded the Gaelyk project…you’ve been busy! Do you have any burning ambitions you haven’t yet achieved?

Ah, tricky question…there are still things I’d like to achieve with Groovy, like our long term goals of reworking the core of Groovy with a new runtime and new grammar etc. We also have some ongoing projects with new documentation and a new website. So there are still things I’d like to do with Groovy before really thinking of other ambitions to achieve! There are definitely topics I’m interested in these days like Machine Learning, for instance. I studied this a long time ago, and Groovy could play a nice role for dealing with fast and big data and could offer nice domain languages for modeling problems and for finding hindsight into the data, etc.

That might be a topic I’ll be looking into more seriously soon.

On your blog, which is about ‘all things groovy!’, you also have a section for recipes including one for a ‘Brownie dans un mug’. Is cooking your secret passion??

I’m essentially a “sweet” person… you know, the kind who loves sugar! So once in a while, yes, I enjoy cooking some deserts, but I’m very far from being an expert. Another passion of mine is running. I’ve been running more or less regularly for the past 2-3 years, and I’m even planning to try to run my first marathon next year!


While It’s Compiling is a continuing series of interviews with experts across a range of bleeding-edge technologies and practices, exclusive to Skills Matter. Be sure to subscribe to this blog for future interviews, or follow us on Twitter.

Find out who we’ll be interviewing next, and get a chance to put your questions forward with the hashtag #whileitscompiling.


While It’s Compiling: Skills Matter interviews Martin Odersky


On the day the Scala eXchange welcomes more than 500 speakers and delegates to the Business Design Centre, Skills Matter catches up with keynote speaker Martin Odersky. The German computer scientist is the creator of Scala and the founder of Typesafe, a company to support and promote Scala. Currently a professor of programming methods at EPFL – the Swiss Federal Institute of Technology – in Lausanne, Switzerland, Martin Odersky told us about keeping Scala lean, which industries love Scala the most, and whether Scala can remain the essence of what Typesafe is and does.


Scala was first born in 2003. Has there been a lot of pressure to keep adding features? And have you always been convinced about the need to keep it lean?

There’s always pressure to add features. Users always want new features. So we tried for a long time to keep the feature set down to a reasonable size and…hopefully we’ll be able to make it even smaller.

You have described Scala as a fusion. Can you explain this in a little more detail?

The idea underlying Scala is that object-oriented programming and functional programming are not opposites but two sides of the same coin, and that one gains a lot by merging them. That’s not an amalgamation, taking all these features from functional programming and adding all these features from object-oriented programming – that way you would get a fairly large language. It’s really a fusion…So for example, the functions in Scala themselves are actually objects. Functions and objects are, in Scala, very much the same thing. And the same holds (true) for a lot of other things. Unlike many other languages that have classes and functions as types separately and then algebraic data types separately, we have one concept which is essentially classes forming a hierarchy. They serve as a framework for doing pattern matching as well, which in other languages requires an algebraic data type. So in that sense, Scala tries to have only a few concepts but very generally composable ones.

Are there particular organisations or industry sectors in which Scala has proven particularly successful?

We’ve got quite a few. I think its used everywhere there’s a JVM and nowadays it’s starting to be used on the client with Javascript as well. But there are a few verticals where Scala particularly common: It’s very much established by now in Big Data and machine learning. There, Scala is probably the number two language behind Python. Another big vertical is e-commerce – think of Walmart Canada, and many others. Another one is the finance industry – the most prevalent in London – so in the banks and the hedge funds Scala is also very common.

What have the main criticisms of Scala been and how have they been remedied?

Some of the difficulties comes from the user community, because now you have Java programmers and Haskell programmers that form part of the same community and that has proven to be a much tougher challenge than the technology. Sometimes these communities don’t get along very well, sometimes its very hard to read somebody else’s Scala code because there are different ways to write the same thing. We try to help by establishing simplicity as a criterion for a middle ground.

What was your vision when you set up Typesafe and have you been surprised by its success?

Scala already was a success and we had just run the first Scala Days..there was a lot of excitement and also a lot of people from industry – a lot of companies like LinkedIn, people from Swiss banks, Foursquare etc were talking about it. And that’s when it dawned on us that it really had bypassed the capabilities of just a research lab at my university. It was becoming too much work to continue to support it and also, we could see the opportunity. So we joined with the Akka team in 2011 to form Typesafe, and Typesafe now is I think still very much true to these roots…but it has also developed the reactive space starting with Akka, with middleware that is more application oriented and less language oriented.

A question about the direction Typesafe is going and its ongoing support of Scala, given its development of other products such as Akka and Play for Java developers. Will Scala always remain at the core of Typesafe?

Yes, I do think so. Scala is very much the essence of what Typesafe is. Internally everybody does Scala and everybody loves the Scala APIs. That’s not to say we don’t also do Java and Java 8 for the bigger market – that’s very sensible and we have to do that. But at its roots, it’s a Scala company and it will stay one.

You were a student of Niklaus Wirth in Zurich. How did that experience influence you?

When I was young, I was sort of a compiler hacker…and Modula 2 was a new language at the time and for me a very exciting language, so I wrote a Modula 2 compiler. I was actually on the cusp of joining Borland, at the time the big programming language and software company, but I decided to wait and finish my masters thesis. And then I realised that I had fun doing research so that’s when I decided not to go to Borland but to go to Niklaus Wirth – the inventor of Modula 2. At the end of my studies in Zurich (with Niklaus Wirth), I decided that functional programming was really cool and that I wanted to do more, so that’s why after Zurich I ended up doing much more functional programming.

You have had a long, varied and impressive career. What has your motivation and objective been throughout?

In Zurich with Niklaus Wirth (I was working with) very practical languages, which were also quite efficient, which functional programming wasn’t at the time. Towards the end of my PhD I discovered that functional programming could be very elegant and theoretically well founded, and that appealed to my sense of elegance and rigour. After that, I always wanted to bring the two together – to do something that’s really practical but that has the elegance and rigour of functional programming. So that led me to the work to combine functional and object oriented programming, first with Pizza, then with GJ, afterwards with Funnel and Scala.   The central question was always whether we can take the proven mainstream – object oriented programming – and the more academic notion of functional programming and combine the two harmoniously, keeping the good parts of both? That has driven me for most of my professional career.

While It’s Compiling is a continuing series of interviews with experts across a range of bleeding-edge technologies and practices, exclusive to Skills Matter. Be sure to subscribe to this blog for future interviews, or follow us on Twitter.

Find out who we’ll be interviewing next, and get a chance to put your questions forward with the hashtag #whileitscompiling.