---
title: "Engineering Roles at PKB"
canonical: "https://wiki.patientsknowbest.com/space/api/4570415135/Engineering%20Roles%20at%20PKB"
format: markdown
---
At PKB, our development team is about 30 strong. While we often require specialist-level knowledge, our team size means we can’t have too many narrowly focused specialists. That’s why we’re looking for people who are adaptable and eager to learn new things as the need arises.

### **Technology Stack**

Our approach focuses on “boring” but reliable technology. Here’s our tech stack, bottom-up:

- We’re confident that Kubernetes (k8s) is here to stay—at least for the foreseeable future. Microservices can be complex, and we strongly dislike distributed monoliths. Scalability, in our view, hinges on state management, not deployment granularity—which is why PKB runs on just a dozen or so services.
- Terraform
- Postgres, S3/GCS, Redis
- Prometheus, Grafana, OTEL
- Modern Java, Kotlin, Spring

Our frontend uses older technology (JSP), but we’re actively planning updates.

Developer workstations typically run Ubuntu. You’ll often need to run the entire stack locally, which means using Linux on amd64. While WSL2 isn’t supported, it is allowed.

### **Other Facts**

We’re deeply committed to automated testing. In fact, we probably write more tests than you’d imagine, even after reading this.

We know that management is just one of the possible career paths – people can grow and make a big impact as individual contributors.

Teams have the autonomy to decide their development methodology; most follow a version of 2-week sprints and brief daily stand-up meetings.

### **Who Thrives at PKB?**

Our team is diverse, with members from a variety of backgrounds. We value different perspectives and recognise that traditional “bigcorp” interviews often overlook great talent. While assessing someone’s fit based on a CV and a couple of interviews is challenging, we’ve identified some traits and habits shared by engineers who excel at PKB. If you apply to us and you’re asked about whether you’ve carefully read the job description, just put in '2263' as the answer (or mention it elsewhere in your application). These aren’t rigid requirements but rather reflections of our culture.

**Problem-Solving and Independence**

- Competent sysadmins who can diagnose and fix issues in their local dev environments.
- Capable of resolving problems with their computer, OS, and network—or assisting others to do so.

**Tool Preferences and Communication**

- Prefer text-based tools or code over GUIs.
- Use Linux on the desktop.
- Communicate exceptionally well in writing, tailoring messages to their audience and minimising misunderstandings.

**Mindset and Learning**

- View programming as a craft and take pride in their work.
- Comfortable reading and understanding long-form texts; they appreciate depth over superficial summaries.
- Think that being fluent in programming ( + patterns, tools, etc.) is required but in itself insufficient skill for creating working systems and understanding humans and the domain is also a must.
- Distinguish between anecdote and evidence when making decisions.
- Care about the company’s mission. We all work for money, but for most of us, it still matters what we’re getting paid to do.

**Adaptability and Exploration**

- Willing to work across the stack, from database to backend, GUI, and infrastructure.
- Specialise based on interest and business needs rather than an inability to learn other areas.
- Enjoy experimenting with new tools and technologies but remain mindful of the costs of fragmenting the tech stack.

**Character and Personal Interests**

- Optimistic and positive, but grounded in realism.
- A healthy level of self-confidence.
- Would likely spend significant time with computers even if it wasn’t their job.
- Honest and confident enough to ask questions when needed.
- People who are vocal but don’t deliver much are not a good fit.
- Engineering managers are expected to be competent engineers.