This website does not display correctly in Internet Explorer 8 and older browsers. The commenting system does not work either in these browsers. Sorry.

These talks would need a major update or are not relevant any longer. They are listed here just for completeness.

Developer Productivity

Many traditional assumptions about software development have been challenged in recent years. Agile processes and service oriented architectures are two examples of this. An area that has seen little real scrutiny is developer productivity. Almost by convention, every new tool, framework or approach promises huge gains in productivity but a coherent view of all factors involved is usually missing. In this talk I examine several common myths about developer productivity and show that productivity improvements often require a trade-off with other desirable goals. I also discuss the relative impact of some tools and approaches.

History:

  • Great Indian Developer Summit 2008 - Bangalore, India
  • Keynote, ExpertZone Developer Summit 2006 - Stockholm, Sweden

[Slides]

Ten reasons why Agile teams fail

Agile methodologies such as eXtreme Programming and SCRUM are hot topics today -- and they are also hot targets. When things go wrong on an agile project, it's far too convenient to blame the methodology, and not thepeople charged with implementing it correctly.

In this talk Erik will discuss the most common reasons a team may fail when trying to execute a project using an agile methodology. He will cover how to learn from the mistakes of others, and avoid repeating new mistakes of your own.

This talk is based on experiences Clinton Begin and I have made on projects at ThoughtWorks.

History:

  • Agile China 2007 - Beijing, China
  • Skills Matter Session (June 2007) - London, UK
  • Øredev 2006 - Malmö, Sweden
  • TheServerSide Java Symposium Europe 2006 - Barcelona, Spain

[Slides]

Enterprise Integration Patterns

Repeatable success in delivering complex enterprise systems depends on the ability to leverage experience from past systems. On an architectural level, direct reuse is usually not practical and blueprint architectures are often not flexible enough for complex systems. However, design patterns provide a middle-ground by describing idiomatic use of technologies and capturing the essence of successful designs.

Topics discussed include: An introduction to Enterprise Integration patterns, real world examples, an in-depth look at central patterns and an overview of Enterprise Integration technologies.

Keynote, Microsoft EMEA Architect Forum 2005:

  • Athens, Greece
  • Dublin, Ireland
  • Istanbul, Turkey
  • Lisbon, Portugal
  • Moscow, Russian Federation
  • Prague, Czech Republic
  • Reading, UK
  • Stockholm, Sweden
  • Warsaw, Poland

[Slides]

Dependency Injection

An introduction into the Inversion of Control principle and the Dependency Injection pattern, with a discussion of the benefits of using these, practical examples using the popular Spring IoC container, and an explanation why using IoC will benefit any Agile development effort.

The presentation follows the implementation of an examplary user story. It discusses different implementation strategies, including traditional Service Locators, and demonstrates the benefits of an implementation that uses Dependency Injection. It also contrasts testability of the respective designs. The source code linked on the left hand side is the code written on stage at ØreDev.

History:

  • Øredev 2005 - Malmö, Sweden

[Slides][Source]

Test-Driven Development - An Overview

Our opening statement is that Test Driven Development is, despite its name, not mainly about testing. This is explained and we briefly discuss the TDD mantra "red-green-refactor" before demonstrating Test Driven Development in a programming session. We start from scratch with no prepared code and implement 5 user stories in 3 iterations, each of which has a theme:TDD using state-based testing, embracing change and refactoring, and interaction-based testing with Mock Objects.

Of course, we pair-program and discuss many of the small design decisions we are making. It is worth noting that we use the ReSharper and TestDriven.NET add-ins for Visual Studio to increase our productivity and thus the pace of the session.

History:

  • NorDev 2005 - Stockholm, Sweden - with Jimmy Nilsson

[Slides]

Towards a testable application architecture

In the first half of the presentation John Horgan and I discuss Dependency Injection and Infrastructure wrappers, which we think are essential ingredients for testable application architectures. We also introduce PicoContainer, a lightweight Inversion of Control container that pioneered constructor based dependency injection.

In the second half of the presentation we show how these concepts can be applied in a real enterprise application. In particular, we will show how to refactor a set of EJBs that use service locators into a set of objects that are managed by PicoContainer and wrapped by a single EJB facade. We will also show how to exend the popular Struts MVC framework so that it uses the Dependency Injection pattern for it web actions.

History:

  • JAOO 2004 - Århus, Denmark - with John Horgan

[Slides][Source]

Data programming beyond ADO.NET

With the first versions of the .NET framework Microsoft released a new data programming API in the form of ADO.NET. This has proven quite flexible and popular with developers. Nonetheless, there are several projects underway that either extend ADO.NET or provide more advanced frameworks.

I am presenting the Neo framework, an Open Source project which I started, and the forthcoming ObjectSpaces framework from Microsoft. [Plans for this have changed substantially since the talk.] I will also compare their individual strengths and differences in approach.

History:

  • B.NET User Group meeting May 2004 - Bangalore, India

[Slides][Neo site][ObjectSpaces on MSDN]

Persistence Neutrality using the EOB application service framework

Working with J2EE for almost five years [as of 2003], developers of enterprise software have gained much experience with this platform. Common enterprise design patterns have emerged and strength as much as weaknesses of the EJB model have been discovered. Despite the successful introduction of container managed persistence we believe to have spotted a trend towards reduced EJB container usage and the appearance of several new persistence frameworks.

Enterprise Object Broker (EOB) is an application service framework that imposes no restriction on the persistence framework used. Common choices include Prevayler and Hibernate. It is an open framework to leverage existing designs and provides transparent RPC for easy client-side usage.

History:

  • JAOO 2003 - Aarhus, Denmark - September 2003

[Slides]