The project was self-organized as a part of ProductDock’s improvement time initiative, where employees can dedicate a part of their monthly working hours to interesting ventures (usually 1-3 days per month).
The original team consisted of two full-stack engineers and one UX/UI engineer who followed the development through the whole lifecycle, and one engineer who joined in occasionally. The project was also used as a part of the onboarding process, where new employees would start off by immediately contributing and, in that way, become familiar with ProductDock’s way of working.
The project officially started in late 2019, and accounting for the various ways of contributing to the project, it took approximately six months of full-time work to reach its current state. New features are still being developed on an experimental basis.
The project is extensively documented, so even if the original team is unavailable for maintenance, a task can be undertaken by one of ProductDock’s other available engineers. Maintenance is most often triggered by 3rd party integration updates and invalidated tokens, both of which are rare occurrences. For this reason, documentation is even more important so that when the original team becomes available, they can quickly get back up to speed after being away from the project for a while.
Several 3rd party integrations were used, including the Jira Tempo API for logging vacation and out-of-office hours, Google Calendar API for the automatic creation of calendar events, and Google SSO for user authentication.
Cypress was used for end-to-end tests and GitHub actions for continuous integration and delivery (CI/CD).
The project faced several challenges along the way, including:
- Getting buy-in from other units within the organization.
- Ensuring that approved vacation time was correctly synchronized with the company’s time-tracking solution.
- Preventing accidental or malicious data changes.
- Ensuring that no requests are missed while keeping the number of notifications to a minimum because of a growing number of users.
To overcome these challenges, the team adopted an iterative development approach and rolled out the solution to a single unit before improving and customizing it for different locations. They expanded the app to automatically log vacation time, reducing a previously error-prone manual process to a single form. They also developed a granular role and permission system, allowing precise control of who is notified and able to approve requests or edit data.
The project achieved several major milestones, including:
- Single location rollout
- Automatic vacation time logging
- Addition of new request types (hardware, software, education budget usage, and more)
- Multi-location rollout (or multi-tenancy)
Currently, there are approximately 70 active users across two locations.
As a result of these achievements, the project positively impacted both the organization and the end users. At the organizational level, the project automated a multi-step manual process, reducing errors and unbooked vacation hours that affected the bottom line. At the end-user level, the solution simplified the process of making various requests and provided a quick overview of remaining vacation time, education budget, pending hardware requests, and more.
The project’s success was measured through various metrics, including application usage across different units, the number of requests that had to be manually handled because of edge cases, end-user feedback, and requests for new features. Through these measurements, the team identified improvement opportunities and addressed different stakeholders’ needs.
The team learned several valuable lessons from this project that they can apply to future projects. These include:
- The importance of scoping a project appropriately, which allowed them to start a project without the buy-in of the whole organization.
- Effective communication with stakeholders, which allowed them to gather requirements from all levels of the organization.
- Effective self-management, which allowed them to complete the project during improvement time and have it not affect their primary projects.
Overall, the project was a success, and the team was able to deliver an innovative IT solution that improved the vacation scheduling process for ProductDock’s employees and admin while reducing errors.
The final solution is scalable at no additional cost and can grow with the needs of ProductDock. The whole solution was developed during improvement time, which means it required no additional investment.