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)
