Curriculum Vitae: Nigel Greenway

As a Lead Software Engineer, I strive to ensure the correct approach for the end user is delivered whilst providing business value. I am a positive and motivational person who likes to lead a team to build products around motivated individuals and give them the environment and support they need along with the trust to get the task completed. This is done with open communication and utilising the best of peoples skill sets.

My current way of working are Lean but have recently started to implement Agile methodologies to strengthen my ways of working. By working with both the product owner and user experience, we work out the effort vs the value collaboratively and ensure there is no wastage. The value is then delivered fast enough to enable us to learn from the feature whilst also engineered to a quality for ease of adapting when we go through our learnings.

Documentation is a first class citizen, as is test driven design and quality assurance. Dealing with micro front ends, you can quickly have many to manage so documenting domain knowledge specific to it can help when context switching. This allows the team to have the ability to work on a small codebase quickly, effectively and deliver value quickly.

As a Lead, I believe the need for a single source of truth and a knowledge base will empower the team and autonomy. Collaboration is also key, and collaborating with both User Experience and the Product Owner ensures nothing is delivered without the agreed value and effort. From these beliefs I’ve been able to enable a design system to be created by collaboration between the engineers and user experience/design to create a solution that’s fits everyone, help push for a new knowledge base to allow for our single source of truth for key documentation and processes within the digital team. This has all been achievable with a good working culture where collaboration is key with cross-functional teams, something that is close to my ways of working to allow for well thought out solutions and above all a great team to work in.

Whoami

I am a passionate engineer who takes pride in what he delivers. In my spare time I am listening to music, taking my daughter out cycling or teaching her to skateboard. If I’m not doing that, I’m learning how to use my camera, playing games, experimenting with new programming projects and concepts to extend my skill set or writing to reflect on what I’ve learned. I admit when I’m wrong and question things I don’t know or am uncertain of.

Above all, I am loyal and get excited with a good team.

Please also read any recommendations I have via LinkedIn.

You can read more about me too…

Skills

My skills have adapted and changed over the years. I understand a language should be used for certain tasks and there is not a one size fits all. This is the same for best practice and methodologies. Having worked with Terraform, GoLang and Rust, I can see the benefits of infrastructure as code as well as using GoLang and Rust to help with certain tasks or tool chains.

Skills set's I've managed to add to my tool belt for front end are the usual; HTML4/5 *, CSS2/3 *, SASS, Javascript *, ReactJS *, Accessibility *. For languages and scripting I am proficient in PHP *, Ruby, Python *, GoLang, Javascript *, NodeJS, Rust, Nix Shell (Bash, ZSH) *, Lua, Typescript *.

I am a big believer in the DevOps mentality and have learnt the following tools: Ansible, GitLab CI, Jenkins, Rundeck, Terraform, Rancher, ArgoCD *, Azure *, .

For web frameworks, I've worked in Symfony2, Silex, Slim2/3, NextJS *, ReactJS *.

I also understand MySQL *, Apache, Git *, Nginx, Hiawatha.

* - I am currently using on a daily basis

I also practice the following methodolgies daily; BDD, TDD, DDD, SOLID. I am a big believer in ensuring that any code is built to the highest quality, for this ensures code is easier to debug, refactor, onboard new members to the team and above all push for a high level of dev joy and ensure developer experience is as high as it can be.

Open Source Contribution

Personal projects I've created and implemented previously: https://github.com/NigelGreenway/Demander
https://github.com/NigelGreenway/Demander-Container-Plugin
https://github.com/NigelGreenway/signa
https://github.com/NigelGreenway/Tutis
https://github.com/NigelGreenway/route-generator-plugin
https://github.com/NigelGreenway/inuitcss.plugins.iglu
Projects I've worked on in the past: https://github.com/slimphp/Twig-View/pulls/NigelGreenway
https://github.com/AndrewCarterUK/SimpleRoute/pulls/NigelGreenway

Employment

drivvn (2019 - present)

Starting as a Senior Software Engineer, I was teamed up with others to build a new tool to help people compare vehicles in a way that would help them understand the benefits from moving from a traditional engine (diesel/petrol) with a hybrid or pure electric engine. I have since then been promoted to Lead Software Engineer. My challenges are always taken head on in a way that the team would be taken on the journey where we ensured collaboration and transparency was key.

It was during my time within this team that I implemented the following:

  • Ensuring large work items were broken into smaller slices; this allowed us to deliver changes behind feature flags and then enable on production once all slices where delivered
  • Improve the on boarding; this was a mix of ensuring process documentation was available when needed, on boarding was light enough for people to learn but heavy enough for them to get involved - this included people being able to put their first bit of code into production within their first week of being in the team
  • Implement a release train; this was to help with managing releases, however this was then changed as we were getting blockers on releases or having to wait for a delivery date. So, I took it up on myself to discuss with the wider team and opt for a batch style delivery system instead. This meant that within 1.5 hours we could go from code to production.
  • Ensuring I was not the key dependency on the project; this meant I made sure that what ever I could do in the day-to-day work, others could also do - and gave them the confidence and autonomy to do so
  • Worked on a strategy to help improve the value of the product to the business, working with our PTCO on my thinking and results I got to

In recent months I have been part of two other projects. One to help gain domain knowledge on a legacy project and hand it over to a mid-level engineer (who I helped with the interview process) with the ability to mentor and coach them to deliver both high quality code, and the smallest slices to ensure that value is delivered in a timely manner, without features becoming stale. Whilst on this project I also lead the changes required to decommission environments, change the git flow to simplify releases, and ensure releases were safer and easier to enable us to get closer to the CI/CD targets set by the engineering leadership team. The results were being able to release daily (or more on some occasions).

