Are you considering joining one of Kinsta’s development teams? Here are some important things we’d like to share with you!
What Development Works On
- MyKinsta is our primary client-facing product. Feel free to schedule a demo to find out exactly what it is and how it works. In a nutshell, it provides an interface for our customers to manage their website settings like cache, PHP version, CDN, DNS, multiple users, analytics, etc.
- DevKinsta is a local development suite. Grab it for free and give it a go! It allows you to create sites locally on Linux, Windows, and macOS and push them to your staging environments at Kinsta.
- We have our own Affiliate System, which allows folks to register as Kinsta affiliates and create referral links to attribute sales to themselves. Affiliates can earn both one-time and recurring commissions.
- One of our goals is to automate everything we can for all our teams. To that end, there are numerous internal tools we create and maintain for various departments. These include superadmin tools as shortcuts for complex actions, detailed but readable logging, a tool that pings all sites on our infrastructure to ensure smooth operation, a dedicated support platform for our client teams, and more.
The Development Stack
We keep our tools up to date and as homogenous as possible.
- Node.js is used as the backend language.
- React is used for building user interfaces.
- TypeScript is our language of choice.
- GraphQL is our query language implemented through Apollo.
- We use both NoSQL and SQL databases.
- Jest is used for testing.
- Storybook is used for component testing and documentation.
- Chromatic is used for screenshot testing.
- Qase is used to manage our automated Nightwatch end-to-end testing.
The Development Ecosystem
Development is not done in a vacuum. All departments are interconnected, and while some are closer to the day-to-day processes of development than others, we work as one unified whole.
- We have a dedicated Product Design team that works on pre-planning, researching, user testing, scope determination, and the UX/UI design of features. They understand and work with our component library and collaborate with development to keep the library up to date.
- Our QA team is tasked with test management and ensuring development work reflects the expectations of our planning phase. We feel strongly that QA’s purpose is not to be a resource for lazy development to offload testing. QA will catch bugs as byproduct of their work, but ensuring that code sent to QA functions properly is expected of developers.
- Our Engineering DevOps team is responsible for cohering the links in our server infrastructure in MyKinsta. They advise the development team in planning, prepare work that needs to be done on servers, and create the Ansible (or other) scripts that need to be triggered.
- Our Engineering SysOps team will aid development in creating appropriately sized instances to house applications and will maintain the machines required for smooth operation.
- The Customer Teams and Marketing Team are crucial to our successful operations. Any change we make affects these departments heavily. We seek out these teams during planning, update them while building, and ensure they receive all the information and training they need before launch.
- Other teams and departments such as Finance, Operations, and more can also be involved in projects as we automate tools, work on billing aspects of our infrastructure, and so on.
We are proud of the collaborative atmosphere we have built. Team members are expected to understand the importance of meeting each teams’ needs. Developers understand that Marketing and Customer Teams need advance warning and perhaps a UI freeze before release, just as these teams understand the need for PR reviews and testing which may push our timeline back.
How Development Is Organized
Kinsta is an agile company. We are not afraid of change — we actively seek it out to continuously improve our performance. Due to this, the organization of development is constantly evolving as we grow.
Projects are the main “unit” of organization we use. Developers are assigned to projects and a Project Owner is designated — usually a developer themselves. The Project Owner is responsible for translating the idea into a released feature. Depending on the type of project the owner will have a degree of control over the feature itself, its scope, planning, etc. The project owner is also responsible for ensuring smooth and timely communication between all departments.
We use Jira to organize our tasks and GitHub to manage our code and associated activities such as PR reviews.
We have numerous tools integrated to our GitHub repositories, which aid us during the development flow and create a place for strong collaboration — not just between developers but other teams as well:
- Codeship and Buddy.works for running unit tests
- Chromatic for automatically building Storybook and to run screenshot tests
- Danger JS for running custom checks to ensure consistency in code style and PR descriptions
- A custom-built service which automatically creates a Docker-based testing environment for each PR. This is useful for code reviewers, the QA team, and the Product Design team, allowing us to discuss the changes in one place.
Check out our current openings!