Full-Stack Developer · Colchester, Essex
{ uptime: 3+ years in production, dependencies: coffee, a decent PM, strong wifi }
I came to software development through an unconventional route. Three years of professional poker and a 600-mile solo hike came before I ever wrote a line of code.
My path here hasn't followed the normal script. I've chased what interested me, hit setbacks along the way, and rebuilt stronger. I'm proud of what I've accomplished in such a short time, and I'm not finished yet.
Three years as a professional poker player. The real edge came from reviewing sessions, studying hand histories, spotting patterns in how specific opponents played, adjusting strategy based on what actually held up over time. No one assigned that study. It was self-driven, and it's the same instinct I now bring to reviewing my own code and systems.
Retail and warehouse work never fit how I'm wired. During this period, every shift wore me down further, and by the time the last job ended, I was at a genuine low point, unable to see a way forward doing more of the same. That's what pushed me toward the hike. It was a deliberate reset, and the first real step toward building the skills and self-reliance I needed.
A six-week solo hike from Ipswich to the Scottish border along the east coast of England, raising over £1,100 for charity. It gave me the space to properly think through what I wanted to build next, and by the time I got back, I'd decided to retrain.
The start of a 5-year career pivotCame back from the hike and started teaching myself the basics through Codecademy's back-end path, covering JavaScript, Node, Express and Git. That led to the Netmatters training scheme, a structured full-stack programme covering HTML, SCSS, JavaScript, SQL, PHP, Laravel and Vue, treated as full-time work rather than a side project.
Joined Buttercups as a junior, and quickly found myself growing into more than the job title suggested. When the team needed someone to bridge technical and non-technical conversations, I stepped into that gap myself, and it became one of the things I was known for. That initiative, alongside the development work itself, earned a promotion to mid-level within two years.
The mid-level role came to a natural close in March 2026, and rather than jump straight into the next thing, I've taken the time since for a proper look at where I want to go next. Part of that has meant experimenting more deliberately with AI-assisted development through my own project, Conquer the Realm, while I figure out the right next step.
Requirements through deployment and monitoring. I think in systems, not just in tickets, so I ask why a decision exists before I touch the code. That habit makes reviews and handovers faster for everyone involved.
Sprint planning, standups. I've run these as tools that help a team ship, not as ceremony, and pushed to improve how they run when they weren't working.
TDD locally first. From there it goes through PR review, then into a dev environment with more realistic data for a proper smoke test before anything ships wider.
Stepped into translating between technical and non-technical stakeholders at Buttercups while still a junior, simply because the work needed doing. Still one of the parts of the job I actively work at.
I set standards early and write them down rather than just enforcing them ad hoc in review. When everyone solves the same kind of problem the same way, onboarding is faster and reviews get shorter. I'd rather build the reusable pattern once and document it than let five slightly different versions grow across a codebase.
On AI as a development tool. I plan before I prompt, gathering requirements, rules and tests upfront. I only let AI develop solutions I could write myself, breaking it into small blocks that I review and test before moving on, and I never let it one-shot a feature.
Scroll to explore
A multiplayer browser strategy game built from scratch, covering real-time game state, turn management, player territories and resource systems. Directed and reviewed every piece of it through AI-assisted development, planning the architecture and only accepting solutions I understood well enough to have written myself.
A FormKit-based framework where each form is generated from its own JSON configuration, used to drive 100+ forms across the platform, from simple in-card edit forms to 20+ stepper-style forms for creating records and initiating business processes. Extended FormKit's own input ecosystem with custom components to keep form UI consistent platform-wide.
A production ETL (Extract, Transform, Load) pipeline migrating 3M+ legacy records out of a document-based, non-relational database, across two phased launches, syncing bidirectionally between systems once live. Included data transformation and cleansing for thousands of duplicate or corrupt records, plus logging and monitoring to catch failures early.
Built a content templating system on top of EditorJS, letting non-technical staff create, save and reuse structured content templates directly in the editor. Vue 3 frontend, with a backend schema supporting template versioning and retrieval.
Implemented MSAL and Auth0 authentication flows across the platform, including Azure AD/Entra configuration for secure user auth. Frontend-led, with proper error handling built in from the start.
Split email delivery across two providers based on use case. ZeptoMail handled templated, system-triggered transactional email, while SendGrid carried custom messages written directly by staff. Both built with proper error handling and delivery guarantees.
Self-directed PowerBI reporting to track data-quality issues after a platform migration. Investigation into a pattern of student-facing bugs traced back to a systemic data-model conflict between the legacy and new platforms, escalated to senior leadership given the lack of a clean resolution.
That's what I specialise in, migrating and architecting legacy systems into modern platforms, and catching blockers early rather than after they've shipped.
Open to mid-level full-stack and systems-focused roles, remote-first.
martynhorslen@gmail.com