Oleksandr Hulak and his Best Practices in Software Engineering
How did you initially get interested in technology?
I started learning the coding language C++ in 2009 when I was in ninth grade at school. Pretty soon I took part in the World Robot Olympiad with a friend. As a result, we won the regional and Ukrainian stage of the competition. Then, in 2011, we placed first among the European teams and, ultimately, took ninth place out of 59 world teams in the United Arab Emirates.
During that time I realized I love programming devices that receive input data from sensors. Later my achievements helped me earn enough credits to study computer science at Kyiv Polytechnic Institute.
Why did you choose Android Development?
Meanwhile, the world of mobile apps was growing. The variety of data available on your phone (like camera, sensors, geolocation, multi-touch, NFC, bluetooth and so on) opens up the richest world of possibilities for mobile applications.
In 2015 I made the move to mobile development, which has an interesting backstory. One day I was cooking a meal and my phone rang. I wanted to reject the call and send an “I’ll call you back” message to the caller. However, my hands were dirty and it would take time to wash my hands, grab my phone, and send a message. At that moment the idea of my first app was born.
I learned how to get information about an incoming call, how to reject it, how to do “speech to text” offline and recognize what the user said. Essentially, I created a background service which is running when someone calls you. You can say “Call me later” to your phone to reject the call, and (optionally) send an SMS to the caller. In two months this app helped me to get my first job as a Junior Android Developer.
Back then only my friends used it, but after a while several hundred users from the US and India downloaded it. That was a surprise to me as I haven’t promoted my app at all.
What does modern Android development look like?
The standards of Android development are growing fast and constantly improving. There is a constant influx of development tools every year, so you have to learn and learn and learn.
Back in 2015 it was enough for me to start my career just by knowing the basics of Java, databases, and having a single small Android project as a portfolio.
However, nowadays you must know more. Kotlin became the recommended official language for Android development. I’ve seen many projects written in both Java and Kotlin. Android Architecture Components together with Jetpack are getting more and more popular. You have to understand the MVC, MVP, MVVM app architectures (at least). What is dependency injection, what is Git, and how to do multithreading. All of it was made to make apps easier to develop and maintain, to make UI and UX better.
At the same time, trends are changing. Now it is much easier to develop an app with machine learning, artificial intelligence, or augmented reality. We have some good services and libraries for it, like ML Kit or Vuforia. Multiplatform mobile development is quite widely used in many companies, especially due to the Flutter language.
I would say, the sooner you start the easier it will be for you.
Three tips you’d give to the beginners?
- Get into the dev community. Talk to other devs, discuss problems with them, it will help you to grow faster and keep your knowledge up-to-date.
- Do not underestimate your value and price. The devs market lacks good specialists.
- If you don’t like what you do for living – try another field of study ASAP. Don’t torture yourself, do what you like. It took me about four years of trying back-end, front-end, and game development to find out that I actually like making mobile apps.
How do you improve your technical skills?
- I subscribe to some Youtube and Telegram channels: Android Architecture, Android Developers, and Android Broadcast.
- I also watch Google IO every year, which is an annual developer conference where Google announces new hardware, software, and various updates for its existing apps and services.
- And one more thing: if I use some tool and I don’t know how it works, usually I figure it out on my own. The best way to get to know things is to learn them in practice.
Which project are you working on right now?
I’m working on a smart home app which allows the integration and control of smart devices, like light bulbs, motion sensors, cameras, plugs and switches, thermostats, and so on. For example, you can control your lights and devices from anywhere — like on the beach, in the office, or while still in bed. You can set your home to your schedule, e.g. turn on and off lights and control temperature according to some particular time frame.
What are your hobbies and how did they shape you?
I have been playing tennis for more than two years now. To me this is the most interesting sport I’ve tried, and now I watch tennis matches, video lessons, and play with my friends on weekends. I’ve also played in paintball matches since university. I enjoy video games too, and Rocket League is my current favorite. One other hobby of mine is hiking, and a memorable trip was an 8 day hike in Bulgaria. Mountains make me feel calm and free.
What do you like most about your job at Transcenda?
The company’s culture and transparency. I feel valued, and Transcenda does a lot to make the employees happy. And like I said, I really like the project I’m working on: its ideas, technologies, the professionalism of my co-workers, and the “quality matters, not quantity” approach.
While I was working in Canada, I grew a lot as a person, but I had no chance to work with modern Android tools and libraries due to a conservative approach to my previous project.
But after my technical interview at Transcenda, where I met my future teammates, there was no doubt – the team knows how to make awesome, modern stable apps. So I decided to join Transcenda, and now we are in one boat rowing in the same direction 🙂