November 6, 2012
Michael Feathers' Code History Mining Workshop, Jan 14Just a quick tip for learning-hungry developers out there.
Michael Feathers will be running his code history mining workshop in London on Jan 14th. Highly recommended.
September 4, 2012
London Global Day of Code Retreat is Not a Code RetreatJust FYI, Corey Haines informs me that to call our free all-day coding event on Dec a "code retreat" we must follow the strict format prescribed. Corey's made it clear that the Code Retreat format is aimed at beginners, which the Team Dojo certainly isn't, so if we do the Team Dojo, we can't call it a "code retreat".
No change is required on your part. If you're booked for the Team Dojo on Dec 8th, you're still booked and it's still happening, but it's not part of the Global Day of Code Retreat. If you're looking to participate in that specifically, I'm sure someone else will probably organise one at a different London venue.
PS. We have just 2 places for the Dec 8th Team Dojo. If you fancy more of a challenge and want to flex some of the collaborative muscles that other coding workshops don't rach, you can register at http://teamdojo2012.eventbrite.com/
August 29, 2012
Global Day of Code Retreat - Open For RegistrationJust to let you know that our London code retreat on Dec 8th is now open for registration.
As my last act as chair of the Software Craftsmanship conference for 2012, I'm going to be running a special Team Dojo, so this should stretch those collaborative design muscles that other dojos don't reach.
It'll be in Waterloo, and places are limited to 35. It's free (thanks to Codemanship), and first-come, first served.
You can register here.
August 22, 2012
Intensive Refactoring Workshop, London, Oct 20thAfter the success of Saturday's intensive and budget-friendly TDD training workshop, I've decided to organise a follow-up to help folk get to grips with the extremely important discipline of refactoring.
Codemanship's intensive refactoring workshop will be on Saturday Oct 20th in central London, with an unbeatable early bird price of just £99.
Now, I know refactoring isn't considered as sexy as TDD or SOLID, and you may be thinking "do I need this?" Trust me. You do. TDD isn't sustainable without it, and what's the point in knowing your OO design needs fixing if you don't have the skills to fix it?
Refactoring is the "secret sauce" of Agile Software Development. Without strong refactoring muscles, your code quickly becomes complicated, hard to read and difficult to change.
I can immediately spot a good developer by their nose for design problems and the maturity of their refactoring skills. Most don't have any worth speaking of.
If you're only looking to impress potential employers, then this might not be the course for you. But if you want to be a better software developer, it's the most important course we do.
You can find out more and register here.
June 18, 2012
Summer Madness! Intensive, Budget-friendly TDD Master Class for £99I'll be running an intensive and budget-friendly TDD workshop in central London on August 18th.
It's essentially key elements from the more relaxed 2-day course crammed into 8 hours, and at just £99, it's unbeatable value. Being an ex-freelancer myself, I know how hard it can be to get time off, so I've scheduled it on a Saturday so you can have your cake and eat it.
Your £99 includes refreshments, a bit of lunch and wi-fi. The training venue's a stone's throw from Waterloo Station, and easily reachable from London Bridge and other central London transport hubs.
June 16, 2012
Team Dojo & Team CraftsmanshipBefore I say anything else, a big thank you to Clive Evans and Tony Denyer for all their help running the Team Dojo workshop at SC2012. It's not really possible to run it alone, especially if you're also organising the conference and running around sticking a video camera in people's faces, so their expert facilitation and technical guidance made it possible for me to have my cake and eat it.
Now, to the Team Dojo itself.
I run a two-day training workshop on collaborative design, where teams (often made up of people who've never met) have to design and implement a piece of software to manage a community video library.
It's my favourite workshop to run, because I think it stretches muscles that my other courses don't reach. To a larger extent, I feel team disciplines have been overlooked by the craftsmanship movement. It's not just about individual programmers creating great code, but also about how individual programmers, working together, can produce great software.
The SEI felt it important enough that they created both a Personal Software Process and a Team Software Process. I see, too, that we have Personal Craftsmanship and Team Craftsmanship.
Being the fiend that I am, I decided to try and condense this 2-day workshop into 2 hours. Because, well, I can. Chairman's previlege.
I won't bore you with the details of the exercise, but here's a short summary:
Participants form into teams and try to build software that comprises five user stories, with a bunch of acceptance tests that they must demonstrate their software passing through some kind of user interface to a 3rd party, who gives them points for every test they pass. They have, minus explanations and the scoring, about 90 minutes to deliver from a standing start.
The conference had a computer science theme, so I built a couple of interesting CS-type problems into the requirements (PageRank and Breadth-first Search), and - being doubly fiendish - did very little to explain them.
(To see all the requirements, acceptance tests and explanatory material, goto http://www.codemanship.co.uk/teamdojo )
Some aspects of the problem deliberately mirrored the problems they might face in the workshop, just for jolly. They were asked to build a social network for programmers, and the ultimate goal was to be able to select any skill and find the strongest team in the network, calculated as a function of the "kudos" (or PageRank, in reality) of programmers in the team, the number of degrees of separation between them, and their strength with that particular skill.
If only they'd had the software before the workshop started!
We asked them to write their top 3 programming languages on stickers and display them prominently on their chests, so everyboldy could see what each potential team members strongest languages were.
The SC crowd's pretty diverse. When you wander among the sessions, you see all sorts of languages being used - everything from Ruby to Python via Haskell and F#. Interesting, then, that we ended up with either Java or C# teams. They are the "business english" of programming languages, perhaps.
My initial expectation was that we'd get some really strong teams that stand out from the rest, and I had high expectations for some of the teams that formed, knowing the people on them.
To my surprise, when we totted up the final scores, almost all the teams ended up with the same number of points. A couple didn't quite manage to get any acceptance tests passing, and one team did marginally better than the rest, but the scores clustered very closely indeed.
A reminder to me that a strong team is not necessarily just a plural of "strong developer". There are undoubtedly team disciplines. One participant mentioned that he'd lost considerable time when a team colleague broke the build, for example.
The most important team discipline I've observed over the years is the ability to make decisions together. In particular, the ability to decide on a high-level plan and how all the pieces should fit together. That's not usually rocket science, that's "people science". A tam that can effectively collaborate seems to do just as well, if not better, than a team made up of star programmers. Of course, a team of star programmers who can work like a well-oiled machine together would wipe the floor with the rest.
Watching the conference video footage back, I noted the repeated use of the term "shaving yaks", as teams in the Team Dojo, and participants in other workshops, reported time lost to getting their environment sorted out.
Now, just as programming isn't about typing, issues like source control, build automation, test automation and so on aren't about the tools and the technology. But there's a lot of faffing and fiddling required, and that's what eats up our time.
Ideally, Eclipse, IntelliJ, Visual Studio etc would just have a button for it - a One-Click team development environment, if you like. Instead, what we have - for our sins - is a hidgepodge of disparate, clunky and user-unfriendly compromises in this space. Tool devs, get your act together - we're dying out here!
But, tooling aside, things like SCM and build automation revealed themselves in this workshop as areas we probably all need to work on. Even with the clunky tools, setting up a team environment should still only take a few minutes. I'm just as guilty as most. I don't think I've ever sat down and thought "I should practice setting up builds and CI".
Finally, to the feasability of the exercise itself. Can it really be done by a team in 90 minutes? I believe it can. When you actually get down to the individual user stories, they amount to code of comparable complexity to, say, the roman numerals converter. Given another hour, I suspect many teams would have passed a majority of the acceptance tests. Indeed, some participants told me they were "this close" to completing at least one more user story when I heartlessly called "time" on them.
And so, to the point of it all.
When I first try a code kata, it can take me 2-3 times as long to complete than it might tale me after a bit of practice. I suspect if the same teams were asked to do the exercise again, they'd score significantly higher. After 3-4 attempts, I believe most would be able to complete it and get top marks in under 90 minutes.
Would there be value in such repetition? I think there would. A lot of the time wasted seemed to be down to factors outside of the problem itself. By honing these skills, there'd be much more time to actually come up with solutions. We could test this theory by varying the problem in each attempt, so the skills being worked on would largely be these team disciplines.
Of course, there's only one way to find out for sure...
Software Craftsmanship 2012 - Thank YouThis is just a post to say thank you to everyone involved with Thursday's Software Craftsmanship 2012 conference.
SC2012 was the fourth one I've organised (and the last - more about that later), and it looks like it was possibly also the best. More passionate programmers, bigger and more challenging workshops, a hog roast and a chance to become proud owners of some rare computing and code-breaking history.
170 people gathered for 5 family-sized workshops with a computer science theme to celebrate 100 years since the birth of Alan Turing. They were expertly led by Chris Parsons & Steve Tooke, Hibri Marzook and Paul Shannon, Daan van Berkel, Jamie Dobson & Steve Freeman, and my own session overseen by Clive Evans and Antony Denyer. If you sometimes think hands-on workshops at conferences cater too much for beginners, there was no fear of that at SC2012, as participants flexed their muscles and got to grips with graph theory, cryptography, combinatorial mathematics and three-handed pairing, while simultaneously exercising their TDD, refactoring, CI and DevOps chops.
Our generous sponsors, 7digital, got stuck in and 7digital developers were with us in force. i'm very grateful for their support, and the support of our sponsors at previous conferences. As every penny of the ticket sales go to Bletchley Park, we rely on sponsorship to cover our costs. Without them, we would not have raised over £40,000 for projects at Bletchley Park.
Huge thanks also to the Raspberry Pi Foundation (and especially to Eben Upton, who made a mercy dash all the way from Cambridge to make sure we had a computer to auction - a genuinely very nice man) and to the kind folks at ModMyPi, who donated a unique 3D-printed prototype case (and very spiffy it is, too) for auction. Thanks, too, to The National Museum of Computing for digging up some amazing items like a Colossus valve and an Algol compiler on paper tape. Our auction raised over £1200 for TNMOC, which they plan to invest in Raspberry Pi's and Arduinos for their educational outreach program. TNMOC kindly opened early and late to give participants more time to look around at their extraordinary collection.
Thanks are also due for the brilliant folks at the Bletchley Park Trust for being the perfect hosts, and especially to Claire Urwin (her maiden name - congratulations, Claire!) and her team, who took care of a million and one tiny-but-important details for us. If Codemanship had to bear this burden... well, frankly, I'd rather not think about it!
And a round of applause for our tour guides and the other passionate and selfless volunteers who gave us better service than I've seen from paid staff in many other conference venues. These people care deeply about Bletchley Park and put their heart and soul into keeping it running. This marriage of a community that cares passionately about their discipline and a venue that cares passionately about our computing and mathematical heritage works extremely well. Even though I won't be organising the conference in future, I'll ensure that this marriage continues.
And finally, thanks to everyone who came and supported the conference, not just this year but over all four years I've chaired. I'd be deluded to think that the continued growth of the conference is down to anything else. You make Software Craftsmanship what it is, with your energy and enthusiasm and willingness to get stuck in and be out of your comfort zones, and do it all with humility and good humour. It's been an enormous pleasure to organise these events - one of the highlights of my life so far - and a privilege to meet so many genuinely passionate, talented and just-darned-nice software professionals.
If you were to press me for a definition of a "software craftsman", I don't think I could put it into words. But if anyone asks, I'll tell them to go to the Software Craftsmanship conference, and when they get back, I'll say "you see? - like that!"
Lastly, if you were at the conference, you'll know that Software Craftsmanship now has a new organiser. Codemanship will continue to play a part, and I'll be a very vocal champion for it for as long as it lasts. But SC2013 is in a very good, but hopefully different, pair of hands. I'm keen to see it go from strength to strength, and to see it evolve and surprise us all. but it will also retain some key elements that make it "the Software Craftsmanship conference". Just as Dr Who wouldn't be Dr Who without the police box and the quirky costume and the theme tune, SC2013 will be no doubt quite different, but still fundamentally the same. I'll be making a full announcement as soon as we've squared all the corners.
Assuming civilisation doesn't collapse, I will be at SC2013, and I'm really looking forward to seeing you there.
June 10, 2012
Software Craftsmen Raise £15,000 For Bletchley ParkThis press release is supposed to go out tomorrow, but I've cleared it with the folks at Bletchley Park to post it here now. Over the three years we've been holding the conference at Bletchley Park, you lovely people have generously given not just your time and enthusiasm, but also over £40,000 of your hard-earned cash to help with projects there. We want you to know just how much it's appreciated, and we're looking forward to seeing many of you again for SC2012 on Thursday.
SOFTWARE CRAFTSMEN RAISE £15,000 FOR BLETCHLEY PARK
Released: 11th June 2012
This Thursday sees Bletchley Park playing host to the fourth annual international conference on Software Craftsmanship, and ticket sales have raised in excess of £15,000 to help with museum projects at the world-famous heritage site.
Software Craftsmanship 2012 will be the third time the conference has been held at Bletchley Park, and since 2010, it has raised over £40,000. The money has been put towards projects like the renovation of the museum in B Block that was opened by the Queen in 2011, and the new Life & Works of Alan Turing Exhibition, which opened with a ribbon-cutting ceremony by TV presenter James May earlier this year.
Conference chair, Jason Gorman is a patron of the Bletchley Park Trust and their biggest private fundraiser. He explains: "Bletchley Park has played a pivotal role in the development of modern computing, and is a Mecca for the software craftsmanship community, making it the perfect venue."
"There's a real community spirit about the conference, and we're very grateful to all the amazingly talented software developers who've generously given their time. I believe Bletchley Park plays a big part in building the goodwill that the conference runs on."
The conference is a community event which focuses on technical disciplines for creating high quality software, and regularly attracts some of the most respected software professionals from around the world.
This year's conference is part of the celebrations for the centenary of computing pioneer Alan Turing's birth, and has a computer science theme. All of the hands-on workshops will feature a well-known computing algorithm, around which workshop leaders have built games and challenges that are designed to stretch the skills of the participants.
After chairing the conference for four years, Gorman will be handing the reigns over to a new organiser for 2013 and beyond.
"It's time for someone else to have a go, and introduce some fresh ideas. But whoever organises the conference from now on, I'll ensure that it will be run at Bletchley Park, and it will continue to raise money and play a part in building Bletchley Park for the future."
June 5, 2012
SC2012 Schedule AnnouncedWith Software Craftsmanship 2012 just around the corner, now seems like a good time to reveal some of the mammoth sessions we have lined up for your entertainment.
Download the schedule
I've made a conscious decision this year to encourage a smaller selection of more in-depth sessions, as always with a major hands-on element to stretch our coding muscles.
Generating De Bruijn Sequences - Daan van Berkel (2 hours)
Daan kicks us off with a session on generating De Bruijn sequences. Daan has created a GitHub project with a presentation and a Wiki where his discusses his session proposal. Daan will provide you with a set of unit tests, and your goal will be to make them pass by implementing the algorithm in Java.
Keywords: De Bruijn, Java, GitHub
Pair Programming Interviews - Hibri Marzook (2 hours)
Hibri works at our sponsor 7digital and has come up with a great session on using pair programming to gauge a candidate's basic abilities (and not just technical). Participants will test-drive in any programming language they like to implement a Linked List in the first part of the session and then Quick Sort in the second half, leaving plenty of time for discussion and lively debate on the use of of pair programming in the hiring process and the roles played within the pairs in such interviews.
Keywords: Pair Programming, TDD, Linked List, Quick Sort
Pathfinding Peril - Chris Parsons (2 hours)
Chris has run some very popular sesions at previous SC conferences, and this year has come up with a real belter. Building on the engine introduced by Matt Wynne at SC2010 for a "Robot Tournament", where the "robots" were players in a game of Tic-Tac-Toe, teams will create and evolve robots that will find their way through a maze, using the A* ("A-star") algorithm to search for the shortest path. Robots can be written in any Linux-compatible language (e.g., Ruby, Python, Perl, Haskell, Java), if memory serves. Chris will provide a Ruby gem to parse the mazes.
Keywords: Ruby, Linux, A-star, Robot Tournament, Maze, Graph, Game
Open Space (facilitators TBA) - 2 hours
In the afternoon, as well as some great planned sessions, we've opted this year to also leave room for impromptu short sessions. Again, there must be a hands-on coding element, but we're leaving the topics completely free - whatever you want to cover, it could be in the Open Space. You will need to ensure you can project your laptop video out put on a VGA projector (so bring those fiddly little adaptors if you're using a Mac). Session proposals for up to 30 minutes in length will be solicited during the morning, and we'll be letting you vote for the ones you want to see during our prolonged lunch break.
Keywords: Open Space, vote, anything goes
The Butterfly Flaps Its Wings: Is TDD Complex Or Simple? - Jamie Dobson & Steve Freeman (2 hours)
This session is an experiment that explores how different starting conditions (constraints) can affect the outcome when test-driving a problem. The idea is to have each pair program up a common example, an Engima machine, but with different starting conditions. Some will be environmental, such as functional vs. OO languages, others will be more about approach. jamie and Steve will ask people to checkpoint the code at intervals during the session to see how the design is evolving. We're very excited to have this session run at Bletchley Park, a place so closely identified with the Enigma machine, so look forward to something a little special. This session is being run at SPA2012, too - you can read their full outline here.
Keywords: Enigma, Cryptography, TDD, Complexity, Butterfly Effect
Team Dojo - Jason Gorman, Antony Denyer, Clive Evans (2 hours)
Team Dojo is an exercise in collaborative design and development. Participants will form into teams, each at their own table. Each team will be assigned a set of user stories and acceptance tests describing different aspects of the same problem. As a team, working in whatever style you wish and in whatever language you like (though help will be on hand for Java and .NET specifically), you will have 2 hours to create working software that solves the problem and passes all of the acceptance tests. The problem you'll be asked to solve will include a reapplication of a very famous network algorithm - PageRank - to calculate the "kudos" of a person within a professional social network, as well as one of a range of shortest-path algorithms to calculate the number of degrees of seperation between people connected in the network. Having run 2-day team workshops on collaborative design, I promise that this session will test your abilities in communicating, collaborating and making decisions to the absolute limit. You're welcome to use any infrastructure you like to share and manage source code and corroborate builds (e.g., GitHub, Bamboo, Cloudbees etc). Although teams won't be spoonfed solutions, hints and pointers will be provided if requested to keep things moving. Be prepared to use your initiative! Points will be awarded to teams for every acceptance test they manage to pass within the time allotted.
Keywords: collaboration, design, continuous integration, PageRank
In the evening, we have a proper hog roast planned (wth veggie options) and we're rustling up a haul of nerd-friendly swag for an auction to raise money for The National Museum of Computing, which already includes some very sexy one-of-a-kind items, so bring your cheque book if you want to be the proud owner of a piece of computing heritage and contribute to the brilliant work TNMOC do in preserving that heritage for us all.
The bar will open at 4,30pm, and once you've grabbed a drink I hope you'll join us in the ballroom to hear about the possibilities for SC2013 and register your vote for next year's organiser.
April 30, 2012
SC2012 Will Be My Last. Could SC2013 Be Your First?This year's Software Craftsmanship conference will be my fourth, and if you know me, then you probably won't be surprised to hear that when I started the conference in 2009, I had a plan.
I told myself I would run 3 more SC conferences (after the first sold out) at Bletchley Park, and that the conference would be raising funds for that august institution.
We're on track to raise about £15,000 this year (touch wood), which would bring the total raised by all you generous codesmiths to roughly £40,000. This money has been spent wisely by the trust, and has contributed significantly to the refurbishment of the museum in B Block, as well as the new Alan Turing exhibition.
This year's conference will be the last that I organise personally. So what's next in the plan?
Well, that depends on you. If the conference is going to continue - and presumably evolve - then I'd like it to go to a good home. I would hope that any group who organised SC2013 and beyond feels as passionately about software as I do, and as all the great session leaders and everyone who's participated in and supported SC20xx do, too.
I won't lie to you; this is not a commercial conference. Unlike events that can attract CTOs, IT managers, project and programme managers and other people with budgets to spend, SC20xx is never going to attract vast amounts of sponsorship. So nobody's going to get paid to run this conference, and lavish goody bags and dancing girls are off the menu.
But if the format were changed to attract non-programmers, I feel strongly that it just wouldn't be the Software Craftsmanship conference.
I also feel strongly that Bletchley Park is the right home for it, and that it should be used to raise funds for projects there.
The hard-and-fast requirement I stipulated after the first conference that every session must involve live coding also comes with its drawbacks. Developers can feel self-conscious about programming in front of their peers, although anyone who's run a session from SC2010 onwards will probably tell you that this particular audience is much more enthusiastic and forgiving than most.
But, even though drumming up session leaders can be a pain in the arse, we have consistently managed to attract great sessions from great session leaders, and the roll call over the last 3 years is something I'm extremely proud of. It takes some arm-twisting and an element of horse whispering, but it definitely is worth it in the end. And not just for us, but also for those session leaders who were dipping their toes in the water for the first time. Many are now regulars at other conferences. Some have even started their own events. This is a good place to get seen.
And, again, without the hands-on element, would this be the Software Craftsmanship conference, or just A.N.Other software conference where folk dazzle us with BS about stuff they don't even do themselves? For me, this is the heart of the conference: it cuts through all that BS. Don't tell us, show us! And then let us have a go!
So this is the plan:
I won't be running SC2013. Maybe you will. If you're passionate about code, and think you can take the conference to new places, but without cutting out the heart, then I want to hear from you.
Whoever runs it from hereon in will have the freedom to do what they wish with it, as long as they satisfy three basic, non-negotiable criteria:
1. Hands-on coding in every session stays.
2. Bletchley Park is the venue
3. Bletchley Park gets the ticket sales. Everything else (e.g., sponsorship) is up to you.
Of course, if nobody wants to take over, then SC2012 will be the last Software Craftsmanship conference, which would be a real shame, but that's the plan.
I'll be asking people interested in running the conference to make a small pitch to the community at SC2012 (so, yes, you will need someone from your group to be there on the day to represent you), and I'll be asking the community to decide who they want to see running SC2013.
I will also be instituting (against my usual better judgement) a basic constitution for the conference which we'll all need to abide by, including my 3 non-negotiable requirements, as well as a requirement that we repeat this process again in 4 years' time if the conference is still running. In that sense, the conference will become the property of the people who participate and you will become the custodians of it. Which is as it should be.