Demystifying Tech Team: How Our Dev Department Works
Have you ever wondered about how your banking app works? For most consumers, everything tech and finance-related is a deep mystery. For service providers and software engineers in particular, it is a hard work.
Dev team is the heart of every online business, but its contribution is often left behind the curtains. If you’re curious about how ‘the magic’ happens, we’re ready to demystify.
Team Structure
Every department could benefit from a well-planned structure, but tech teams cannot function adequately without it. Imagine dozens, if not hundreds, of developers working on multiple projects, receiving tasks from multiple departments, and urgently fixing bugs at 3 a.m. Once your business passes the startup stage, this model is no longer efficient.
For this very reason, Mercuryo’s dev department is divided into units. Each unit is dedicated to developing a particular tool from our signature toolbox, be it a user-focused crypto wallet or something more complex like API as a service. It is still quite troublesome to ask a team to check on somebody else’s code related to a completely different product despite documentation maintenance. That’s why specialization matters.
Mercuryo’s tech units consist of several teammates, including product manager, tech lead, testers, system analytic, DevOps engineer, and various back-end, front-end, and mobile devs.
We’re trying to keep an optimal number of team members in each unit and not overload them. By the end of 2021, we’re hoping to staff ten complete units.
A product manager monitors the unit’s work. This person has to be tech-savvy and always has access to the code, so they can check and comment on it anytime. Product managers are always well-aware about what their team is working at, and ready to assist or correct their work.
Technical Lead is the team member with the most profound product knowledge. A tester, back-end developer, or anyone else from the unit can act as a tech lead. They guide and assist other developers and help them whenever an issue occurs. They are responsible for the uniqueness and performance of the stand.
Each unit has its own stand to test out the tasks it tackles. Basically, a stand is a testing environment for the dev team dedicated to a certain unit. Every product’s feature should be tested on the stand before the team can release it.
Most of the devs work remotely, although they can join the team in one of our offices if they choose to. To coordinate the workflow more efficiently, the teams have weekly meetings to discuss the plan for the week ahead. Most tasks come from support, business development, financial departments, and sometimes, from our B2B partners.
If any issues arise, developers have to be ready to fix them asap.
“People tend to get extra sensitive when it comes to money, so a quick reaction is a must.
In a way, you can compare developers and doctors as they have to be ready to step up immediately in case of an emergency. Developers aren’t saving lives, but they deal with technological and, in our case, financial aspects of people’s daily routine, which sometimes can turn into a life and death situation.”
Konstantin Stasenko, CTO at Mercuryo
Infrastructure Specifics
Initially, the project was employing the PHP monolith. It is pretty common for a startup to use PHP as an ideal temporary solution to launch faster. However, once the company starts scaling, it may turn into a setback as soon as the company starts growing, new people join the team, and the amount of code increases significantly. Later on the way, Mercuryo had to face the issue.
Once we realized our team could not handle the number of tasks it gets, it was clear we had to make some serious changes and lean toward microservices. Microservices came out as a great alternative that fitted the needs of a rapidly growing fintech company simplifying the development process.
Microservice architecture proved to be the best fit for Mercuryo as it is a lot easier to design a few microservices than support one large monolith structure.
GoLang proved to be a much better fit for a company like ours, and the biggest struggle was to rewrite existing products in a new language. Until now, some bits and pieces of our architecture remain as a PHP monolith, but eventually, we hope to finalize the transition.
Searching for Talents
Speaking of challenges, highly-skilled developers are worth their weight in gold. A lack of talented software engineers on the market is one issue. Secondly, a common trend for a developer is to stick to one company and rarely change the employer unless something extraordinary happens.
Finally, some developers cannot pass the interview process as their experience is not enough to keep up with the rest of the team.
A typical interviewing process consists of two parts. First, the candidates have to undergo an hour-long tech evaluation, demonstrating their skills in the live mode. This interview with Technical Leads covers all the critical aspects of their future work to get complete information on the candidate, their hard skills, and expertise. Those who successfully passed the first stage will be offered the second interview meant to define their soft skills and the ability to work in a team.
You would think that finding a rare specialist with an ideal set of hard skills and impeccable expertise is already good. However, we came across excellent professionals with serious commitment issues who failed every deadline and struggled to show up. Fortunately, although these cases are an exception, it is always better to filter out such people before joining the team.
The Bottom Line
The work of developers can be described as magic. Those are developers who bring all the wild ideas and solutions into life, creating simplicity by applying maximum effort, invisible for the end-user. Forming a strong and solid tech team is not easy, but we’re getting there at our own pace.
Want to join our team or know an excellent developer looking for new opportunities? We’re still hiring!
Originally published at https://blog.mercuryo.io.