Git at the command line

Source control is an essential tool in supporting the kind of incremental and confident development and refactoring typical in agile projects. Of all the source control systems, Git is arguably the most popular and feature-full. Github is now the most important service used by the open source community. Git is a distributed system allowing its users to maintain their own local copies of a repository including history. This allows them to work disconnected from their networks and the Internet, and syncronise changes when back online.

However,  it’s power does mean a steep learning curve. Most IDEs provide integrated Git support which whilst boosting productivity can restrict learning of the low level concepts and tools that can elevate users from intermediate to advanced.

This session will provide an introduction the the Git command line interface, showing how to do the basic clone, commit, push and pull commands. Building on these concepts it will then move to branching and rebasing finishing with a discussion on the benefits of each approach, and continuous integration without branches.

It’s a technical session, so please bring a computer with the Git command line installed. There are University computers available, and hopefully Cathy might be able to confirm whether they have the Git command line installed.

Christmas Kata and Merriment

Agile Staffordshire has a delightful evening of kata and merriment planned (loosely).

As a special treat, there is a choice of kata:

• Secret Santa

• Roman Numeral

Secret Santa

Secret Santa is a modern tradition where one anonymously gives a gift to a randomly assigned recipient. Create code that randomly assigns each Agile Staffordshire participant as a ‘santa’ to another participant as the recipient. Each participant must give and receive one gift.

This is a neat kata, with an added bonus for writing good tests to ensure recipient constraints are met.

Some actual presents will be provided, feel free to bring your own goodies if you wish.

Roman Numeral

The Roman Empire was once mighty and large. I suspect one of the reasons it diminished was due to the clunky number system it employed. We still use Roman numerals occasionally on clocks and BBC credits. Write a small program to decode a string of Roman numerals to its decimal value.

As stated by Rosetta, modern Roman numerals are written by expressing each decimal digit of the number to be encoded separately, starting with the leftmost digit and skipping any 0s. So 1990 is rendered “MCMXC” (1000 = M, 900 = CM, 90 = XC) and 2008 is rendered “MMVIII” (2000 = MM, 8 = VIII). The Roman numeral for 1666, “MDCLXVI”, uses each letter in descending order.

For extra credit, validate the Roman Numeral input string!

Sample Data:

• III – 3

• XXX – 30

• CCC – 300

• MMM – 3000

• VII – 7

• LXVI – 66

• CL – 150

• MCC – 1200

• IV – 4

• IX – 9

• XC – 90

• ICM – 901

• CIM – 899

• MDCLXVI – 1666


Upon completion of our Kata session, we shall move out and head to our local eatery. We usually visit Red Hill Brewers Fayre, just off M6 J14 and A34.

Looking forward to it!


Sharing Agile Experiences

In this month’s meet up, we will come together as agile minded individuals to discuss and share our experiences. This is to help plan and prepare lightning talks for next months Agile Staffordshire where we will share our thoughts with the latest generation of computing students. See you there,

Agile Experiences with BCS North Staffordshire

We have planned a special event along with BCS North Staffordshire where we will be sharing our experiences in a series of lightning talks and exercises. This will be a great opportunity to network and learn more about what is going on in our area. This event is also ideal for students with an interest in software development who want to know more about what is going on in the industry.

Our current programme (which can change):

• Paul Williams on Agile, Flow and Personal Kanban

• Melinda Marsh on Scrum (What the Industry Wants)

• Trevor Adams, Nyakeh Rogers, David Bochenski and Jonathan Willis presenting lightning sessions.


The start time is 18:00 at Blue Lecture Theatre, The Octagon Building, Staffordshire University, Stafford, ST18 0AD. Please note the start time is a little earlier than usual to accommodate a buffet prior to the presentations. Please RSVP on Meet-up to assist with organising the buffet.

September – Agile Discussion

Date: Thursday 25th September 2014
Time: 19:00
Venue: Staffordshire University – Stafford Campus (Octagon building, K102)

Rally round all agile advocates, this month we are coming together to share and prepare ideas for next months Agile Lightning talks. Next month, with the new academic year under way, we will be sharing our experiences of Agile with a series of Lightning talks about what agile it means to us.

How does agile affect as a developer, designer, manager, customer?
So come tell us, what does Agile mean to you, and sign up at, bring yourselves and your colleagues.

F# and Functional Programming Wrap-up

Agile Staffordshire were fortunate to have Ian Russell talk to us about functional programming. Ian’s session on functional programming really got us fired up with something new. I was swept away with Ian’s abundant enthusiasm for the discipline; thank you, Ian! If you get the chance to meet Ian and discuss F#, I think you’d be wise to do so.