The other project has been on a similar theme, but primarily focus on the developer experience and improvements around the ways of working. Whilst this has been difficult, it has allowed me to grow as a leader and a person on how I approach changes with teams. Whilst in this project, I have been able to achieve the following in only a couple of months:

  • Introduced bi-weekly retro’s
  • Enforced some rules around pull requests; min approvers, all tasks completed, no changes required and so on… (this was something the current devs were missing and appreciated when they were added)
  • Started stand ups where each week it would be the responsibility of a single member of the team to go through the board each morning
  • Set up Slack integration when pull requests where added or updated
  • Work with the project manager to ensure we have a stand up every day and separate the release calls, move to a kanban style board and change how we signal updates within the team for things like days off and our focus/priority
  • Supported the team on pushing back work items that were not urgent and got the relevant people to action the changes outside of the team

Outside of this I have been part of helping define the culture within the business, where my main impact has been focused on the on boarding of new engineers and trying to ensure new starters can get up and running with ease and quickly, and to allow them to focus on what they enjoy - coding. I have also been using my experience in helping shape relationships between teams and gaining a mutual respect where I have observed people will come to me for confirmation on their thinking/solving of a particular problem, as well as being able to encourage or entice others in doing other things or taking ownership of certain tasks.

Shell Energy (First Utility 2015-2019) (2016 - 2020)

My time at Shell Energy (formerly First Utility) I was been able to work with many great and talented people where I’ve been able to extend on current skill sets as well as gain new ones. Starting as a Software Engineer, I was brought in to help with the main functionality of the web site where people would manage their meter readings by submitting online, change their tariff, as well as other general account areas. These are journeys used by hundreds of people a day. I helped deliver new features to the system as well as bug fixes. This was a monolithic PHP MVC application using Symfony and Zend components via Composer and based on the Yii framework as a base. Since then I’ve supported team members with bigger features like our refer-a-friend, smart awareness and booking portal, loyalty scheme, the display of weekly usage and more. During these products, in recognition of my efforts I’ve been promoted twice in four years - first to Senior Software Engineer and then to my current role of a Lead Software Engineer.

My role as Lead Software Engineer initially pushed me out of my comfort zone. I lead a team of software, User Experience, Quality Assurance and API engineers to help deliver the right and best digital experience for our user base. Whether this is a new web app like our smart booking portal or a complete re-platforming of current systems like our monolithic codebase being split into micro front ends, I try ensure that the team have the right tools and information to hand and ensure MVPs are sensibly set. Working closely with the team I ensure we deliver value to both the customer and the business. We deliver apps that are adding value instantly. Once the initial app is delivered we iterate as a team and deploy multiple changes which are driven by analytics and data collated from UX.

Presto Classical Ltd (2014 - 2016)

My first task was to build an internal application to deal with how the business handles purchase orders with suppliers. Since then, I worked on rewriting the current website by converting the current procedural code into a fully object orientated application based on Domain Driven Design.

Within the first year, I have implemented Jenkins, a git workflow, PHPUnit and Test Driven Design along with DokuWiki documentation covering everything from code to hardware assets to requirement specifications using Dokuwiki. Working with the front end developer, I have implemented build scripts to ease the compiling of CSS from SASS, installing all server-side/front-end assets and Browsersync to allow testing of multiple devices with ease, media queries and front end functionality.

I designed the architecture for the new site and business application with ADR, CQRS and DDD whilst implementing StackPHP for the core whilst using packages from The PHP League and other resources as well as building our own or contributing to projects where they can aid in easing our development.

Resource Development International Ltd (2012 - 2014)

Based in Coventry, RDI are an on-line educational company that delivers university qualifications worldwide.

It is here where I extended my knowledge even further due to a great team. I was able to pick up knowledge on best practice, coding standards, a deeper knowledge of PHP and further myself as a better and more efficient developer.

I took the opportunity to create modifications and enhancements to the internal system which was based on the Symfony2 framework whilst working with Git for the version control. I have also had the pleasure of creating small business web tools to help with importing/exporting data, conversion of Flash based questionnaires to pure HTML using JavaScript to work with the current data and be involved with numerous releases of our sales site.

I also had the chance to work on our Moodle platform by creating modifications, help with the theming of the new site and expand on the API connectors between our internal system and Moodle platform.

Caroco Marketing Ltd (2011 - 2012)

Originally based in Birmingham, Caroco Marketing specialised in web marketing from PPC, SEO, web design, social media services and the alike.

My time at Caroco Marketing gave me the chance to jump into project management and start working directly with my first PHP Framework; Symfony2. It gave me the chance to understand what is required when planning a large project along with how to prioritise tasks with both immediate and higher level managers.

I was part of an effort to create a new in-house system to manage Google PPC as well as keyword analytics and would also be asked to either modify current client web sites or create new ones with the TYPO3 micro CMS framework.

ITC Ltd (2010 - 2011)

ITC Ltd was a company who provided probate services based in Stratford-Upon-Avon.

I was part of a team that created modifications for the internal system or modified existing ones, along with bug fixing. The systems were custom built and were a collection of customer and document management web applications built with PHP.

Through each modification given, there was a process I learnt and found to be of great value to a developer; create the modification to the specification given, test locally and report on the test process in order for this to be passed to the test team and then liaise with the user acceptance team for further tweaks/modifications before being signed off and released.

At the age of 26, I started out as junior ; this was my first role in the world of development. I wanted a career I could excel in and gain rewards on a basis I can control, be that daily, weekly or monthly. Here, I learnt PHP at a deeper level and started to move from procedural code to the MVC pattern.