Cucumber

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.

CukeUp! 2015: Call for Papers

cukeup_2015cfp

After a sold out 2014 conference, CukeUp! returns to London for its fourth iteration. The conference brings together all stakeholders who use BDD for two days of talks and workshops, helping teams to crack complex software problems. We’re on the look out for talks that will inspire and educate others around BDD and it’s wider practices – so if your team is just starting out on the road to BDD, you’ve got some nifty tips to test the untestable or you’ve got a use case on how to bring technical and non technical teams closer together – we want to hear from you.

We are planning for talks to last around 30 minutes, so keep introductions to a minimum and allow time for questions!

To submit an idea for a talk head over to the Call For Papers page. We’re especially keen to hear from people who haven’t spoken at conferences before. If you are worried about presenting alone, feel free to pair with someone on your team. The CukeUp community is very friendly and this is a safe way to dip your toes in the public speaking arena. If you need some help a great place to start is here.

If you have any questions then please contact us at cukeup@skillsmatter.com.

The CfP will close on January 23rd. All presenters will be contacted the week commencing February 2nd.

Please be sure to read the Skills Matter Code of Conduct. It outlines what we expect from our speakers and guests so that we can continue to provide a fantastic environment to learn and share skills for everyone.

Friday Round-Up: 31 March – 4 April

CukeUp! 2014, Skills Matter, London

Software Developers London kicked off Monday, when they came along to Skills Matter HQ to discuss the latest in the world of social technology. They were joined by multiple speakers who ran through platforms such as Facebook, Twitter and Google to share where things are headings and what to expect next.

On Tuesday, the Penatho User Group demonstrated how Pentaho can be used in multiple areas, such as Geo-informatic visualisation. Nelson Sousa, Dan Keely and Owen Bowden shared past experiences using Pentaho and how it can be applied in the real world.

The London Clojurians joined us to talk about the benefits of Static Typing. Ambrose Bonnaire-Sergeant ran through its uses and its benefits which make it perfect when adding it to Clojure.

Austin Bingham and Robert Smallshire brought in a crowd for their talk on Domain-Drive Design with Python. They both explored when and how dynamic language solutions are most appropriate for domain models discussing the trade-offs between flexibility, maintainability and performance. The talks were illustrated with experiences drawn from building industrial domain models in Python in the energy sector to support high performance computing applications.

London Titanium discussed, in detail, Node.ACS & JSON, how to use as well as apply them. Two interesting talks delivered by Ketan Majmudar and Martin Hudson, both true experts, helping delegates iron out any problems they might face and how to overcome them.

CukeUp! 2014

We finished of the week with our second conference of the year – CukeUp! This year, more people than ever before joined us with our amazing partners Cucumber Limited at Skills Matter HQ for two days packed full of talks, presentations and – for the first time – a full day of hands-on sessions led by the best in the world of Cucumber.

If you missed it, fear not! You can catch all the Skillscasts (film/code/slides) here. You can also see the pictures from the two days on our Flickr set.

And finally, a huge thank you to our sponsors – Sopra, Inviqa and Specflow!

 

While It’s Compiling: Skills Matter interviews Gaspar Nagy

While It’s Compiling is a 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.

This weeks interview is with Gaspar Nagy, who is speaking at CukeUp! 2014 tomorrow. Tickets are extremely limited, but you can check availability and book here.


Photo: Ernest Bondarenko

Photo: Ernest Bondarenko

1. CukeUp! is taking place for the 4th time in 2014 – what importance does it have for the community?

I think the conference provides a lot to the Cucumber community, as it is the yearly meet up of users and contributors for Cucumber on all different platforms. It’s the place to be for getting the latest news about the Cuke ecosystem, straight from the horse’s mouth.

I’m excited for this year because I’m going to introduce the new SpecFlow logo, which will better show its affiliation with the Cucumber tool family. SpecFlow has picked-up a lot of traction since its birth in 2009: we have now over 60.000 installations and 16.000 users, who are using SpecFlow regularly and provide a significant share in the Cucumber community.

The other announcement that I’m involved with this year is the Gherkin3 project, where I’ve implemented the parser generator (berp) that will allow to create much faster parsers on the different platforms. The new parser generator will also simplify adding new dialects and variants to all Cucumber tools using Gherkin3.

The event is also a good meet up for the whole BDD community, as Cucumber is also the only BDD tool I know of with a yearly conference.

2. What topic are you presenting at CukeUp! this year?

Recently we’ve had several projects with a lot of financial or engineering calculations, and we’ve been struggling with transferring the knowledge and examples between Excel (used by the customer) and Gherkin feature files. Therefore we’ve created a tool for SpecFlow and Cucumber that automates Gherkin example scenarios described in Excel. In my talk, I’ll show a few examples (with SpecFlow and also with Cucumber) and how this approach supported our collaboration in these complex business domains.

3. What attracted you to BDD?

