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 http://craftsmanship.sv.cmu.edu/katas/gilded-rose-kata 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 http://www.meetup.com/Agile-Staffordshire/events/201606022/, 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 meetup.com

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 meetup.com

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.

May 2014 – Lean Code Challenge

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

For this month’s session, we’ve decided to re-run the Lean Code Challenge that was run back in July 2011. The format is quite simple – Paul will introduce 7 key Lean Software principles and their importance in software development. Following this, the code challenge will take an hour, although being split into six iterations, it really is fast and furious. Finally we will have a little retrospective about the challenge and what people have learnt.

As we’re going to be writing code, bring a laptop with your favourite language / IDE / compilers.

If you’re interested, please sign up on meetup.com

 

Open Data Institute Retrospective

Stuart Harrison, ruby developer for the ODI, introduced us to the ODI’s mission and how it facilitates ‘openness’.

I think for many Agile Staffordshire participants, including me, it was a great introduction to an organisation of which only the name may have been familiar. Stuart provided a spirited talk on the rationale for open data and shed some light on how open data has already gained some traction.

It is possible I am really late to the ‘open data game’, but I find the idea profound. I first encountered open data systems being realised during Brooklyn Beta 2013. Since then I have been interested in how applications can make use of available open data to overcome information hoarding. I think this is relevant to Agile Staffordshire, many of us being involved in software development for the web. How many great projects have stalled due to unavailable data; and particularly data that could really benefit society by being open, authoritative and reliable? Public information could be stored in several data stores, with no external access to the organisation responsible and with no arbitration or authority. Stuart explained the situation by way of a scenario involving an app designed to provide information on public transport.

The introduction to ODI provides Agile Staffordshire with a number of things to think about:

  • How can we become more open? Would it help attract more members if we were?
  • Could we make our projects open, inviting other interest groups to make use of the fruits of our labour?
  • Is there scope to making our event planning open? Again, some transparency may assist us with reaching more people in the local area.

Overall, for me the main message seems clear. Great software, great business and great people all seem to share one particular trait. They all create more value than they take. ODI embodies this principle and I think we are better off for their endeavours. Software that provides a great experience and service, but also provides opportunity for others to build on it and create value elsewhere is good for everyone.

Guest speaker @pezholio presents an introduction to the Open Data Institute

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

Stuart Harrison, a ruby developer at the Open Data Institute will be giving a talk entitled “Open Data, Open Development and the Open Data Institute”, and he’ll be talking about open data in general (what open data is, and what good open data looks like), the work of the ODI, and their open development practices.

For those of you who are unfamiliar with the ODI, you can find more information about them at http://theodi.org/

Anagram Kata (Strikes Back)

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

March is all about code kata. We shall be visiting a kata that has been run before – Anagram! If you do not know what code kata is, start with Dave’s Blog and then read his anagram kata post.

We like change, so consider throwing some into this exercise (particularly those who have done it before). Some suggestions:

  • Profile the application, perhaps in both time (execution speed) and space (memory usage).
  • Consider intermediate list processing and storage (structure the word list).
  • Try TDD in a pair.
  • Complete Dave’s suggestions - For added programming pleasure, find the longest words that are anagrams, and find the set of anagrams containing the most words (so “parsley players replays sparely” would not win, having only four words in the set).

The word list we used last time is still available on my blog. Bring your own laptops and whatever programming tools you wish. Wireless Internet access and a desktop computer with which to cut code will be available should you require it.

I look forward to seeing you this March!

Lego Robots

Date: Thursday 27th February 2014
Time: 7:00pm
Venue: Staffordshire University – Stafford Campus (Octagon building, K102)

This month, LEGO ROBOTS! Andrew Seward (@MrAndrew) will show us how to bring together as one the two higher art forms of programming and Lego – an overview of what’s involved and why it’s such a great idea, and then we’ll get the chance to build and program a Lego robot of our own!

January 2014 – Kata with Constraints

Calculator Kata

Calculator Kata

Date: Thursday 23rd January 2014
Time: 7:00pm
Venue: Staffordshire University – Stafford Campus (Octagon building, K102)

With the new year now behind us, to kick start 2014 Agile Staffordshire will be going back to basics with a twist. A key technique in agile development is Test Driven Development (TDD), a difficult skill to master yet often practiced through simple Kata exercises. For the uninitiated, Katas are a reference to martial arts where students repeatably practice a set of moves in order to better learn and understand. Programming Katas are similar short 10-30 minute challenges where the goal is the same but each attempt can lead you to experience a different journey.

This month we will be pairing together to do the String Calculator by Roy Osherove but with a constraint of your choosing. Kata rules are below, as are a selection of constraints but feel free to choose your own. There is no set language, but you will need one with a testing framework for TDD.

String Calculator

The following is a TDD Kata- an exercise in coding, refactoring and test-first, that you should apply daily for at least 15 minutes (I do 30).

Before you start:

  • Try not to read ahead.
  • Do one task at a time. The trick is to learn to work incrementally.
  • Make sure you only test for correct inputs. there is no need to test for invalid inputs for this kata

String Calculator

  1. Create a simple String calculator with a method int Add(string numbers)
    1. The method can take 0, 1 or 2 numbers, and will return their sum (for an empty string it will return 0) for example “” or “1” or “1,2”
    2. Start with the simplest test case of an empty string and move to 1 and two numbers
    3. Remember to solve things as simply as possible so that you force yourself to write tests you did not think about
    4. Remember to refactor after each passing test
  2. Allow the Add method to handle an unknown amount of numbers
  3. Allow the Add method to handle new lines between numbers (instead of commas).
    1. the following input is ok:  “1\n2,3”  (will equal 6)
    2. the following input is NOT ok:  “1,\n” (not need to prove it – just clarifying)
  4. Support different delimiters
    1. to change a delimiter, the beginning of the string will contain a separate line that looks like this:   “//[delimiter]\n[numbers…]” for example “//;\n1;2” should return three where the default delimiter is ‘;’ .
    2. the first line is optional. all existing scenarios should still be supported
  5. Calling Add with a negative number will throw an exception “negatives not allowed” – and the negative that was passed.if there are multiple negatives, show all of them in the exception message

    stop here if you are a beginner. Continue if you can finish the steps so far in less than 30 minutes.


  6. Numbers bigger than 1000 should be ignored, so adding 2 + 1001  = 2
  7. Delimiters can be of any length with the following format:  “//[delimiter]\n” for example: “//[***]\n1***2***3” should return 6
  8. Allow multiple delimiters like this:  “//[delim1][delim2]\n” for example “//[*][%]\n1*2%3” should return 6.
  9. make sure you can also handle multiple delimiters with length longer than one char

Kata Constraints

Select ONE constraint from below.

  • No If, Else, Switch Statements
  • No mouse
  • No Classes
  • Use a functional language
  • No Mutable State
  • No Getters/Setters
  • No IDE
  • 2 Refactorings after each passing test
  • Single word method names
  • Or make one up yourself…

Many of the constraints above which affect the design of code, work towards improving object calisthenics. More on this can be found here.

The goal of the session is not to complete the Kata (you may even restart several times) but to learn through the experience of your selected constraint.

This will also be a special month, as it will be the last regular attendance of one of Agile Staffordshire’s founding members. Neil Kidd will be moving on to a new position at 7Digital, so all please wish him the best.

Hope to see you there.
Jon

 


Tag Cloud