What’s it like to be a developer at Phorest?
What’s the tech stack in Phorest?
We work in a modern technology stack — cloud-based microservices architecture built using a combination of Docker and serverless technologies for backend mainly written in Java and Groovy. Our Infra runs in AWS and is hosted in the EU and US. We use Ember JS and React Native for frontend.
Where are people in the team based?
Our development team is made up of amazing people from all over the world, some working remotely, some in our Dublin office (roughly 60%) — 22 in total. Folks are in Italy, France, Argentina, Poland, and Cork. We require folks that aren’t based in the Dublin office to overlap on our timezone/core hours so that we can stay in sync.
We meet together twice a year for our company’s summer and winter gatherings and try to see everyone quarterly with an offsite or team event.
How do teams look in development?
We call them tribes, they work as autonomous groups (typically abiding by the 2 pizza rule) who make their own decisions around architecture and technology choices. Those choices are guided by cross-team principles and values that are aligned with our technology strategy. They have their own outcomes and have ownership of a slice of the product roadmap.
We put a strong emphasis on delivering high-quality software through a combination of pair programming, code reviews, and automated testing. This is reflected in the team’s daily activities which may include pairing, peer reviews, design sessions, daily standups, and backlog refinement.
Is there an operations team?
No, the ownership and the maintenance for all features shipped to production lies with the team. This includes infrastructure, monitoring, and issue resolution.
How do you deploy to production?
We treat deployments and releases as 2 distinct events. We heavily automate our deployments and ship changes multiple times per day in a safe and controlled way. Our deployments and CI pipeline use CircleCi and GH Actions (we used to use Jenkins but are phasing it out).
Our deployments are baked into our workflow and we use feature flags to give us that granular control. We ship every feature branch on our frontend to production and validate them before getting merged. Our product team owns the release flow with the use of our feature flags.
What are the most common tools that developers use at Phorest?
While developers will inevitably use things like Git, Slack, or Jira, everyone uses whatever development environment they prefer. That ranges from the hardcore VIM fans to folks who use IDEs like IntelliJ. To monitor our systems and track errors we use NewRelic, CloudWatch, Sentry and more…
How is testing done, and what kind of tests are run?
Quality is everyone’s responsibility and test automation is something both developers and QA engineers do. We have suites of automated tests that run as part of our development process and CI lifecycle. These tests are typically unit, integration, and acceptance. We also use synthetic tests running in prod for some of our key users flows e.g Online Bookings
Our QA team are automation Gurus and write end to end tests on our UI before we enable-feature flags to general release.
How do you support learning and development?
One of our core values is growth mindset, we encourage and invest in relevant content, training and conferences that will help the company or the individual to improve and grow. We have a growing library and are always open to supporting people to better themselves and to explore new opportunities. Our Udemy and LinkedIn Learning account provides a vast array of content that may even not be related to your discipline.
We also have a dedicated CFP group (conference call for papers support) where we support folks who are interested in speaking at a conference to flesh out their proposals, support them in constructing their talk, and guide them to delivering the talk.
How do you prioritise work?
We make sure that we are building a product that impacts their day to day for the better. We do this by listening to and working with our customers.
- We speak to at least 20 per week.
- We use UserVoice to collect votes, ideas and valuable feedback. We even take downtime between sprints to address some of these items — happy salon week.
- We encourage everyone (even the engineers) to go visit our salons and even work there for a day, we shadow support to put ourselves in their shoes and build empathy with our users and those who speak to them every day.
- We host a dedicated product conference called “Inside Phorest” where we invite our customers to tell them all about what’s we’re building, to validate assumptions, gather critical feedback and take their feedback into our roadmap to plan for the future.
What’s your biggest challenge in the development team?
Our system is mission-critical for our customers and with our growing customer base — availability and system reliability always have to be in front of mind. So we’ve recently formed a dedicated tribe to this whose role is to help Phorest to quickly evolve, scale and be trusted by salon owners so that we can run and grow their businesses.
The version of the Phorest desktop point of sale application is quite old, it’s a legacy cross-platform POS application written in Java Swing. It’s very feature-rich and used by tens of thousands of people every day to run their business. As this application runs natively on a salon’s PC, it tech holds back our ability to ship changes regularly and is not fully accessible to our users (via web browser). So we are investing heavily in modernising this and moving it to be a web-based application — right now it’s a hybrid and we’re 50% through it.
What makes Phorest a special place to be a developer?
“When I joined Phorest I was aware of their high level of engineering, but I got really surprised by the tremendous quality of the team, the genuine strive for excellence, the open-minded attitude, and transparency at every level.
What surprised me the most on my first days was also how the mission and the vision of the company were so well communicated and so much at the heart of every decision taken, how every part of the company was aligned and focused in a clear direction. Pretty much this alone gave me peace of mind that I was part of something great. After a year in the game, I see those decisions and values in action with the engineering team's continuous improvement and growth mindset towards building the product.”
Nicola Zaghini — Technical Lead
If you are interested in talking further about this, please reach out to me at john@phorest.com — we’re hiring!
This is brilliant, so much more value than a job advert 🙌🏼