Hi Andriy, tell me a bit about yourself and your professional background?
Well, I’m a programmer, entrepreneur, marathon runner, and reader. I started programming at school (Lviv Physics & Math Lyceum) and fell in love with it. I spent days and nights solving sophisticated algorithmic problems and designing solutions. Later in the university, I started working as an Android Developer, applying my knowledge in practice.
And then I co-founded my own company that specializes in mobile app development – UPTech. We help companies all over the world build great mobile apps.
How did Topcoder competitions help shape you as a software developer?
When I started programming, I joined the local programming community. The leader of the community, Vasyl Biletskyy (Topcoder handle – “Vasyl[alphacom]”), was a gold medal winner of the ACM ICPC in 2008. He taught us how to approach problem-solving and how to master algorithms. This knowledge later helped me a lot, as I was able to understand other programming concepts much faster based on the experience we gained with the Topcoder Community. It’s a valuable experience.
How did UPTech happen? What gave you the idea of having your own company?
I co-founded UPTech in February 2016. My partner Dima and I were working as software developers. We were not happy with the way typical teams are organized and we wanted to build our own team. We believe in transparency, freedom, common values and mission. We wanted to organize our team around these ideals. We left the previous company, started taking projects and delivered them by ourselves. And as we got more projects, we invited our friends to join us. That’s how we built UPTech.
What is your Topcoder handle and which tracks have you competed on? Are you still active?
My Topcoder handle is AndriyBas. When I was at school, I took part in several SRMs (Single Round Match, Algorithmic competition), but didn’t successfully finish any of them. At that point, I was only starting and Topcoder was a high bar I wanted to reach. I participated in a simpler local contest.
I’m not active anymore on Topcoder and almost don’t write code. That’s the price of being a founder and an entrepreneur. However, I do mentor junior team members or write open-source projects (like this one).
What would you say is the one trait of Topcoder members, that you like the most?
It’s curiosity. I see it in many Topcoder members and really love it. It’s the curiosity to discover new things, new algorithms, figure out the solution to a complex problem, improve the existing solution. This curiosity leads to continuous learning and improvement. And being in such a community, you’re constantly challenged to grow. That’s what I valued the most in Topcoder community.
How many people does your team have now and what are your criteria when you hire new people? Do you ask questions that a Topcoder Community member can answer easily, but other programmers cannot?
There are 34 team members in our team right now (as of January 2018). During the interview process, we evaluate people for soft skills and hard skills. Our technical experts do the hard skills interview and always ask follow up questions to check if the candidate understands the topic. One of the must-have parts of the interview process for developers is to check for algorithms. We know from the experience that it’s easier to train a person the new technology (like Android app development) than to train him/her the core programming concepts – algorithms, data structures, OOP, etc. We would rather hire an Android developer who knows algorithms but doesn’t know Android platform very well, rather than the one who knows Android platform but doesn’t know algorithms. We don’t fall into the extreme and don’t require the knowledge of very complex problems but a good knowledge and understanding of main algorithms are essential.
The experience with algorithmic programming and participation in Topcoder community allowed me to hire such people and to set up such practices in our team. Usually, an experienced Topcoder member would easily answer these questions. A programmer who knows only how to create websites would struggle with them. Tech giants, such as Google, Facebook, Microsoft, have similar interview processes. So being a successful Topcoder Community member opens the doors for developers to the best IT companies in the world.
What technology stack(s) do you mostly use in the projects?
In our mobile apps, we use mostly Android SDK, iOS SDK and React Native SDK. For the backend, we use NodeJS, Spring or Python Django. Other libraries/stacks we use on a case-to-case basis. For example, for one of our projects, we developed a neural network, for another, we used DJI SDK to connect to drones and interact with them.
What application(s) you developed, are you most proud of?
I’m most proud of the Dollar Shave Club Android App our team wrote (together with the client team). It’s a big and complex project. And it’s beautiful! We developed the whole architecture for the project, based on Clean Architecture principles.
Another project we’re proud of is Aspiration iOS and Android app. It’s a financial app of the future. We love what they do and how they do it very much, their motto “Do Well. Do Good” resonates with our values.
I’m also proud of the Prometheus educational app our team made. It’s a Ukrainian MOOC platform based on EDX. It gives millions of Ukrainians access to quality only education. We made an Android and iOS app for them free of charges.
What were your biggest challenges (good or bad) when you founded Uptech?
My biggest challenge was how hard it is to build an effective team. Being a sole developer and building a team of developers are completely different tasks. Good technical expertise is not enough. In order to achieve great results, the team members should trust each other, help each other, hold each other accountable for their commitments, collaborate effectively. And it’s very hard. While working on your technical expertise, I encourage Topcoder community members to join the team and develop team skills as well, as it’s very important in the real world.
How do you help your team members grow and become the best at what they do?
We have many practices regarding how to help each of our team members grow, as Continuous Improvement is one of our core values. I believe growth can happen when there is psychological safety for each team member to admit their weaknesses and mistakes without fear of being laughed at or judged. We achieve it through trust, transparency, and regular constructive feedback. Also, we have a program called Goals. It’s a personal growth and development process. It’s designed to help team members set goals, find members and achieve them with the help of the company and other team members. Our senior team members couch the junior ones. We regularly share knowledge and useful info inside the team to help each other become better.
What was your best performance as a Topcoder competitor?
Unfortunately, I cannot boast of any good performance as a Topcoder competitor! Topcoder was a high bar for me when I was actively programming. I took part in similar local competitions. My best performance is the bronze medal during All-Ukrainian Informatic olympiad in 2011. Vasyl Biletskyy was our mentor at that time.
What would you tell a friend of yours to convince him or her to join Topcoder?
I would advise having the end result in mind – defining the goal. And then show them how joining Topcoder helps them achieve that goal. If they want to be great developers and work in a cool startup or the big company such as Google, then joining Topcoder is one of the fastest and most effective ways. It gives the foundation of the right algorithmic thinking, invaluable problem-solving mindset, connections with the community of highly motivated and talented people. And I’d highly recommend starting as early as possible – it takes time to learn and practice many algorithms and data structures and become a great developer.