Author: Jon Skills Matter

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.

Guest post: “I seek to bridge ideas and knowledge from beyond software and bring their value forth”, Kevin Callahan

Kevin Callahan


This is a guest post from Kevin Callahan – an Enterprise Agile Coach with LiveWorld, a social content marketing company. Over the past couple of decades he’s filled roles as an agile coach, ScrumMaster, software team lead, programmer, business owner, project manager, and professional outdoor educator. He lives in Maine, USA with his family and he blogs about the intersection of agile practice and gravity sports.


“Art is never finished only abandoned” – Leonardo da Vinci

Abandoned art does not rest. It does not leave us. We carry it forth; it has become a part of us. Several years ago I abandoned the domain of software development to once again fully engage in the craft of developing teams. In that time my agile practice has deepened; I’ve learned tremendously and have been drawn time and again to the human side of the work as the most powerful leverage point. Individuals and interactions over processes and tools remains as true today as it was in 2001.

Right around this transition I also purchased a new mountain bike, one capable of handling the mud, roots, and rocks that make up my local trails. My previously-abandoned passion for riding was thus rekindled as a creative outlet; art in motion.

And I’ve found that the patterns overlap. Iterative software development is, at a sufficient level of abstraction, a lot like riding bikes and snowboards, and all of those things are a lot like the patterns of team and individual development. While this might be counter-intuitive, people are the common thread; the patterns are fundamentally human.

I seek these patterns and their connections, to make them visible through words in the hope that we can learn, get out of our own way, achieve another slice of our potential, and create the outcomes we desire. And firmly grounded in putting people first, I seek to bridge ideas and knowledge from beyond software and bring their value forth. I look forward to sharing them with you.


Kevin will be blogging regularly for Skills Matter on his thoughts and ideas about the intersection of agile practice and gravity sports. Check out his blog here, and be sure to check back here shortly for his next post!

2013 is behind us, but 2014 is just beginning! Check out these conferences from Skills Matter!

Droidcon 2013, London

Last year we ran 29 conferences, attracting people from all over the world to our events in London and New York, and we had a blast! Not ones to rest on our laurels, we’re very pleased to announce the following conferences for 2014. There will be more to follow, with an exciting opportunity for iOS developers in the works, so be sure to keep an eye on our website for more info, or follow us on Twitter for updates!


The Functional Programming eXchange 2014

Functional Programming eXchange 14 Mar 2014

The Functional Programming eXchange returns to Skills Matter for it’s sixth year with the theme Data Science with Functional Programming. This is the ultimate chance to meet and learn from the leading experts in the Functional world. Meet other like minded developers, not necessarily just from your specific discipline, to share common challenges and discuss practical solutions.

Rather than focusing on the merits of one language above another, the eXchange gives a platform for cross functional solutions to software problems. There will be ample opportunity to brainstorm, code, and interact with 100+ functional developers on the day.

CukeUp! 2014

Cukeup! 10 Apr 2014

CukeUp! 2014 is a fast-paced conference inspired by and organised with Aslak Hellesøy, the creator of Cucumber BDD – who will also be this years’ keynote speaker. Together, we’ve been assembling the community since 2011 for this intense conference – 2014 will see it stretch to two days for the first time, which just proves its popularity!

This exciting event is based around tutorials on the first day, and 30 minute talks on the second day – you can look forward to hearing about all the latest developments and best practices in Cucumber, presented by leading experts.

Progressive .NET Tutorials 2014

Progressive .NET Tutorials 28 May 2014

Don’t miss this three-day conference, where you’ll be taking a real deep-dive into .NET in four-hour sessions! These three days are a highly practical, deep-dive insight into complicated ideas and topics on everything to do with .NET in an intensive learning atmosphere – you’ll need your laptop!

With the help of Ian Cooper, the London .Net user group lead and renowned .Net expert, we will get you the best brains available!

ddx-14-800-px-x-300-px

DDD eXchange 20 June 2014

At the DDD eXchange 2014 you’ll discover all the newest innovations in Domain-Driven Design and get the chance to learn and share solutions and new ideas! This eXchange brings together the Domain Driven Design community with the experts who lead it for a day of networking, sharing new ideas, creating partnerships, and learning from the best and brightest in the field.

Each year, with the blessing of Eric Evans (the father of Domain-Driven Design) we welcome an array of high-profile speakers to explore and share new thoughts about DDD with grass-roots designers, programmers, and architects.


Did you attend one of our conferences in 2013? What did you think? What else would you like to see Skills Matter cover in 2014? Let us know in the comments section below!

This Week at Skills Matter: 13th-17th January 2014

Last week we welcomed the London Java Community for our first two events of 2014! On Wednesday, Madhusudhan Konda explored what’s new in Java8 and Joshua Wöhle provided insight in how (quickly) a tech stack evolves in a start-up.

Gleb Smirnov talks at the London Java Community meetup, London

On Thursday the LJC returned with a talk from Gleb Smirnov on Mutation Analysis, in which he covered the available Java tools to do it, and shared a number of success stories.

This week we have five events, including a brand new user group! Don’t forget, these events are free but we do ask that you register before attending to avoid disappointment as spaces are limited. You can also check out our website for more upcoming meetups and user groups, or follow us on Twitter for updates. We look forward to seeing you all again in 2014!

Monday:

The week begins with the London Ruby Users Group who come to Skills Matter for their first meet-up of 2014. At this months meetup Javier Ramirez talks about dealing with big data in PI Analytics with Redis and Bigquery. Javier will be followed by Julien Letessier, wo will be speaking about using data tiering to squeeze scale out of SQL.

Register for your place now!

Tuesday:

The London Java Community will be discussing Android and The Web of Things on Tuesday. Asking questions like ‘what if every day objects could all become part of a gigantic network also known as the Internet of Things?’ And ‘what if your watch, guitar, bike or bottle of organic iced-tea could all have an active digital identity on the Web? By combining technologies such as NFC, QR-codes, Bluetooth low energy and Android smart phones, this becomes an ideal framework to implement the Web of Things…

For more information and to register your place, click here.

Also on Tuesday, the London Ajax Meetup will be joined by Jamie McCrindle & Santi Albowe for a walkthrough of how they’re putting thei AngularJS apps together using TypeScript, Yeoman, Restangular, a RESTful API, S3 and a CDN.

Register your place now!

Wednesday:

Julia programming language logoOn Wednesday we’re very excited to welcome the first meeting of the London Julia Users Group. As a relatively new programming language of interest in the emerging field of Data Science, Julia has many features to commend it over existing approaches, not the its speed of execution.

The discussion will look at using Julia on all platforms: Linux, OSX and Windows; getting up and running, the Julia package system and JuliaStudio IDE, plus any teething problems, trials and tribulations.

Register you place for this meetup now!

Thursday:

Finally, on Thursday, we welcome the F#unctional Londoners for their first meet-up of 2014. At this months session Ross McKinlay will present ‘SQL Type Provider Deep Dive’. Ross has over 20 years programming experience in a wide variety of different languages and technologies, ranging from games and financial markets to fraud prevention and investigation. He has more recently been working on F# type providers. He loves squirrels, physics, electronics, robotics, functional programming, programming languages in general and squirrels.

Book your place for the F#unctional Londonders meetup now!


What did you get up to in 2013? And what are you looking forward to in the world of Open Source in 2014? Let us know in the comments below!