I am a full-stack senior web developer with a keen eye for system architecture, specialising in Drupal but fluent with many other platforms and frameworks, including Wordpress and Magento 2. With over 15 years of experience, including a decade with reputable digital agencies and contracting since 2019, I quickly adapt to new environments and maintain strong working relationships with clients and colleagues. I bring genuine enthusiasm for my work, which shows in my results.
Excellent communication underpins my skillset - using my extensive knowledge of back-end and front-end technologies, I architect elegant technical solutions, mentor teammates, and provide connectivity across the product development lifecycle. I hold myself to high standards, producing quality, well-tested features that aim to pass QA on the first round of testing.
Work Experience
Education
Qualifications
Industry Experience
- Adapted Opigno entity semantics for our use-case (e.g. ‘Training’ became ‘Course’, ‘Module’ became ‘Unit’, ‘Class’ became ‘Cohort’, etc)
- Assignment of due dates for courses for a cohort, to specific cohort members, with accompanying notifications
- Added customised exportable learning records for cohort members and cohort managers
- CSV import of cohorts and members, exported from Microsoft Dynamics 365 CRM. Performance was a priority - the initial import was 17,000 users.
- Custom scoreless ‘study exercise’ activity type
- Professional branded course certificate
- Admin reporting tool
As the sole developer for my client Optimus Education, I was responsible for planning the architecture, producing feature estimates, and ‘ground up’ development on a full-stack basis. My risk-based approach to feature scoping and estimation, and acutely thorough approach to self-QA (prior to client QA), resulted in no features overrunning and the project ambitions being realised within budget - all this while maintaining my classic standard of quality and attention to user experience. I had a superb client relationship with Optimus and hope to work with them again on the next evolution of the product.
I produced the following bespoke features during the build, none of which are supported OOTB and were executed in such a way as to allow easy future upgradeability:
While a fantastic project foundation and attempt at a ‘one size fits all’ approach to a Learning Management System, key takeaways are that Opigno can be quite opignionated (ha!), brittle and at times developer unfriendly when it comes to customising and extending features to suit a client’s business requirements. This is why it is especially important to be delicately performed by an experienced developer with excellent knowledge of Drupal, and Opigno itself, in order to maintain security and preserve upgradeability without future headaches.
Scoped, planned, estimated and built a complex backend API integration piece for Kinship charity, on behalf of my client TPXImpact.
Fundamentally the work was a bespoke integration between Zoom <-> Wordpress -> Salesforce. Official integrations are available for Zoom and Salesforce, but their application was found to be limited given the specific nature of the client’s business requirements.
The feature has been a resounding success - very few superficial amends were requested in UAT, negligible bugs were found, and I tracked near perfectly with my projected estimate (much to the pleasure of all parties). The client was very excited to begin working with the new functionality. As usual I paid particular attention to the admin experience throughout (admins are users too!).
More technically:
I used the Zoom API to create and update Zoom meetings, set workshop-specific registration questions and handle meeting registrations and registration eligibility, all managed via a custom post type in Wordpress. Zoom webhooks were used, via a WP REST endpoint, to listen to events for given managed meetings and registrations, at which point appropriate data structures were assembled (usually involving subsequent Zoom API calls) and shuttled off to Salesforce via the API.
I worked closely with Kinship’s Salesforce consultant to devise an API flow where we never needed to use the API to fetch Salesforce data - I only pushed data and internal Salesforce ‘flows’ (built by the consultant) handled the rest. This optimised the time taken to implement the feature (drastically!).
My custom Wordpress plugin architecture made use of composer to leverage PSR-4 class autoloading, leveraging libraries such as Symfony DI (for a service-led architecture), Symfony Event Dispatcher (for transmitting and reacting to custom events internally) and Guzzle (for API requests).
Representing CTI Digital and working for the Greater London Authority, the new Mayor of London government website and intranet sites are built on Drupal 9 and contained within a single codebase architecture. They do not share identical feature requirements, which requires particular attention to ensuring the correct separation of concerns. Our theme architecture is component-driven (i.e. made use of atomic design methodologies), allowing us to share components and their derivatives across the sites.
The site relies heavily on groups and workflows to provide unique authoring experiences for the client’s multitude of user groups and departments. Map-driven content, as well as other syndicated external content, is provided via feed implementations.
While my role covered largely back-end concerns, I had a hand in producing several complex front-end components, leveraging alpine.js to create truly encapsulated UI component behaviours. A keen eye for accessibility was essential throughout the build - ideally features are built with a high standard of accessibility during development than to wait for issues to be raised in QA.
A particularly complex and fulfilling feature of note is the ‘Resource Data Set Wizard’. This is essentially a content-type construction kit built bespoke for the use of site administrators. Content types generated have the option of being feeds driven (mapping feed values to fields) and search integrated, all available to site admins via a simple but configurable multistep form process. At the end of the form wizard multiple bulk processes are invoked to create the content type, add fields, make search index amends and, if selected, create the feed type, feed and perform the feed import. I was heavily involved in all aspects of this feature, especially feed mappings and the overall batch create/update process architecture.
Internal and client comms were excellent - I received some wonderful feedback from the client throughout.
- Contribution in terms of UX and development to provide a more intuitive, streamlined experience for users.
- Postcode proximity search in order to funnel eligible applicants to relevant roles near them.
- Bidirectional API integration, via SOAP, with Independent Age charity’s CRM provider. This was a bespoke integration and undertaken as a two-stage phased release cycle - close working with the provider was tantemount throughout every stage of the planning, through to implementation. Stage one was the initial ‘stock’ CRM integration, stage two required custom API development from the provider and integration with Drupal. Heavy validation was required to meet the strict data cleanliness requirements of the client.
I worked closely with the client and our internal teams to evolve the charity’s online volunteer application process in the following ways:
The Wales Government sites are among those I’m most proud to have been involved in. I worked tirelessly within unforgiving timescales to architect a component-led core theme with modern tooling (SCSS, ES6 with Babel transpilation, Webpack), prototyped in Pattern Lab. This allowed us to distribute all theme elements with style overrides across the builds. In addition, I onboarded and led other developers, introducing them to this new methodology along with best practice for implementation, while working on a full-stack development basis on the site builds throughout. My initiative proved to be a groundbreaking step for the agency and shifted their methodology towards reusable, component-led architecture. It also demonstrated how efficiently projects can progress when UX, design and development teams collaborate continually. Collectively, we also had great success investing our experience into the project sprint feedback loop, which resulted in us fine-tuning our Jira workflow to tweak design and development QA processes in a manner that cohered best with our prototype-to-integration development approach. As a result we caught and resolved more bugs and visual regressions before the components were integrated into the back-end.
At a more technical level my project contributions become more obvious - feel free to ask me for further details about this.
On a personal note I think that the resultant editorial style of the front-end is stunning. Behind the scenes the administrative interface for content authors is flexible and well considered (i.e admins are users too!).
Hire Steve Horsey today
To get started post up your job and then invite Steve Horsey to your job.