Observations from a Large Scale Agile Project

agilityWell, I’ve been living and working in Bristol 3-4 days a week since last October (2013) and working on a pretty interesting and pretty intense project.

I’m the technical lead on a large scale Agile transformation project that will be used in 22’000 locations across the UK by 60’000 people, with 40 million processes completed per year. It’ll be developed using Open Source technologies and will align with the Government Digital Services assessment criteria.

There are 3 multi-disciplinary scrum teams with around 12 people in each team; and thats just for the software development side of things alone. In total, there’s around 150-200 people on the programme, including a number of additional software and infrastructure suppliers who are looking after software assurance and devops.

Some key observations:

  • Communication is key – with this many people, it’s important that information is shared quickly and accurately. Scrum of Scrums is a decent forum, but I’d also recommend that the multi-disciplinary stand-ups are used too, i.e. Tech leads, UX, BA etc. Share information here across the disciplines, and have it relayed back to the teams and back to ‘management’. People who feel engaged in the process are happier, and it has the bonus effect of both killing rumours and moving progress in the same direction across all teams.
  • Governance of Shared Services – On this programme, there are 3 other parallel projects. Each of these other projects have their own requirements for Authentication / Authorisation, Integration, Document Generation etc. It’s very easy to think ‘lets do it once and share across projects’, but suddenly you are confronted with the functional and non-functional requirements of all these other projects to consider. Don’t under-estimate it; the governance alone is a full time job and it needs customer ownership.
  • Developers argue – Everyone can and often will have a different opinion and sometimes it can get heated. The important point is to listen to all sides and share the concerns. If you don’t lance that boil, it can go septic. This is especially important when you have a multi-supplier delivery team. Have a session across teams to look at best coding practices and share them. Do this frequently.
  • Open Source has it’s problems – What version of MySQL should you use? Oracle Classic or Enterprise, what about the DB Engine? Percona? TokaDB? How’s it covered with licensing? What about the Jasper reports? Can the community edition be automated with Puppet? Start considering early.
  • Build environments early – Your environment code (i.e. Puppet configs) should be centralised and managed under source control. Every single environment should be built from this repository programatically rather than manually. If your scripts get out of line, then your environments get out of line. No-one wants a Dev and Build server that are different. Your environments should evolve in the same way as your application – this means destroy and rebuild per sprint. Doing this ensures that  you are thoroughly testing everything. Make sure your infrastructure people/suppliers are doing this.
  • Performance Test early  – Performance testing needs to be in-sprint. You need the feedback to come back to you for prioritisation for future work. After all, it’s part of the Agile Testing Quadrant.
  • Give People Opportunities – Get a second-in-command. This ensures that you aren’t a single point of failure, and it helps develop them as well. Roll this approach out through the team. Additionally, have good communications directly with the people on your project to find out what they want to do and be, then see what you can do to assist them on that journey. It’s important to make the time to talk to people directly, otherwise you can lose touch with whats actually going at the coal face.
  • Empower and trust your people – Similar to the point above; encourage and develop your teams ability to think for themselves. Better to have a team of individual, intelligent, autonomous individuals that can own decisions, rather than drones that think you have all the answers. However I will say that this approach to be tempered with some governance, to ensure that each team isn’t re-inventing the wheel – communication is key.
  • Review and improve often – It’s important to have retrospectives at each level, be it scrum team, tech leads, UX etc. Look for the rough edges in your processes and see what can be done to streamline things. For example, we had a failing build because all the teams where committing at the same time – a simple thing like having the tech leads own the commit sorted it. Green Build.
  • Don’t assume it’ll get picked up – Self organising teams are fantastic, but when you’re dealing with passing information over to other suppliers, it’s best to ensure that there’s an owner that can pull things together, at least for the initial few iterations. Pull together a quick and basic checklist to ensure things don’t get missed when handing off software to another supplier.
  • Agile vs Waterfall – It’ll happen. Despite the best intentions of Agile communication, you will inevitably hit a part of your project or programme that is waterfall based. For example, your software development might be a lean, mean, agile sprinting machine, but you cant really roll out to 22’000 locations each sprint. It’s important to align your sprints with the wider programme deadlines. Beware of agile frameworks as well – I’m not convinced on that front.

Davey

Tech Thoughts

I’ve just got back from Paris.. nice place, relaxing time as well. Managed to catch up on a few articles and some reading as well. With that in mind, this post will be the first of what I’ll call ‘Tech Thoughts’; bits and pieces of news/geek stuff that I’ve come across.

First Impressions – MS Surface

Whilst away, I managed to play about with a Microsoft Surface, at one of these ‘pop-up’ stores that was in this case on the ground floor of the biggest shopping centre I’ve been in, Galeries Lafayette. This isn’t a review as such, as I don’t own the device and only had limited time with it, it’s more of gut feel/first impressions.

The MS Surface…what do I think? Well, I’m not convinced. I played about with it, albeit with a French language theme and my thoughts are as follows:

  • It’s easy to get mixed up about how to go about doing something. I mean, it’s like the Surface has a split personality – two ways to accomplish tasks, either via the ‘UI formerly known as Metro’, or via the desktop experience. Couple this with not being sure whether to use the track pad or touch screen for UI elements and you just end up, confused.

    Case in point.. dialogs. As the UI was in French I messed up doing things (as expected), however a dialog would pop up on the screen and at this point you’re not sure whether to reach across the keyboard and close it with your finger, or navigate with the track pad and action it that way.

    I find that this momentary pause to make a decision about how to accomplish a trivial task counter intuitive to the work flow for using a device. Maybe it’s just me, maybe you need to remove the keyboard when using the ‘Metro’ UI, and use the track pad when your keyboard is attached. Not sure.

  • Build quality is solid. The device is sturdy and reasonably weighty as well. The screen proportions suit the 16:9 ratio, which is great for movie watching, but it does mean that the portrait view is strange and elongated. Additionally, I’m not sure why the didn’t consider a means to close shut the touch cover – it tends to hang open.
  • The touch cover is surprisingly responsive with a decent track pad. There is however a plastic feel to it, and it has a ‘lip’ around the edge that reminds me of cheap throwaway kids toys. Type cover also performs well.
  • The UI and software was responsive and fluid under my touch. Again however, it’s disconcerting to switch to desktop mode and get ‘lost’ trying to get back to the ‘Metro view.

Overall I’d say it’s a reasonable Gen-1 device but not something that I’ll be purchasing at this point. I think it would be a great tool for journalists or bloggers on the move, but for more serious work, the Win RT OS is limiting what apps you can use. Saying that, I’m looking forward to the Pro version that will allow installation of full MS applications.

NEST

I’ve been reading a lot on Twitter about folks (e.g. @shanselman) installing NEST. In a nutshell it’s a great looking programmable thermostat that remembers your settings. Designed by Tony Fadell, it certainly looks the part.

Alas, it’s US focused at the moment. I’ve done some digging and you can hack it to get it working in the UK by some clever Wireshark use, but I’d rather wait until they released it properly here.

Some nice articles on it can be found below:

Smart Glass

In essence Xbox Smart Glass turns your mobile phone or tablet into a second screen that interacts with your Xbox 360.

No tablet support is available yet, but should be on the way.

I played about with it whilst watching an episode of the fantastic ‘Breaking Bad’.  It’s decent. Quick enough to respond to input and a really useful when using the newly released Internet Explorer for Xbox.

Word is that games will be able to use the connected device to provide additional game content, such as overlay maps, etc. Kinda dampens the Wii U functionality a bit, doesn’t it!