Mike Williams

Summary

I am an experienced software developer, designer and consultant. Most recently I have been building web-applications in Ruby, leading development teams, and helping organisations implement agile development practices.

I was an early adopter of Ruby, and co-founded the Melbourne Ruby user-group.

Consultant, Cogent Consulting

Technical Lead, Lonely Planet

Lonely Planet is a revered publisher of travel guide-books and, increasingly, digital travel content.

October 2008 – April 2009

My initial engagement at LP was leading a team developing a travel-focused social media site, Lonely Planet Groups (technology: JRuby, Rails, MS-SQL). There I:

  • Pioneered the use of Ruby on Rails at Lonely Planet, laying the groundwork for later projects (today, most new applications there use the same stack)
  • Led a small, agile development team
  • Built a platform that allows travellers to “Share links, photos and ideas on their favourite travel topics”
  • Integrated the Apache Shindig OpenSocial container to provide a platform for “gadgets”

May 2009 – July 2009

After release of “Groups”, I focused for several months on infrastructure to support a public API. Specifically, I:

  • Built an OAuth provider, to allow secure third-party access to LP user data

August 2009 – present

Most recently I’ve been working on a new content-management system, which extracts content from Lonely Planet guidebooks, and supports reuse in digital form. In my role I:

  • Greatly simplified the system architecture, resulting in increased development velocity, and runtime performance
  • Designed and built (private) RESTful APIs, to support integration into other applications
  • Upheld design vision and quality standards, despite high turnover of team members
  • Provided architectural guidance into development of a new tools for authoring and publishing guidebooks

Ruby Test Automation consultant, nabCapital.com

May 2008 – October 2008

nabCapital is a division of National Australia Bank. I was engaged within their Data Warehouse group to introduce kick-start their test-automation efforts. Among other things, I:

  • Helped to upskill a team new to agile development
  • Implemented a domain-specific language (DSL) suitable for testing of batch processing (ETL) jobs implemented in IBM InfoSphere DataStage (technology: Ruby)
  • Automated environment configuration, continuous-integration build, and deployment processes

Ruby Developer at Six Figures

Jan 2008 – April 2008

I helped build Six Figures – a recruiting site built using Rails.

  • Mentored other developers in use of Ruby, and test-driven, object-oriented design
  • Used Ruby meta-programming techniques to reduce coding effort and improve maintainability
  • Focused the team’s efforts by encouraging a more rigourous, iterative development cycle
  • Migrated the system from MySQL to PostgreSQL

Consultant, Thoughtworks

Jun 2004 – Mar 2007

Thoughtworks is a global systems integrator, specialising in using agile methods to build enterprise-scale software solutions. During my three years there, I worked on projects at various Melbourne clients.

Delivery Manager & Technical Lead, Home at Yellow, Sensis

Nov 2006 – Mar 2007

Sensis Home at Yellow is an online magazine focused on home improvements (technology: Java, bespoke MVC framework, Majitek GridSystem). I joined the team as Technical Lead, and later inherited a Delivery Manager role. Highlights were:

  • Led a 12-person agile project team
  • Built a highly-dynamic, Ajax-heavy website
  • Drove the first use of Ruby on Rails within Sensis (a content-management system for the main Home at Yellow site)

Senior Developer, eCRS, National Australia Bank

Oct 2006 – Nov 2006

I spent a couple of months assisting on a project to build a credit-rating system (technology: Java, Struts, Hibernate). The project was troubled, and my role involved:

  • Delivered working software!
  • Promoted pairing, test-drive design, and other agile practices, in an effort to improve code quality
  • Coached other developers in object-oriented design techniques
  • Strengthened the application’s “domain model”, to reduce duplication and improve maintainability

Technical Lead, Selenium Core

Jul 2006 – Sep 2006

Selenium is a leading web-application acceptance-testing tool (technology: Javascript). It was originally developed within Thoughtworks, and later released as open-source. In mid-2006, I led a Melbourne-based team dedicated to improving the usability and utility of the tool.

Senior Developer, CIB, National Australia Bank

May 2006 – Jun 2006

Team Lead, Activ8, Swann Insurance

Jun 2005 – Apr 2006

