Thursday, May 24, 2012

Looking back on 18 months at REA

I've just finished an 18 month stint at in Melbourne a couple of weeks ago.  It's been a fantastic gig and a remarkable place to work.  I wanted to share some of the things I've found particularly interesting in a series of blog posts.

REA is an amazing place to work, if I step back I can see I take for granted a level of sophistication in technology, process and staff that most companies in the world will never attain.    

For example, one of the biggest problems I had managing teams here is that there are too many highly experienced and talented staff! Yep, that's been a real problem for me. It's not a problem I mind having, but it does make design decisions a lot harder to make.   

On a process front, Agile and Scrum are yesterday's news, instead most teams here are moving beyond these ideas to newer and broader sources of inspiration such as Lean, Kanban, Lean Startup and Agile UX. It's exciting to be part of a team that is constantly adapting and improving. 

It's also been one of the only places I've seen distributed agile applied successfully. The investment in communications technology (e.g always on Skype) and frequent travel between sites have been impressive and very forward thinking. 

All this is the backdrop to the project I've been working on: code named 'Gandalf' we've been making huge inroads into adopting continuous delivery practices. Using a combination of existing and home grown tools we have moved beyond simple continuous integration to fully automated building, testing, packaging and deployment in multiple environments including Amazon EC2 and VM Ware.  

A dog dressed as two pirates carrying a chest

When I look back I am really proud of what the team has achieved:
  • Providing on-demand end-to-end testing environments for developers and testers in multiple teams
  • Learning, adopting and adapting Amazon's EC2 cloud
  • Working through challenging DevOps issues such as security, monitoring & availability
  • Creating our own tools to automate our integration with EC2, VM Ware, NetScaler and Nagios. 
  • Building a fully automated end-to-end testing pipeline and solving artefact version management in the process  
  • Using metrics to drive improvements to our environments
  • Creating a consistent operating system platform in all environments (EC2 and VM Ware) built using an "infrastructure as code" approach
  • Creating services that let us eliminate environment specific configuration inside our application packages
Each of these successes was won through plenty of mistakes and challenges.  I hope to share some of the lessons I've learned in future posts.

Stay tuned and don't forget to add my new blog to your reading list.