Remote Full-Stack Web Developer
£45,000 – £55,000 DOE
Welcome to Codevate. We're a team of analytical problem solvers who deliver high-quality, made-to-measure software that lasts.
- This role is a single-project role on a longstanding, well-maintained and diverse project spanning many different business paradigms
- Codevate is founded and run by software engineers
- We're a small boutique agency of senior developers that deliver high value to our clients
- Our projects don't use WordPress, Magento or other tools in the cookie-cutter agency ballpark
- We operate more like an in-house team or consultancy, using the latest Symfony LTS (PHP 8.1+), React, Elasticsearch, RabbitMQ, Redis, and more
- We make good use of code quality tools like PHPStan, PHP CS Fixer, and ESLint, with GitHub for CI/CD, and Sentry, Blackfire and NewRelic for better insights
- As this is a fully-remote role, we have a once-a-week team-wide retrospective on Friday afternoons (via Slack), regular lunch calls, and board game meetups in Birmingham
We're serious about software product development, and we focus on long-term projects and lasting business relationships.
We are our clients' trusted advisors on tech, and embed ourselves into their businesses to help them solve crucial problems and to grow with software. We aim to get our clients a return on investment ASAP; our decision-making focuses on long-term solutions.
We favour well-supported community-active open source software and we try to minimise cutting-edge drift for our clients with continuous innovation & maintenance agreements. We try to "greenfield" maintenance cycles as much as possible with rebuilds that benefit the client, as well as our development team's continuous professional development.
Our clients can be from any industry, and are typically long-standing SMBs or well-funded startups that want to differentiate using cutting-edge software.
We follow both Agile (Kanban) and Lean methodologies. Our main objective is to deliver useful, workable software as early as possible, and then iteratively improve it. We gradually evolve our software projects toward our clients' best product-market fit. Projects often start out with a prototype or proof-of-concept stage.
Our clients' success is our success. That's why we've designed our core beliefs to support both us and our clients.
About the project
This role focuses on a project that's on a long-term retainer with a UK telecoms construction client — it's a well-established and maintained project of 8+ years. The project is a SaaS-style multi-tenant platform featuring a large-scale Symfony application that leverages Node.js & Socket.io, React.js, Elasticsearch, RabbitMQ, Redis, and others.
Whether you're looking for a single-project role or a diverse role with many projects and technologies, this project should deliver.
Core feature areas at-a-glance
Although this project is for a single client, we consider it a "project of projects", as it spans many business paradigms, has large well-established feature areas, and covers many technologies.
- ERP/scheduling system with bulk job creation that manages a diverse workforce across a range of projects and activities
- Trello-like real-time task system for automated workflow management
- External calendar and mobile app schedule viewer/job management for engineers
- Project and milestone management, KPI, and reporting system
- Real-time web-based spreadsheet-like report editor
- Bulk project data import and export as CSV, Excel, or PDF files
- Extensive FIFO stock management system
- Finance features for incoming and outgoing purchase orders, invoices, supplier lists, and P&L forecasting
- Track all assets and training across the business
- HR features for performance monitoring, remuneration, sensitive documents
- Remote worker mobile application for health & safety audits, fault reports, timesheets, and job management
Note, although the project features a wide range of technologies, you don't need to be experienced in all of them to apply for this role — on-the-job learning is an integral part of this role, and the team is here to support you via Slack and through our QA process.
- Symfony 5.4 LTS, PHP 8.1
- React.js, Node.js, Typescript, GraphQL, React Native
- Redis, RabbitMQ, Elasticsearch, MySQL
- Docker, AWS, Terraform
- PHPStan (level 9), ESLint, Rector
- Native Java Android application (deprecated and phasing out)
- Some legacy AngularJS features (phasing out in favour of React.js rewrites)
Technical experience we're looking for
If you've used an equivalent technology on this list to an extensive level, please feel free to send in your CV.
Symfony — if you've used Laravel, CodeIgniter, or another popular MVC framework extensively, please do apply
- We chose Symfony as our framework back in 2013/14. In comparison to Symfony's release roadmap, Laravel has quite often had breaking changes between minor versions. It wasn't a viable option for us for longer-term projects.
- This decision has paid big dividends for us. We've transitioned full business digital transformation projects from Symfony 2.x to 4.4+ LTS with minimal friction.
- We've found that Symfony is more suited to larger, longer-term projects, whilst Laravel is great for kick-starting smaller, shorter-term projects.
React — if you've used another frontend framework extensively we'll be happy to receive your CV
- Since around 2018 we've been transitioning from AngularJS to React. All of our new projects use React where it's applicable.
- This is fairly seamless in our projects as Symfony uses Doctrine.
- Git — as one of your most used day-to-day tools, you should be comfortable with a feature branch based workflow, pull requests, and rebasing to keep a clean history
Our full tech stack — we've built and maintained projects for 9+ years with it
This is the full company-wide tech stack. This vacancy primarily focuses on the technologies listed in the above section, but there will be opportunities to work with the full tech stack.
Symfony 5.4+ (PHP 8.1+)
- All new projects are Symfony 6+
- MySQL / PostgreSQL
- All of our newly developed features tend to use GraphQL rather than a RESTful approach.
- Some long-term projects do have REST APIs, but are transitioning away gradually with new versions that replace existing features.
- Used for queueing asynchronous/background-able jobs, like generating big reports, or rate limiting / requeueing API requests.
- We tend to use this as a caching layer, for distributed locks, and to share the PHP session ID with our Node.js apps when both Symfony and Node are in play on a project.
- Projects that need features like autocomplete, search, horizontally scaled indexed clusters of data, geo queries, tend to use Elasticsearch.
- We use Node.js as a backend technology on projects where real-time features are required. We've been using Socket.io since alpha.
- This is typically a thin layer in comparison to our projects' features, and usually works in tandem with the Symfony project.
React Native — cross-platform mobile app development
- When it's the right tool for the job, we use React Native for cross-platform mobile development.
- Terraform and Docker for DevOps
- AWS and Google Cloud Platform for infrastructure and hosting
- Jira, GitHub, Slack for project management and source code control
- PHPStan, PHP CS Fixer, ESLint, Rector, PHPUnit for code quality and static analysis
- Sentry for error tracking
- Blackfire and Newrelic for code performance / observability
Full remote working
This is a full remote working role, with all team members being UK-based.
We hold weekly team-wide cross-project forecasts on a Monday morning (5-10 minutes each), retrospectives (show & tell) on a Friday, with ad hoc lunch hangouts each week on Slack. During your probation period, we do informal monthly 121s in addition to 6 month formal review. Annual salary reviews as standard.
We'll ship (or drop off) a MacBook Pro for you to work on before your start date.
We hold regular team video and board game nights online, and for those who are happy to meet up in person, team drinks nights are arranged often!
The interview process — three stages
If your CV ticks the right boxes, we kick the interview process off with an informal intro call to add some more technical context to your CV and understand if the role is a good fit.
Stage 1 — Quick informal phone call (30–45 minutes~).
This is where we give you a bit more of an introduction to the kinds of projects and clients we work on/with, and we can cover off any initial questions you might have.
We like to hear more about the technical aspects of your previous roles which are often missed from CVs. This will include questions about complex projects or APIs you've worked with: what went well, and what didn't.
You'll be able to ask questions about the role, QA exercise, company, team, or clear anything else up.
Stage 2 — QA exercise
A short QA exercise where we provide an example project and scenario for you to feed back on as if you were a member of the team.
Rather than a tech test, code golf, or mini-project, the QA exercise gives you an easy way to quickly demonstrate your knowledge in a fraction of the time, and feeds into our technical discussion in the next interview stage.
Understanding how you communicate feedback to team members is an important part of our recruitment process; adding the right people to the team ensures all of your colleagues can contribute to the SDLC, and that knowledge is shared — companies without technical interview stages tend to have a "bums on seats" approach, which can often result in poor quality code and endless technical debt.
Stage 3 — Video interview and whiteboarding (1–2 hours~). Sam (CEO) and David (CTO) will be on the call with you.
Again, this is an informal interview with some further competency based questions. We'll ask follow-up questions from the phone call and QA stages, and you'll have an opportunity to ask further questions about our tech stack, projects and company culture.
We'll screen share some client software and code (within confidentiality clauses), providing you with a chance to see what you're going to be working on, and enabling you to ask as many technical questions as you can think of.
Feel free to bring an example project or code sample to screen share as part of this interview stage.
About you, essential qualities, and employment benefits
We're looking for an experienced, independent, autonomous, and analytical problem solver to join our team as a full-time Remote Senior Full-stack Developer.
You'll have at least 5 years' experience using MVC web frameworks such as Symfony or Laravel.
You should be dynamic and tech-agnostic enough to swap between technologies or projects. You'll be someone who is always striving for continuous professional development.
You'll take part in all phases of the SDLC: task estimation, development, testing, debugging, pull request QA, collaborative whiteboarding, etc.
You should be able to see projects through from conception to completion, within the project deadline and to a high standard. The quality of the work we produce for our clients is extremely important to our brand, so a keen eye for detail is essential.
You'll be an enthusiastic, self-motivated individual with a passion to learn and use new technologies independently or as part of the team. You'll have excellent knowledge of key software design and development principles, and will also undertake any other duties as required.
- As we're a fully remote team, good communication is essential. Being able to describe a problem you're having with enough detail is important. We have a once-a-week team-wide forecast call on Monday mornings, a retrospective on Friday afternoons, monthly 121s, and ad hoc lunch calls, so voice/audio communication is also essential
- Have the ability to meet deadlines — time management skills are paramount
- Be self motivated — being able to stay focused on the task at hand
- Be trustworthy — you will be responsible for maintaining confidentiality of our clients’ projects and business secrets, as well as having access to codebases and servers
- Be reliable and committed — you will be responsible for seeing projects through from start to finish
- Have good experience with web development — more specifically, PHP with a framework such as Symfony, Laravel, Silex, etc
- Have good working knowledge of source code/version control with Git
- Be experienced in working with RESTful and/or GraphQL APIs — both consuming and designing/developing. As we use frontend frameworks like React, you'll often have to create and consume your own APIs
- Be able to work with relational databases, such as MySQL/Postgres
This is a fully remote position (although you must be UK-based)
- As we're remote, we're shipping a MacBook to your home address for you to use in your home office
- 25 holiday days plus bank holidays (33 total)
- Annual salary reviews — as we grow the company, the tide raises all ships. We try to ensure you're paid a competitive market salary without having to job hop to get it
- Flexible working hours with core hours 10am - 3pm. Able to work 10 hours one day and 6 hours the next for desired flexibility
You can also contribute to the team's favourite open source projects, or write technical articles for our blog to demonstrate your & the team's expertise
- You can even guest post on our favoured tech platforms' blogs where appropriate/approved.
If you have any questions concerning the role, drop us an email at firstname.lastname@example.org, or call us on 0330 120 1408.