Craig Smith

Craig Smith

Craig has been a software developer for almost 15 years, specialising in a large number of technologies in that time. He has been an Agile practitioner for the last seven years and is a Certified Scrum Master and a member of both the Scrum Alliance and Agile Alliance. He is currently working within Suncorp's Business Technology division as a Systems Engineer, fulfilling the role of a technical lead and Agile coach on large Java technology projects. He has presented at many international conferences including Agile 2008 and the Australian Software Engineering Conference.

Experiences from Agile Projects Great and Small

Full Paper Slides

Over the last five years we have been relentlessly applying Agile practices on a number of projects, great and small, with decent success. These successes, however, have not been achieved without challenges and lessons learned along the way. This report identifies some of the important practices we have learnt and specifically highlights examples from a number of different software development projects of varying sizes within this period and within the same organisation.

Team Practices: In this section, we will discuss some rules for the daily standup, as well as issues encountered when dealing with non-traditional teams. The benefits and pitfalls to iteration kickoff sessions will be covered, especially in relation to small and large teams. Retrospectives form a central plank of an Agile team's practices as they afford a team the luxury of employing a light-weight methodology in the confidence that they will observe any shortcomings impacting them and adapt appropriately. Observations from retrospectives will be discussed, as well as issues encountered when teams are remote. How iteration lengths are defined and issues in moving teams to shorter iterations and a release structure and while some observations may seem counter-intuitive at first but a rationale for our observations will be covered. Finally, an explanation on why the definition of "done" is important and how the team needs to agree on what this means and what happens when it is not understood.

Developer Practices: Issues in relation to scheduling iteration deployment as well as deployment to a locked down production environment will be discussed. Practices such as pair programming, test driven development and continuous integration will be discussed including 100% code coverage from unit tests, all production code paired and test-driven, minimal design up front but an appreciation for when such design made sense, customer focused outcomes, full continuous integration, daily pair rotation and high levels of automation. Finally allowing innovation in the team and ways of improving the code base and the speed of development will be covered.

Project Characteristics: The effect of project duration on Agile strategies, the importance of the various Agile practices relevant to different kinds of projects is discussed including projects having a high degree of application development, versus infrastructure versus integration. Approaches to design and when up-front design adds value will be discussed.

Equipment, Tools and Facilities: Some projects had geographically and technical dispersed teams, whilst others were simply distributed between buildings or floors. Travel, remote pairing and communication tools were used to alleviate this issue. Also, a discussion on how technology helps, but collocation is better. Tools used for collaboration, such as iteration management tools and wikis will be discussed and the advantages and disadvantages to some of these tools.Challenges in dealing with facilities, especially cubicles and small meeting rooms will be discussed and how issues are worked around.

People and Roles: Methods and lessons learnt in relation to influencing team members will be discussed, especially those new or resistant to Agile.Issues with remote and overloaded customers will be discussed here. We look at the role of testers, business analysts, infrastructure and deployment specialists within the Agile team. How the use of Agile techniques and processes have attracted quality staff and improved the skills of existing staff will be covered.

Change From the Bottom Up And Top Down: Seeding new approaches and techniques learnt from previous projects will be discussed, as well as approaches to dealing with management who are new to Agile. Dealing with organization change and Agile driven from the top will be covered, in relation to practitioners who have Agile experience and those new to the concepts.

Data Migration in an Agile Open Source World

Full Paper

Data migration is often a necessary but often overlooked and underestimated part of many software projects. This talk will cover approaches to data migration using Agile techniques and the subtle differences from traditional Agile development projects. We also look at its relationship with application integration as well as how open source software can be used effectively to develop and support the process.

Agile techniques including:

  • development team approaches and techniques - discussion of how to break the workload up as well the development team rules and XP approaches to development
  • like any Agile task, breaking it down helps immensely -
  • approaches to migrating data iteratively - discussion of ways to break down the requirements and development
  • prioritisation and categorisation of data to be migrated - Agile prioritisation to determine importance of data to be migrated, use of the migration backlog and ways to categorise the data to understand the approach and order of migration
  • the right amount of analysis up front, balanced with Agile design techniques
  • implementation approaches - big bang one-off data migration vs iterative approaches to migrating data
  • the importance and right amount of reconciliation
  • similarities to application integration and how to get two for the price of one

Open Source support including:

  • the use of continuous integration tools to manage the process and determine your implementation and migration approach
  • the use of IDEs and database tools to develop data migration code
  • the use of ETL tools and how they assist integration and data migration and a look at open source tools vs rolling your own
  • testing tools and approaches

Published Oct 24, 2009.

0 responses to Craig Smith

There are no comments for this page yet. Be the first!

Leave a Reply