He Always Asks Why. Meet Andrzej – a Senior Android Developer
Andrzej is one of the most experienced mobile devs at Bright Inventions. He is a master of digression. So conducting this interview was a challenge. 😉 However, he goes straight to the point when it comes to advising clients on the best solutions to reach their business and tech goals. He always offers honest and valuable feedback. Because his job isn't just about writing code. It is much more than that. Find out what that is.
I think that it is all because I am inquisitive. Or maybe “overly curious” – some would say. 😉 I just love to explore things and understand them. My adventure with computers probably started when I was a kid. First, I learned a few commands on my father’s Atari 65XE when I was about 6 years old or so.
Later on, still in elementary school, my friend who was 5 years older than me taught me the basics of HTML. Also, he told me how to view the HTML files using Internet Explorer (on Windows 98). I suppose it had taken place even before I used the internet for the first time in my life.
A couple of years later, in middle school, I was exploring all Polish web directories for various software, apps, games etc. I was downloading lots of them to check them out. At some point, I found an app for creating algorithm flowcharts and executing programs created that way (if you are curious, here it is). That was a game-changer for me.
After that, I started to learn the basics of C++ so I could finally write my first command-line application. It all brought me to the high school class with advanced Math, Physics and Informatics. On top of that, in high school I met a very supportive Computer Science teacher, Andrzej Gac.
Yes. I studied Computer Science at the Gdańsk University of Technology as many people at Bright Inventions. Nevertheless, I didn’t start my career as a software developer as you might assume. During my studies, I couldn't make up my mind whether I wanted to be a programmer or a system administrator.
Eventually, I got an internship at a corporation which turned into a full-time job. I was someone who now would probably be called a DevOps but that term wasn’t so popular back then. Therefore, my position was called Software Configuration Management Engineer (SCME). A little bit long, isn’t it?
I must say that being “SCME” taught me a lot. It gave me knowledge about continuous integration practices, the software development lifecycle, working efficiently with Jira, a couple of version control systems (including Git), remote terminals (SSH), Linux systems and more. Due to the fact that I worked for a global corporation, I learned a lot about developing software on a big scale.
I wrote some code at that job. That was mostly some short scripts though. I didn't write applications or firmware. However, after a couple of years, I wanted to pursue a software development career. I enjoyed writing code and felt that I was quite good at it.
After almost 3 years in the corporate world, I decided to hand in my notice. When I did it I had no clue what to do next. I didn’t have any other job offer on the table. My plan was to take a break for 4-8 weeks to figure out what was next.
My wife was my rock back then. Actually, she pushed me to quit that job. She believed that I had the potential to do something more. Also during that time, she convinced me to go back to college. I already had an Engineering degree but thanks to her I was back at the Gdańsk University of Technology to graduate from Master’s studies in Computer Science.
When I decided to quit, I started to research the job market in the area. As a result, I felt strongly about pursuing mobile development. I liked the fact that building a mobile app allows you not only to implement UI but also to build the whole logic. So it was like a whole package for me. Also, in mobile development you quickly see the results of your work which gives you lots of satisfaction.
I chose Android over iOS because it is easier to start learning Android. I didn’t have a Macbook or iPhone so how could I possibly go down this road? Android seemed interesting so I started to learn it. During one month I built my first Android app and launched it on Google Play. It is still there actually.
I launched my Android app so it was high time to seek a job. I found a Bright Inventions job offer during my research and it drew my attention. I got this feeling that Bright was a company with friendly people who worked closely and supported each other to reach common goals. This company just felt human. After working at the corporation I wanted to be a part of a small and close team.
I was invited for the interview. I was terrified when I came. I had only a month of Android experience. What if that wasn’t good enough? My wife supported me quite nearby, waiting in the coffee shop close by during the whole interview.
I felt that my interview went fine. For sure, there were questions I couldn't answer but overall I felt that it was okay. After talking to Michał, Daniel and Piotr I felt that I really wanted to be a part of this company. I would manage to do this job. I wanted someone to give me the chance and I felt that I wouldn’t let them down.
Daniel and Michal told me they needed a week to give me feedback. Despite that, I was so anxious that I called Michał a few days after the interview to ask if they made up their minds. I told Michał that I was eager to work with them and couldn’t wait to hear their decisions. Years later I was told that that phone call actually gave me this job.
Since I came to Bright over 5 years ago I have got to know a lot about building software like the coding principles, practices and architecture. However, there was a special aspect of software development I realized at Bright. I understood how non-technical skills are crucial.
When you work directly with clients, like us at Bright, it changes a lot about your job as a software developer. What matters is your attitude, the way you speak and communicate. You are a little bit of a business analyst who has to understand what a client wants.
You have to not only listen but also be ready to offer an alternative solution when you know it will be of benefit to your client. Sometimes a client doesn’t know that the features they expect can be time-consuming to deliver. When there are faster options to achieve similar goals, you have to know how to communicate that.
You should be the expert the client can rely on to get to the place where they need to be. It’s like seeing that your client is blindfolded and is getting to the edge of the cliff. As an expert, you should be ready to lend a client a helping hand and quickly find a safe route for them.
Communication with the client is based on understanding the situation you and your client are in. It requires empathy. You have to stay human in the client-software agency relationship. Don’t turn into a robot that goes from one task to another and doesn’t even think of what it’s doing.
Another important skill is asking all the time “Why”. Don’t treat your tasks superficially. You have to learn to go deeper into the topic to understand the primary reason for the change you are about to implement.
You can learn from your mistakes, daily practice, watching others, and reading books. I had the pleasure to work closely with Mateusz during my first months at Bright. Mateusz is a very special person to me, I will always cherish the cooperation we have had. Mateusz is a master of communication with clients and interpreting their needs. Simply watching him in action was really inspiring.
I can also recommend a couple of good reads which I have found really useful. For example “The Clean Coder” by Robert C. Martin and “How to Win Friends and Influence People” by Dale Carnegie.
Yes, you can. But if you want to be a software developer who has a good reputation among clients and whose work is appreciated, then you have to be open to this other side.
Let’s not forget about the daily work in the team. Obviously, soft skills are very useful while working with your team members, whether you conduct a peer code review, discuss the UI designs or teach your less experienced colleagues.
A YouTuber. 😉 I would talk about video games. Take it with a grain of salt though. I probably couldn't make a living as a YouTuber and was forced to look for another job.
I am not sure if this is a trend or hype but I should mention Jetpack Compose. It is a new way of implementing UI in Android. Before that, you had to create UI as XML files and sometimes mix them with Kotlin code in a pretty clunky, non-modern way. Jetpack Compose enables us to write it directly in Kotlin.
Is that better and more convenient for a mobile developer? It depends on who you ask. For now, I have mixed feelings about it but I must admit I haven’t spent enough time to get used to it. That is a new massive thing to learn, with its own pros and cons. Some parts might become easier, but others could become harder to write, debug or understand. It’s still in the development phase and changes rapidly.
As a result, some Jetpack Compose features and our code using this new toolkit might not be working perfectly yet or could not be supported very well. I am not sure if it will be beneficial in the end. It probably depends on many factors, including what project you are working on and whether your team is ready to deal with the possible obstacles.
Jetpack Compose requires the total mind shift of the way you code for Android. If I had a project that needed to be developed quickly, right now, I wouldn’t use Jetpack Compose just yet. I don’t know it too well therefore I could make some silly mistakes and delay the project.
On the other hand, I know a few people who are already very familiar with Jetpack Compose and they can’t imagine going back. Seeing how much effort Google puts into Jetpack Compose development, I can’t help myself but believe that eventually, it might become the new standard. Nevertheless, there is still a very long way to get all the developers on board. I’m pretty sure I will give it a try quite soon.
Apart from Jetpack Compose, I should mention Kotlin Coroutines. They are nothing new because they were launched a couple of years ago. However, they are still trendy. More and more people start using them in new projects. Some aspects of Coroutines and their APIs are still getting stabilized.
After a couple of years, we can see that the Coroutines were a change that just made sense. Coroutines make coding easier and definitely shorten your code. In this case, the pros definitely have outweighed possible cons and the amount of time required to learn Coroutines. It wasn’t a hype that people wanted to try to eventually give up on it. It just works and if someone hasn't started to use Coroutines yet, then that person should catch up quickly because I think they are a good investment.
Have more faith in yourself.
I play lots of video games on my computer. I love games that tell a story such as Age of Empires, Morrowind or Genshin Impact. Apart from that, my interests are really a spectrum. From language influence on our culture, astronomy, biology to geography. Remember – I am quite a curious person. I will metaphorically stick my nose wherever it needs to be if I feel the urge to understand why something works the way it does in our world.