Welcome to Planday’s product development team! Over the next few posts we’ll be going into detail about how we do things at Planday from a product development perspective. We’ve been going through some radical changes over the past year that have all been geared up to providing the best platform we can to our customers. This first post will look at our general structure and practices, with future posts going into more details.
We’ve been going through some radical changes over the past year that have all been focused on providing the best platform we can to our customers. This first post will look at our general structure and practices, with future posts going into more details.
Planday is a collection of web applications, services, and mobile applications. Our core technology is based on the .net framework from Microsoft, and our mobile efforts are focused on both iOS and Android.
Planday has grown organically over the years, and so too has its software. We are now going through a period of modernisation, making use of new design patterns, technologies, and delivery mechanisms to run Planday in a robust and scalable way.
We take a very pragmatic approach to using technology in order to give our customers the best value for their money, which means we only adopt new technology tendencies when they solve real problems for Planday. As such, we have seen no need to invest heavily in the much hyped microservice architecture or third-party cloud infrastructure, preferring to use our own private hosted cloud, which is built using VMware technologies. As we scale, we have direct access through our data centres to Azure and Amazon Web Services, should the need ever arise.
Our data is managed using Microsoft SQL Server and Couchbase. We spend a lot of time ensuring our data access is optimised, but at the same time extremely secure. Data is obviously the core of our system, and is treated with the utmost respect.
We spend a lot of time improving delivery practices at Planday. We favour a devops approach to delivery, which means optimising every aspect of delivery from concept to deployment, and maintenance in production. We aim to be as agile as possible, but are far from dogmatic, favouring a what-works-best approach. We value lean thinking and process, which means we try to move things through our delivery system as quickly and smoothly as possible, with the highest quality.
We are in the process of fully automating our delivery workflow so that development teams can easily push fully tested changes into production with minimal impact to the operational state of the systems. We are able to do zero downtime deployments, as well as conduct A/B testing on any aspect of our system.
We have heavily invested in Atlassian products to help us manage the development process: we use Bamboo to build software, Jira to manage the actual work, and HipChat to manage notifications and communication. We use Git and ProGet to version control code and software dependencies, respectively.
Octopus Deploy is used to manage deployments across our entire infrastructure, with Microsoft’s native powershell, Chocolatey, and Boxstarter used to build both development and production environments.
Our systems are monitored 24/7/365 by a collection of systems including New Relic, Loggly, SQLSentry, and Raygun. We have invested heavily in this aspect, as we believe an early warning system is a fundamental part of any modern delivery organisation.
We are able to react to issues before they manifest themselves as problems that will impact our customers. Our monitoring system is used across our development and production platforms to give us detailed insight into how our systems are performing, so we know the performance status of virtually every action that can be performed on our systems — all in real time.
Data collected from our monitoring systems is fed back into our product delivery process to help us make informed decisions about what to work on next, the success of new features, or if certain parts of the system require maintenance.
The product delivery team is headed up by CTO, Mikkel Lomholt, and is geographically distributed across several timezones. We have development offices in Copenhagen and Hanoi, with a handful of remote workers distributed across Europe.
Copenhagen deals with web and infrastructure concerns, while Hanoi deals primarily with our mobile solutions.
We operate in cross-functional teams that work to deliver individual systems and areas of the product. Each team has a collection of developers, product and UX people, as well as full operational DBA access. The overall responsibility for quality lies with the teams, and not with one individual or separate QA team. This approach focuses the entire team on producing software that works and is maintainable in production.
With regards to engineering processes and practices, each team uses whatever parts and practices they need to help them work effectively, which includes process management systems such as Kanban, Scrum, and XP.
We are big believers in applying continuous learning to everything we do, and as such, we use retrospectives across the business to make improvements, and try to use data where possible to support decision making.
In the next few posts I’ll go into the detail of our technology stack, giving insight into the architecture and the decisions we’ve made to get to where we are now, and also how we build quality into everything we do.
If you are interested in working with Planday, check out the positions we currently have available here.