Experienced agile technical team lead / senior software engineer with who is passionate about software development. I fully believe that there is nothing that cant be achieved with the believe and investment of the required stakeholders.
Lloyds Banking Group
Mar 2014 – Present
Working as Technical Lead of the ‘Simplify and Protect’ theme within ‘Platform Evolution’ directive. My responsibilities evolved around working with other Technical Leads and stakeholders to investigate and confirm an approach to allow for the monolith legacy platform to be broken up and modularised to protect the core business functions. While working with the technical leads we had to liaise with developers located offshore and manage their day to day development tasks. Part of this role was to educate developers on better practices. Showing and educating developers on ‘what good looks like’ and the ecosystem around implementing and maintaining this.
There were a large number of challenges that needed to be considered when outlining an approach that would achieve the requirements, working alongside BA’s, Enterprise Architects and business stakeholders. The major challenges we tacked were:
- Working with ClearCase as the source repository system, alongside GIT and Gerrit for other dependencies.
- Keeping over 45 in flight initiatives productive.
- Educating better practices
- Applying an ‘Agile’ flow within the team, when working within a Waterfall company
Key Technologies: MacOS X, Centos/Linux, WebShpere 6.5/8, Tomcat 7, Java 5,6,7 Spring, Maven, ANT, ClearCase, JBehave, GIT, Gerrit.
Nov 2012 – Mar 2014
Working within the Access & Identify management teams within an Agile Kanban method. One of the requirements during this role was to suggest improvements to the process and work alongside other experienced agile developers to help the adoption and continual refinement of agile process. This has been applied while working on a number of core internal projects focused on replacing the legacy authentication/access/identity management layer with both internal and third party clients.
The replacement platform was formed of an internal REST api application created using DropWizard, coupled with the use of Akamai and Janrain to produce a scalable and robust solution. As a world wide company with clients in different timezones producing as close to 100% up time as possible was a key requirement for the system replacement. All of the server management and deployment was managed using puppet.
Key Technologies: Mac OS X, Linux/Ubuntu/Centos, Puppet, REST API services, DropWizard, JAX-B, MariaDB, Oracle 11g, JSON, Tomcat 7, Spring, Spring MVC, Jetty, TomEE, DropWizard framework, WireMock, Jackson, Hyxtrix, Jersey, Nagios, Ruby, Maven 2/3, AHP, GIT, Subversion and CVS.
July 2012 – Nov 2012
During my time at Camelot I achieved a large number of changes in a very small space of time. When I arrived onto the project at Camelot the process was very much waterfall masquerading as agile. There were fixed deadlines for parts of the system where the requirements were unknown, resulting in a lack of risk visibility and disengagement from the development team. I successfully convinced the management and my team that moving to a Kanban approach would allowing us to identify and manage risk early without effecting velocity. This allowed me to increase team engagement with the project. I also lobbied for and convinced the developers in other teams to allow us to informally ‘showcase’ the API’s my team created that they would consume. Altho this was not a formal arrangement both teams agreed it was very effective in early identification of any potential integration problems. By the time I had left Camelot the team were working very effectively at identifying risk and managing estimates allowing delivery of key functionality.
Key Technologies: Agile coaching, Mac OS X, Centos/Linux, Java 7, JPA/Hibernate, Spring (inc SpringData), Cucumber, Tomcat 7, Postgres, Maven 3, CXF, JAX-B/RS, REST API services, Jackson, GIT and Jenkins.
Apr 2011 – July 2012
Working within an agile development team consisting of a business analyst, product owner and developers, using a Kanban method with Pair Programming/TDD/BDD principles. The aim of the team was to replace the existing legacy J2EE application with a new high availability REST API service. The REST service was developed using Jersey & Jackson along with Fitnesse for automated testing of all APIs. Along with functional testing, we also needed to performance test the application to ensure it was able to handle the high traffic volumes generated by all of the Sky channels that required a user to be authenticated. Out testing proved the system would support in access of 5000 transactions per second. As part of the architecture design the system was able to easily be scaled horizontally thanks to an automated continuous delivery patter leveraging puppet for configuration management and automated deployment of Linux servers. As the project was dealing with customer data security was a major concern that was address as a major part of the project. One key benefit from my time working at Sky was the opportunity to see how the agile process can be applied to different teams. As Sky use firm Pair Programming/TDD/BDD principles that are tailored and tweaked to fit individual teams. After working with a number of teams it allowed me to see discuss and evaluate different approaches along with gain an insight into why teams decided to work in specific ways. Another prototype project I was involved within was to create an IP based blocking system to handle DDOS attacks, for this project the technology stack of Groovy & MongoDB was used. Along with development, other responsibilities included out of hours support for the live production system.
Key Technologies: Mac OS X, Linux/Centos, Java 6/7, Groovy, Ruby, BigCouch/Couch DB (NoSQL), Oracle 10/11g, PL/SQL, SQL query optimisation, Pair Programming, TDD, Subversion, Jenkins, Internal client integration, REST API services, Agile, Tomcat 6.x, JAX-RS, JAX-WS, JAX-B, Jackson, Jersey, IntelliJ, Spring, Fitnesse, JSON, Nagios, Puppet. Along with exposure to Erlang, Scala, CouchBase, Postgres and Cucumber.
Dec-2010 – Apr-2011
My role at the Met Office offered some very interesting challenges. As the Met Office is heavily influenced by government and large clients all of their projects were run in a solid waterfall method, however I attempted to work within a more Agile approach including pushing for delivery of smaller changes and encouraging earlier client integration. The team I was working within had two products to deliver. The first was to allow for the production of a RESTApi that would allow for hourly weather information to be consumed by clients, the second was to migrate away from WebLogic to JBoss.
Key Technologies: Core Java 7, Spring, Hibernate, PL/SQL, SQL, Mockito, PowerMockito, JUnit, Java multithreading and concurrency.
EADS / Cassidian
Sept 2010 – Dec 2010
As a member of an agile (SCRUM) team working to develop a high availability business continuity(DR) solution for use within the fire services control rooms. All development was under taken using JEE6 (server side) technologies to develop REST services with Jersey & Jackson. Coupled with Swing for the client side UI. The environment was very fast passed with constant change, resulting in the need for a highly adaptive working style, both individually and pair programming. Other common tasks included maintaining Maven build scripts and Hudson/Jenkins CI configuration.
Key Technologies: Java 7, EJB 3.1, JMS, Glassfishv3, Hibernate/JPA, Mockito, PowerMockito, JUnit, Nagios.
Aug 2009 – Sept 2010
Working on a number of difference systems within the self service HR systems arena. My day to day tasks involved system design and implementation (Including bug resolution) using the SCRUM agile methodology. Work was undertaking on both new and legacy systems using technologies from J2EE, Struts 1.2 to the latest Java 6 technology stack with GWT/GXT. Design work was undertaken on moving from the current architecture to a SOA architecture. A major part of my role was working with both internal and remote bespoke development teams helping them introduce a continuous integration(CI) mechanism and help transition other developers to use TDD as part of their development practices. The most successful of which was helping all the teams migrate away from a manually managed build processes to a continuous integration(CI) build system working off of Maven, Hudson/Jenkins and Artifactory.
Key Technologies: J2EE (EJB 3), Java 6, Maven, Hundon/Jenkins, CI, SAO, Struts, Spring, GWT/GXT.
Apr 2008 – July 2009
Aug 2007 – Apr 2008
Development of system changes required for the move in platforms and persistence layers. Design and development work undertaken in C,C++ and Java/J2EE on a number of different projects as needed. Its not possible to give in-depth details about the tasks undertaken due to the secure nature of the working environment.
Key Technologies: Java/J2EE technologies used include, JMS, JNDI, EJB3.0 and Servlets.
Apr 2007 – Aug 2007
My role at Future Publishing was to help debug and optimise an in house framework that had been under development for more than 2 years. The final aim was to bring the framework to maturity for production use, across a number of high traffic websites. Working within a small team using the SCRUM method we were tasked with performance improvements and prototyping a number of enhancements.
Key Technologies: Java 5/6, Spring 2.5, Hibernate, EJB 3.1, JSF, Tomcat, Automated Testing (JUnit/WebDriver), Mockito and PowerMockito.
May 2005 – Apr 2007
While working at Ocado my responsibilities covered a large ranges of different tasks and varied on a day to day basis. My primary task was to work on the heavy data processing sections of the order management systems. Requiring high traffic throughput to enable to warehouse to pick and pack orders. Development tasks would routinely involve working with other areas on the company to ensure that the product being produced met the requirements outlined by the internal customer.
Key Technologies: Java 5, JUnit, Jackson, JDBC, Strips, JSP, Servlets, Swing.