Our team love working with technology and solving problems for our customers. We’re continually learning and growing together with hackathon days, pair programming, brown bag lunches. Every two weeks we get together for a knowledge exchange.

We strongly believe in teams agreeing their roles and how they best want to work together. We run regular retrospectives with the results visible to the whole team.

Find all of the tech and tools we are using here –>

Our tech stack

We take a pragmatic approach to building products and systems that work for our customers. Our core application is a modular CakePHP monolith – not as monolithic as you may have seen before. As we have scaled in terms of features and functionality we have built microservices in PHP, NodeJS, Python and React.

We use AWS Cloud using MySQL, Docker, SQS, SNS, SES, PhpUnit, NewRelic, Graylog. QA has a Cypress Stack for end-to-end testing. In the Platform team we make use of Amazon Lambda for image processing to keep the scale very flexible. Payments are handled and abstracted by the finance team in their own distributed service.

We service both B2B and B2C customers and due to the nature of the photography industry, we have complex use cases. In order to take us further, we are reducing cognitive load for team members by continuing to split code and allow teams to work as autonomously as possible.

In the future we would like to work towards using more of an event driven architecture, using things like Apache Kafka for event sourcing. We would like to move to using more TypeScript and start to depreciate our legacy code in CakePHP. We need your help to do this!

We use Dockerized Environments to be able to run any part of the system on any system
We use AWS to scale our architecture to our customers due to seasonality which made us build the system in a way that it can scale up and down
We have a highly scalable image processing system based on serverless AWS Lambda
We use GitLab for our CICD Pipelines
We value that any developer is enabled to do deployments into the live system with a click of a button

Responding to seasonality

School photography is extremely seasonal. We do much of our revenue in just a few weeks with our systems needing to scale up from almost zero to up to 5 million requests per day efficiently and with costs in mind. We use technologies like AWS Lambda extensively.

From a product perspective, we need to remain agile and bring improvements and get feedback regardless of the season. Remaining agile and connected with customers requires product managers to raise to this extra challenge. Are you ready?

Enabling Ownership

Our tech has grown quicker than our teams over the last few years. One of the challenges that we’re working on our new Head of Engineering is splitting responsibilities and allowing teams to work autonomously together.

The first teams to work autonomously are Shop and Finance: we’re doing the same of the new teams we hire: Photographer Workflow, Photo Handling and Production. There’s more work to do! Can you help us with this and become an autonomy ninja?

A shop that parents love!

With millions of parents using our product, user testing is key to making sure we provide an e-commerce experience that converts and is engaging. 

Here our Product Designer is explaining the outcome of usability testing on our beta shop where parents were getting stuck (affecting conversion). The insights from this testing caused the System Usability Scale score for this shop to increase from 67 to 86! Can you help us get to the next level?