Archive for the 'Events' Category

DDD8

Today I went to the DeveloperDeveloperDeveloper day at the Microsoft campus in Thames Valley Park, Reading. It was a fantastic day with many great sessions covering a wide range of topics.

The first session I attended was “Mixing functional and object oriented approaches to programming in C#“ by Mark Needham from Thoughtworks. Mark discussed using functional programming techniques in C#. The talk focussed on using features of LINQ to replace imperative operations, such as for-each loops and if-else statements. Mark applied functional techniques at the operation-level and also at the structural-level, demonstrating how some common “Gang Of Four” patterns can implemented using a functional approach, by passing functions instead of interface implementations.

Mark recommended the book “Real-World Functional Programming” as a good resource on functional programming techniques.

The next session I attended was “Commercial Software Development – Writing Software Is Easy, Not Going Bust Is The Hard Bit” by Liam Westley. Liam gave an informative and entertaining talk on tactics he found useful when running a software development company. His tips included:

  • Offering customers an alternative to phone-based support to avoid interruptions.
  • Using automated unit tests and functional tests to prevent bugs from reaching production only to be discovered by your users. Liam said for him, automated testing didn’t immediately increase productivity, but over time has enabled him to develop high-quality software faster, resulting in satisfied customers.
  • Having good logging and error notifications. This enabled Liam to quickly identify and fix problems, sometimes before the customer had even raised the issue.
  • Get organised by tracking time, thoroughly reading and understanding contracts, always having an agenda for meetings and keeping a detailed history of support calls.
  • Improve your sales pitches by researching the business you are selling to and focusing on delivering value to the business, not just a set of features. He also recommends using light-weight specification documents that allow for change and spreading costs over time.

Liam suggested a good book on software product pricing called “Don’t Just Roll The Dice”.

The last session for the morning was “C# 4” by StackOverflow superstar, Jon Skeet. Jon discussed the new features of C#4, including named parameters, improved COM-interop, generic variance (covariants, contravariants and invariants, oh my!) and dynamic typing.

During the lunch break there was a series of Grok talks. Several presenters gave short talks on using T4 templates, the features of CodeRush Xpress, tracking tasks using a personal Kanban board and an introduction to Albacore: a non-XML based build system.

The first session I attended after lunch was “C# on the iPhone with Monotouch” presented by Chris Hardy. MonoTouch allows you develop iPhone apps using C# on Mono, an open-source version of the .NET Framework. I was amazed at the tooling support and how well it integrated with the iPhone development tools. Chris said the MonoTouch team released support for the iPad within 24 hours of the SDK being released by Apple. You still need a Mac to develop, but the fact you can use C# and standard .NET libraries makes it easy for .NET developers to reuse their existing skills. Chris stressed that it’s still important to learn how to read Objective-C to follow the Apple documentation. The talk was very inspirational and I now might have to invest in a MacBook Pro :-)

The last talk I went to was “Testing C# and ASP.Net applications using Ruby” presented by Ben Hall (who also happed to be celebrating his birthday, resulting in birthday cake and a chorus of Happy Birthday To You). Ben showed that Ruby can be used to create more readable tests than C#. He gave an example of testing a .NET web application using Cucumber, a Ruby-based Behaviour-Driven Development (BDD) framework. He used IronRuby for calling standard .NET libraries and demonstrated using WebRat for running the tests through a browser. Ben explained the tests can be run in the background by using a “headless“ browser. The RubyMine IDE includes extensive refactoring support and a Visual Studio-like experience. The browser-based tests ran much slower than standard unit tests and Ben suggests only automating high-value, happy-path scenarios.

Further information can be found in the book, Testing ASP.NET Web Applications, which Ben co-authored.

Thanks to the organisers, Microsoft and other sponsors for putting on a fantastic day.

Software Craftsmanship 2009

Yesterday I attended the Software Craftsmanship 2009 conference held at the BBC media centre in London. Overall, it was a great day with some really interesting sessions covering a wide variety of topics. It was especially interesting to share ideas and experiences with developers from different backgrounds using different languages and platforms.

The first session I attended was Pitfalls in Test Authoring with Dave Cleal and John Daniels from Syntropy. This session was an open discussion on identifying test anti-patterns. Some really good points were raised and the discussion was very open and frank. There was some debate on whether unit tests should ever hit the database and what the scope of a unit test should be. This discussion later led to an open spaces talk on functional (integration) testing versus unit testing.

The next session I attended was Gojko Adzic’s talk on Specification Workshops. Gojko gave an excellent presentation on running workshops for the whole team to discuss the requirements for an iteration. One point that stood out for me was that the workshop should focus on what the software needs to do and not how to do it.

Over lunch I had a good chat to some java developers on why we should minimize code comments and the use of NOJOs ("Non Object-oriented Java Object", or DTOs to us .NET developers).  I also had a chance to catch up with some ex-BBC colleagues who were attending the conference.

After lunch I went to a session on Responsibility-Driven Design with Mock Objects by Willem van den Ende and Marc Evers. This was a live pair-programming session developing a text-based adventure game using RSpec and Ruby. The tests were focused on object collaboration rather than state. It was really interesting to see the use of mock objects in Ruby. I also found the focus on pure mocking for testing object collaboration to be very different from using mock objects to simply replace dependencies.

The next session was Empirical Experiences of Refactoring in Open Source by Steve Counsell from Brunel University. Steve presented his findings on the use of refactoring in open-source software. His findings were interesting but I was left a bit confused by what the results of the study meant for software teams. I would be interested to learn more about the conclusions of the study.

The final session I attended was on Test-driven Development of Asynchronous Systems by Nat Pryce. Nat gave a good talk on his experiences with end-to-end testing of asynchronous systems.

We finished the day with a tour of the BBC Television Centre and a few beers in the bar upstairs. A few of us got to see Jonathan Ross recording his Friday night show and apparently U2 were guests. Unfortunately we didn’t bump into Bono, but we did get to have a photo with a TARDIS.

All in all it was a great day and I would like to thank Jason Gorman for organising this excellent event.



Follow

Get every new post delivered to your Inbox.