Plamen Atanasov is Head of Engineering at PubGalaxy, the Bulgarian technology scaleup that helps publishers to increase their revenues from display advertising. He’s been with PubGalaxy since the very first day and he’s helped the growth of the company from just a few people to nearly one hundred.
Trending Topics SEE: What does PubGalaxy’s tech stack look like?
Plamen Atanasov: We are currently working on a new modular platform divided into separate services that will replace our current one and will allow us to scale more easily. When it comes to the main back-end language, we are moving away from PHP and switching to .NET Core. We use Amazon AWS for our servers and Jenkins + Octopus for CI and deployments. PostgreSQL for DB. Grpc as protocol for communication between services. Writing Unit and Integration tests, making Code Reviews and having a process to manage our technical debt are some of the best practices we use.
One of the more interesting things about our technology is that it features integrations at two different points. On the one side, we have integrations with demand partners and that is sometimes challenging because not everyone has APIs. But at the same time, for the ads to work in the first place, we need to be integrated on the site of the publisher – and that needs to happen without worsening site speed or user experience in general. This year, we started focusing more on automated testing of all these complex integrations – on every site there are multiple possible variations and combinations.
Moving forward, we will put further focus on automation, analytics and using machine learning to improve the revenue for our clients.
How about PubGalaxy’s engineering process?
PubGalaxy works in product teams – one product manager, software engineers, and QAs – so that the team can separately achieve its goals according to our OKR system. Everyone’s working on certain annual and quarterly objectives and when it comes to shorter planning, we are using a Scrum-like process with two-week-long iterations.
On a daily basis, the different teams have standups. Of course, there is coding, meetings with product managers or other stakeholders. We encourage people who help their colleagues. Sometimes, at the end of the day, we get together online to play games like CounterStrike.
What are the key roles you’re currently looking to fill?
What are the most important qualities candidates should have?
It’s important for the candidates to have a growth mindset. Internally, we have a personal growth map system used at all levels in the company. We all set goals in areas where we want to improve – these could be soft skills, technical skills, or others. The format varies depending on the need – everyone has a self-improvement budget that can be used for courses, books, sometimes we arrange a mentoring program within the company, there is also a program for team leaders to help them improve their people and management skills.
But this only works if people actually want to self-improve and they’re actually passionate about continuous learning into the domain they’ve chosen. That said, I’d add, we are definitely looking for developers who love whatever their job is and are not working something just because it’s paid well.
Engineers who enjoy solving problems rather than checking tasks off from a to-do list will, people who put an effort to understand the problem and why something is done, certainly fit in well with us.
Technical skills are also important, of course, but as long as you have a solid foundation they can always be improved down the road. So, that’s why they’re not the first factor I mention.
What are the most interesting engineering problems the software developers at PubGalaxy can solve by joining the company?
Well, in advertising we face different challenges every day, for example one of the most interesting problems is how you can create an ad that’s effective but doesn’t ruin the user experience. So, making it show at the right time and at the right place, it’s definitely a good engineering challenge. Extracting, storing and using data to optimize our performance is also quite interesting by itself – things like A/B testing whether to put two or three ad banners on a given site, where exactly to put them, and so on. Ensuring Ad quality, fighting malicious bots, integrations with many external systems are another example.
What advice would you give to young software engineers, the ones at the very beginning of their programming careers?
To read and to practice. To try out different technologies and develop their own projects. I will go back to the thing about continuous learning – you shouldn’t think you know everything after you’ve completed a single online course. It’s a long process – from my own experience, I got to know first hand that the more you learn, the more you realize there is a lot left to learn.