You are currently browsing the archives for the Programming category


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!

 

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

 

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!


Tag Cloud