What's it like to work in an R&D-led biotechnology startup? What challenges do software development teams solve, and what skills can they acquire? Read this interview with Piotr, our VP of Engineering, to get the scoop on a developer's work in this unique setting.
About Piotr Deszyński: VP of Engineering at NaturalAntibody with 15+ years of experience as a CTO and tech lead in the technology industry. Responsible for managing the technological requirements of the entire organization, developing a product roadmap, and supervising the delivery process.
NaturalAntibody finds and optimizes antibodies used to develop new drugs. We use our own machine learning algorithms and data collected in various systems by scientists over the last few decades. The amount of data is huge, and its potential has not been used in this way before.
This is an ideal job for developers who want to constantly expand their skills and work on new problems. It's not a place where you build the same type of software repeatedly as in some commercial projects. On the one hand, we face a dynamic development of bioinformatics; on the other, new deep learning models and architectures for processing sequential data emerge constantly.
Working at NaturalAntibody is perfect for someone who likes to face unconventional problems. The scale of the antibody data is huge, and there are no standardized algorithms to process this data (e.g., how to search for similar sequences).
Many of our team members are also motivated by the feeling that they are doing something important - their work may contribute to the faster development of new life-saving drugs. Another related advantage is that team members can become authors of scientific publications in prestigious publications, attend conferences and collaborate with specialists from scientific institutions around the world.
Projects related to NaturalAntibody are quite difficult due to the scale and complexity of the solutions already in the initial phase. In most projects, scale tends to increase over time as the number of customers or user base increases. For NaturalAntibody, the project starts on a large-scale data processing level right away, which is an exciting challenge.
This type of work will appeal to people who are interested in working on many topics - there are issues related to Big Data and TB data processing, Deep Learning, but also more "down-to-earth" backend, frontend development, or DevOps topics.
We also use technologies that are already standard in the tech industry - TypeScript, React, and GraphQL for the frontend, and Python, FastAPI, OpenAPI, MongoDB for the backend in the microservices architecture, thanks to which we don't limit ourselves to these technologies.
At the moment, we essentially have two big teams on board. The R&D team consists mainly of bioinformaticians, data science specialists, and machine learning engineers who deal with research work.
The Delivery team consists of backend developers, frontend developers, and DevOps engineers. Its task is to implement solutions developed by the R&D team and work with our clients, responding to their needs when implementing our analytics tools. This team also integrates solutions developed before R&D with our code and implements them.
We are growing very quickly, and our organization will certainly evolve. In the future, we will strive for greater granularity, creating smaller cross-functional teams that we can easily scale. Our next goal is to build guilds - groups of engineers whose goal is to share best practices with the rest of the team. Guilds act as connecting tissue between departments, allowing engineers to exchange information and develop new skills.
At this point, I manage the team directly. In the future, the team will always be managed by a technical person who has a good understanding of development work.
The team itself is cross-functional and includes backend developers, frontend developers, and DevOps engineers. The biggest problem is finding the right people for the team.
The solution we aim to build is not the so-called CRUD, as a result of which we stick to good principles such as Clean Code, GRASP, SOLID, or Domain Driven Design (both in terms of tactical and strategic patterns). The subject of quality at the code level is very important to us - quite often overlooked in the world of startups.
Another challenge is the fear of the project's subject. For most IT specialists, biotechnology relates to biology classes they had at school many years ago. It may seem more relevant to data scientists than frontend or backend developers. In practice, however, our goal is precisely to reduce the entry threshold for people who want to deal with antibodies. So, the subject matter should not constitute a barrier for those potentially interested in working on the project.
Our first step is to analyze the client's needs and processes in the team that will be using our solution. On this basis, we prioritize work and build a solution that fits perfectly into the work of the client's research team.
The Delivery team doesn't only carry out the tasks set by R&D or design but is actively involved in building the solution. Each team member has an impact on what the final product delivered to the client looks like.
We try to stick to the Agile methodology and Scrum framework, adapting it to our needs. We work in two-week sprints that contain all key ceremonies (daily standup meetings, sprint planning, sprint retrospectives).
We have our own definition of "ready," and during refinements, we jointly set priorities and evaluate the amount of time needed to complete a given task. Once we have a list of tasks for a given sprint, team members individually choose the tasks they want to work on. At the end of the sprint, we organize a demo to show the developed functionalities.
When a given functionality is ready, it goes through our review and continuous integration process, where we confirm its compliance with our tests (we also use contract tests). Then the continuous deployment process is launched, where software functions are provided through automatic deployments.
Jira works well in project management, and we also use Confluence to collect data and measure progress. The code itself is in GitHub - our CI/CD process and the GitOps approach are also based on GitHub, thanks to which every developer can change something in production.
When it comes to production, everything is based on containerization. We use Kubernetes and Amazon EKS to manage the containers. The entire stack is based on open-source technologies, which is important because it allows us to easily transfer solutions to our client's environments.
Currently, our open-source material is scientific publications, where we describe our technical solutions. Certainly, other open-source projects will appear soon since the open-source approach is in line with our company values. We have already taken the first steps in this direction.
At the initial stage of the company's development, we focused on recruiting experienced programmers. By expanding our teams with less experienced people, we will combine people with similar competencies in guilds. That way, they will be able to acquire new skills under the guidance of experts.
We currently organize regular 1-on-1 meetings and special sessions where we talk about achieving our goals (Objective Key Results). We also have a performance review on a semi-annual basis.
We care about providing feedback on many levels of our organization because it helps improve each person's performance - e.g., through code reviews performed by experienced programmers. It's a very valuable element of our organizational culture.
NaturalAntibody uses the full range of best practices from the IT sector, combining scientific subjects with advanced technical competencies.
We use the latest tools and approaches like OpenAPI (including strong typing to generate documentation) and Domain Driven Design (strategic patterns, different types of architecture).
Our programmers have the opportunity to get to know GraphQL and try their hand at different programming languages as part of the API gateway. Another valuable practice is writing contract tests - developers can learn their secrets and develop their skills in this area.
Of course! At the moment, we are looking for experienced backend developers specializing in Python and DevOps engineers who will support the team by creating the infrastructure needed to process Big Data.