I find being a novice entirely satisfying. I really enjoy picking up a new language and playing with it. Every single breakthrough changes your world and feels like a giant leap in understanding. I believe to be quite addictive. I know some members of the group have had some experience with functional-first programming languages and felt obviously at ease with the differences to our usual weapon of choice – object oriented programming. Others were like me, arriving at the subject without any information. I know it is good to have a fresh perspective, but sometimes I think we need to organise sessions to develop fresh perspectives more often. There’s a big difference between appreciating other perspectives and having them. I left the session with a buzz, eager to figure out how I could use the material and make something real!

I look forward to our August session – The Gilded Rose kata. I apologise for tardiness of this follow-up post. I’ve been working (with agility) on getting my house to stop leaking into itself – it has been one of those months!


August – The Guilded Rose Kata

Date: Thursday 28th August 2014
Time: 19:00
Venue: Staffordshire University – Stafford Campus (Octagon building, K102)

The Guilded Rose Kata fictionalizes the experience of working with someone else’s code. You’ll probably groan when you first see the code provided to you. The amount of code isn’t overwhelming, its the prefect balance to evoke the feeling, “I can’t wait to re-write this cruft.” It’s suggested that you use Test Driven Development with this kata. Once done, read the **spoiler** section at to see if you had a similar experience or not.

The above link also provides versions of the kata in C#, Ruby and Java. Google provides other implementation in other languages.

So, sign up at, bring yourselves, your colleagues and your favorite IDE along and we’ll have some pain fun.

July – An Introduction to Functional Programming with F#

Date: Thursday 31st July 2014
Time: 19:00
Venue: Staffordshire University – Stafford Campus (Octagon building, K102)

F# is a functional-first programming language which helps you to tackle complex computing problems with simple, maintainable and robust code. In this session, Ian Russell will get you started on the road to thinking and writing code functionally.

If you’re interested, please sign up on

June 2014 – Is TDD Dead?

Is TDD Dead?

Here lies TDD…

Date: Thursday 26th June 2014
Time: 19:00
Venue: Staffordshire University – Stafford Campus (Octagon building, K102)

Fear not, TDD is not dead, although it’s certainly been talked to death this month. This catchy title has been doing the rounds on the web recently since the Kent Beck + Martin Fowler + David Heinemeier Hansson talks. This month we are going to take a look at it ourselves, try out some different approaches and share our experiences.

For me it all started about 2 months ago when I watched Ian Cooper’s talk on TDD, Where did it all go wrong. I’ve been told over and over, that unit testing gives you the freedom to change code with the safety of maintaining functionality for the customer. So refactoring is the process of changing code without changing functionality, and those like Kent Beck would advocate your test suites allow you to safety refactor to design patterns as they emerge in the system. Yet this video struck a chord, I struggle to refactor code without breaking tests, and so lose confidence that the functionality is unchanged as the tests are now different.  Ian’s video addresses these points by highlighting different approaches and definitions to unit testing, and asks is the way some of use do TDD slowing us down.

We are going to explore this issue by scratching an itch many of you had during last months lean coding challenge, Refactoring! After a quick summary of Ian’s video, we are going to pair up and refactor a completed C# implementation of last months Checkout Code Challenge. It will be covered by two test suites. One set focusing on implementation per method and another suite on behaviour of the system. After an hour of coding we will break for a retrospective to find out how everyone’s refactoring was influenced by the different test suites, the advantages each way of testing has to offer and insights into TDD for agile development.

As we’re going to be writing code in C#, bring your laptop with visual studio set up – Project Code on GitHub

If you’re interested, please sign up on

See you there!

Jon Willis

Lean Code Retrospective

It’s great to consider concepts around a practical challenge. Lean code is best considered with a working example. It doesn’t take a complex/large problem to highlight the issues and this session hit home. Paul Williams gave a ‘lightning talk’ on Lean Code based on slides by Chris Parsons, and quickly got us in front of our IDEs and started the ‘Fresco’ challenge. To briefly explain, the challenge comprises a fast cycle of iterations (about 10 minutes each), where each pair delivers the requirements as per the specification and acceptance tests.

One might say the challenge is intentionally trivial, but it’s a great exercise because it neatly encapsulates many of the challenges in software development; especially in a rapidly changing context. Producing some code to address the problem was relatively simple, but how about the Lean principles? For convenience, I list the points that the group considered:

  • Eliminate Waste
  • Focus on value
  • Deliver fast
  • Decide late

The exercise prompted a valuable, albeit short, discussion of the Lean principles in regards to software development. In particular, where the Lean manufacturing and engineering principles perhaps do note related directly to software. Specific topics of note:

  • Waste is not simple to recognise/define in regards to software.
  • Development environment / platform / tools matter – especially version control.
  • Is there an upfront design / deliver fast trade-off? How would we know?
  • Context matters. Producing a car for a fixed and familiar environment. A car does not eventually turn into an aeroplane.

We have a lot to think about for our future sessions. Our post-exercise discussion could benefit from more time. We had a super turn out this month and some great ideas. I look forward to seeing everyone in June! Lean code gave plenty of food for thought.

Tag Cloud