BDD was a kind of missing link for me. I was looking for a method that helps to integrate functional testing, especially automated functional testing, into the development process. I realized that even with the best intentions, test methods tend to get obscure easily, and if one of them turns red after 6 months, you’ve no chance to figure out quickly whether the problem is in the test (the requirements) or in the application. So I’ve started to discover ways for describing these tests in a higher abstraction level that finally led me to Cucumber, Gherkin and BDD. This ended up in creating SpecFlow, the Cucumber variant for .NET, which became much more popular than I’ve ever thought.

4. What projects are you currently working on?

I’m doing a lot of coaching for development teams, which is very important for me, as it gives me continuous stimulation for improving the tools and methods I’m affiliated with.

The SpecFlow core is pretty stable, but in the meantime we’ve implemented plenty of ideas around it to get out even more value from BDD. We‘ve built up an ecosystem of tools around SpecFlow, that we’ve now named SpecFlow+.

Automated BDD scenarios are usually integration tests, so environment setup complexity and execution speed are problems that every BDD practitioner has to face sooner or later. As part of SpecFlow+, we offer a test runner tool that can run tests in parallel and takes off the burden for configuration and deployment from the developer’s shoulder. One of my next major goals is to extend this parallel execution capability to multiple machines that can be also hosted in the cloud.

Another topic is web applications testing in .NET, which has an inherited mortgage: ASP.NET, the foundation of almost all .NET web frameworks, is very strongly bound to IIS. Therefore it’s not easily possible to host an instance of a web server for testing. We put together our experience with the test execution infrastructure of SpecFlow+ and this ended up in a powerful web test automation framework. It’s still in alpha testing phase, but I hope to be able to show something from it in the upcoming months.

5. If you had one piece of advice to younger programmers, what would it be?

Forget about F5! (F5 is the keyboard shortcut for the “Start Debugging” command in Visual Studio).

6. What would you like to ask the community?

What causes the biggest pain for you in testing web applications? What do you think about the idea of parallel test execution in the cloud or on idle machines in your office?

7. What other talk/session at this year’s event are you especially looking forward too?

I like the format of CukeUp! with the short sessions in two tracks. It’s easy to grab valuable content from these. Steve Freeman’s talk and the “C# Cookware” talk from Manuel Pais will be surely in my plan, but I’m really looking forward to joining the workshops too!

While It’s Compiling: Skills Matter Interviews Matt Wynne

Matt Wynne

While It’s Compiling is a new 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.


This week on While It’s Compiling we sat down with CukeUp! programme lead and organiser, Matt Wynne. Matt is a BDD fanatic and is currently working on Cucumber Pro.

1. What’s this year’s theme at CukeUp!?

The theme is “one big happy BDD family”. With the birth of Cucumber Limited this year, we want to host a gathering for all the different BDD tribes – the Specification by Example people, the ATDD people, and the people using tools that aren’t named after a variant of the Cucumis sativus, like the PHP Behat community.

2. What are you exploring at the conference this year?

Personally, I’m interested in challenging the BDD orthodoxy a bit – trying to get some more balance into the debate about when BDD is the right tool for the job. I see some teams who have overused Given / When / Then and that’s what I’ll be talking about. I’m hoping some of our invited speakers will be sharing that kind of experience too.

For me, building software is all about people, working together. There’s also a huge amount of uncertainty involved – if the problem had been solved before, you’d be able to buy something off the shelf. BDD puts those two things together – people working together in the face of uncertainty. It gives us tools to communicate better about what we do and don’t yet understand, and to explore the stuff we don’t understand.

3. What projects are you working on at the moment?

I’m 100% focused on Cucumber Limited. That means working on our flagship product, [Cucumber Pro], as well as starting to market and sell our training, consulting and support services. I’ve been providing training and consulting to Agile and BDD teams for the last few years, but since we launched “the company behind Cucumber” we’ve been inundated with requests to visit people and help them. We haven’t even had a chance to put up our website yet!

Cucumber Pro is a paid-for collaboration platform for BDD teams. Using Cucumber Pro, anyone on the team can read, review and even commit changes back to source control through a tool that feels as accessible as Google Docs. It even supports collaborative editing, the same way as Google Docs does, which works especially well for distributed teams. We’re also working on features that will show results and screenshots, really bringing the living documentation to life.

We want Cucumber to be a sustainable ecosystem, and we expect that the revenue from Cucumber Pro will buy us the time to keep working on the open-source suite of Cucumber tools for the community. It’s an exciting time for Cucumber!

4. If you had one piece of advice for your younger self, what would it be?

Little steps!

5. What would you like to ask the community?

What do you think about us starting Cucumber Limited? Are you excited for us? What would you like us to prioritise?


Are you excited? What would like to see first from Cucumber Limited? Tweet your answers to #whileitscompiling or @skillsmatter 

Matt is the program lead at CukeUp! 2014 and will also be giving a talk, check back at Skills Matter for updates and tickets!  

cuke-up-1000-px-x-300-px (1)