“Activ8” allows vehicle dealers to sell Swann insurance products during a vehicle purchase (technology: Java, Struts, Hibernate, ILOG JRules). The project had been uncommonly successful in it’s first two stages, so expectations were high. I joined the team in the third phase of the application’s development, assuming the roles of technical lead and “iteration manager”. My role involved:

  • Planned releases, in conjunction with the customer
  • Managed a team of 7
  • Took primary responsibility for design decisions (while involving the rest of the team)
  • Ran and tuned the iterative development process
  • Successfully delivered phase 3 on-time and on-budget

Senior Developer, CGU Connect, CGU Insurance

Jul 2004 – Apr 2005

Senior Software Engineer, Agentis Software

Mar 2002 – Jun 2004

Agentis develops products for rapid development of business software. I was a senior member of the team tasked with automatic generation of Java/J2EE code based on business-process models. While there, I:

  • Led the design and implementation of a model-driven J2EE compiler/code-generator
  • Chaired high-level design meetings
  • Introduced various agile development practices, helping to make my team the most productive in the engineering organisation
  • Coached the engineering organisation (~20 developers) in adoption of agile development practices
  • Created automated unit- and component-testing processes, and promoted test-driven development
  • Designed and installed a new development planning and tracking process, based on Scrum

Senior Software Engineer, Cortex e-Business

Dec 2000 – Feb 2002

I joined Cortex when they expanded their Sydney operation into Melbourne in early 2001, and was the first hire for the Melbourne office.

  • Recruited additional staff for the Melbourne office
  • Managed and mentored junior programmers
  • Key member of a project to create a reusable B2C platform (CORSTORE)
  • Enhanced Cortex’s system for build, deployment and automated testing of J2EE applications
  • Implemented a continuous-integration process
  • Championed the use of agile development methodologies within Cortex
  • Developed a code-generator for rapid development of EJB applications

Cortex later shut down their Melbourne operation, and was reborn as a product-development company, Cenqua, which is now part of Atlassian.

Solution Architect, Andersen Consulting (now Accenture), London

Nov 1998 – Mar 2000

AC was commissioned by a global telecommunications company to build a web front-end for management of “Centrex” virtual-PABX services. I was contracted to provide expertise in web-development, and acted as lead developer and technical architect for the web component of the project.

  • Provided expertise in web-related and open-systems technologies, including HTML, HTTP, CGI, web-server administration, TCP/IP networking, and Internet security
  • Introduced Java to the project, along with Java Servlets, Enterprise JavaBeans and XML
  • Coached a team of developers learning to program in Java, and also taught Perl and C
  • Designed and implemented a web-application framework
  • Implemented a security framework, involving the use of LDAP, JNDI and SSL client certificates
  • Automated the product-build process, and implemented continuous-integration
  • Installed development tools, and maintained the development environment

Contract Web/network/UNIX administrator, London

Aug 1996 – Aug 1998

In London I worked as an independent contractor, providing expertise in UNIX and TCP/IP-based network services. My clients included:

  • ICO Global Communications
  • British Gas Services
  • Derwent Information

During this time I did a wide variety of things:

  • Built a web-based corporate “phonebook” application (using CGI/Perl)
  • Maintained UNIX servers (Solaris, mostly)
  • Maintained network services, including
    • Internet & intranet web-servers
    • email gateways (sendmail, qmail)
    • internal & external DNS
    • firewalls
    • NIS+
    • Samba
    • Usenet news (NNTP, inews)

Analyst/Programmer, Dept. of Survey and Land Information, NZ

Oct 1993 – Apr 1996

  • Implemented server software for a real-time graphical-query system (using Perl, C, Oracle)
  • Managed a project to replace existing Digital equipment with Sun/Solaris equipment
  • Implemented a firewall gateway to the Internet, at a time when such gateways were rare
  • Took a lead role in promoting web-technology as a means of sharing information within the organisation
  • Maintained TCP/IP network services, including e-mail and Usenet news.
  • Provided (as part of a team) technical support for 40+ UNIX workstations throughout New Zealand, together with software (Oracle, Vision GIS) and attendant peripherals

Unix Consultant, InForm Group, NZ

Apr 1992 – Sep 1993

InForm provide a legal practice-management product, implemented in a 4GL. While there, I:

  • Provided UNIX expertise, and administered the in-house UNIX systems
  • Implemented systems to support the development process: source code control, build automation and release management
  • Installed and maintained e-mail and Usenet news facilities

Research Programmer, Department of Computer Science, Auckland University, NZ,

Feb 1991 – Jan 1992

Developed a graphical interface (implemented in C) for an experimental object-oriented language (Kea)