Senior Software Developer,
Agile Leader
QIAGEN GmbH, Hilden (Biotechnology)
December 2016 till present
I worked on a java web application which managed the workflow of molecular diagnostic tests in a laboratory and interfaced with many external systems and instruments. I had the roles of technical lead and agile lead.
The software was initially developed by an external software house, who chose to use the Vaadin framework. When I started at QIAGEN the decision was made to internalise further development of the product, so we inherited the code base. The internal team grew to over 20 members, split into multiple scrum teams.
As technical lead I was involved in the hiring and training process of many developers, as well as leading one of the scrum teams. I used my deep understanding of the architecture to guide development decisions.
As agile lead I drove the changes required to achieve effective team structures over multiple sites as the project evolved. I regularly led retrospectives on multiple levels.
I was the leader of QIAGEN's agile community of practice. Together we planed, organised and moderated events to improve agile understanding and drive improvements across departments, projects and sites. I coached many scrum masters and introduced new practices such as Mob Programming, Lean Coffee and DIY usability testing. At department level I also served as a change agent and was a member of the software strategy team.
Senior Software Architect,
Scrum Master
September 2007 till December 2016
Initially employed as software developer, I was promoted to a senior software architect role after two years.
One of my main responsibilities was as architect in the scrum team building the collaborative Business Intelligence product, arcplan Engage - a web application built using ASP.NET and a responsive HTML5 client. I oversaw the design of front and back end, coordinating with other scrum teams that built the software systems we integrated with.
Our team also took over the migration of legacy .NET and Java clients to HTML5. I was the architect of this client redesign project. After analysing the current status of the HTML5 client, we chose to focus the redesign around making a clearer separation of the HTML5 components from the rest of the client code. The resulting HTML5 components were reusable and independently testable. Performance increased tenfold - we measured every night - and maintainability immeasurably.
I was regarded as the expert in automated testing, and drove the development of the Continuous Integration processes, consisting of pre-commit stages using TFS Gated Checkin Builds, and post-checkin stages using Jenkins to automate unit tests (JavaScript/Jasmine, c#), Functional tests (with FitNesse), front-end tests (using casper, phantomJS, phantomCSS), code metrics (with powershell and c#) and performance tests (using powershell and javascript/phantomJS).
I was awarded the Most Valuable Player award at Longview in 2014 for my work in this area.
Software Engineer
Ragtime GmbH, Hilden (Business Publishing)
October 1999 till August 2007
Development of the RagTime Business Publishing software, running on Mac and Windows. RagTime is a cross between DTP and Office software, using frame based layout to present text, spreadsheets, charts and images. Written in C++.
Projects I worked on included:
- Text processing module. At the heart of this module was a layout algorithm based upon TeX, but extended for features such as packing textual and non-textual content into irregular containers, and using multiple columns. We relied heavily on background threads and caching to keep the algorithm fast enough to achieve a live-rebreak of text as the container size changed.
- 2D Graphics module. We abstracted the graphical systems (GDI+, Quartz, PostScript) with a common interface that could be used by other modules throughout the code base. We implemented functionality that was not offered natively on any particular platform - for example hit testing was missing in early versions of Quartz on MacOSX, so I wrote routines to flatten paths into polylines and check distance from a mouse position.
- Text-on-a-path feature. Dynamic algorithm to position Text on any 2D path, using other RagTime modules (Text and Graphics)
- Bitmap processing module. Stream based engine to convert bitmaps into different formats.
- Spell checking module. A service offering spell checking in a background thread. A plugin architecture was used to inject spell checking implementations either from the OS or by a third party library.
- PostScript export. Export a RagTime document to PostScript format for printing or conversion into PDF.
- HTML export. Export a RagTime document into an HTML, using many nasty tricks to preserve layout.
Analyst/Programmer
Fraser Williams Financial Systems Ltd, Leicester, England (ERP)
Summer 1998 till September 1999
Developed bespoke software solutions for our clients, often working at the customer site. Typical work included writing extensions to the ERP systems Agresso and Axapta (now Microsoft Dynamics).
Solutions were implemented using C, SQL, UNIX scripts, X++, Crystal Reports.
Lead Programmer (Playstation)
arc Developments, Walsall, England (video game developers)
Autumn 1995 till Summer 1998
Responsible for Sony PlayStation version of the game 4-4-2 soccer, released by Virgin Interactive Entertainment in 1998. As well as implementing the playstation specific parts of the game, I wrote the library which handled the football management simulation, also used by the PC and Sega Saturn versions.
Developed primarily in C, with performance critical routines optimized directly in assembler.