A Man Dancing with Code. Meet Piotr
Piotr is a bright team leader. Some would say that he is our tech dad, always ready to assist you. He asks and asks questions to test your approach and as a result brings the best possible solution out of you! The clients' dream is to clone him but probably he is the only one who could figure that out. Meet Piotr, a programmer with over 15 years of experience who always remembers that behind every line of code there's a human.
From a junior to tech evangelist. How did it all begin?
First ever language that I learned was Logo Komeniusz which was a typical programming language that was taught in Polish middle schools. Then at highschool I learned some Turbo Pascal. I probably would not be a developer if it had not been for my highschool IT teacher - Ryszard Szubartowski. He had unusual teaching methods. During our first or maybe second classes in high school he told us to resolve tasks that were meant for competitors of national IT championships. Many F grades were given then so obviously some parents were not happy with that.
But for many of us, me included, these tasks were so inspiring that we just wanted to learn more about solving challenges using mathematics. Because that basically was IT for me then. I loved proofs and logical deduction. I always loved to solve puzzles and the idea to build something virtual really spoke to me. Then I figured out that this was something that I could do for a living. Therefore after graduating high school I went to Computer Studies at Gdańsk University of Technology.
I noticed that your first Github commit was the game application Phutball – philosopher's football. Can you tell us more about it?
The Phutball project was a part of my master’s thesis. My thesis was in fact about mathematical chances to predict when various games end. Phutball is an example of the game that is hard to predict if your next move is going to be the winning one. It is easier to logically prove that in terms of games like chess, Go or checkers.
When did you decide to find your first job as a programmer?
Somewhere between my third and fourth year of studies I started to look for my first job in software development industry. Back then it was not easy to find one. I was at my first job for a short period of time and then I joined a corporation in Gdańsk. I met many experienced developers there who were following hot trends regarding project management, involving Agile which was not so popular in Poland back then.
When I was starting not many people heard about test-driven development. Now it is common. First, I programmed in C# then I learned JavaScript, Ruby and Objective-C. It fastly became clear to me that when you learn one paradygmat in programming then it is easy to use this knowledge to learn other languages in that paradygmat.
I tried not only to focus on learning programming but also to understand how our components take place in the system architecture. Now we call it microservices then it was called service-oriented architecture (SOA).
After a few years I felt that I needed a change. It was hard to have influence on things working in a corporation. And I could see how much can be achieved in small teams so I wanted to join a smaller company. And that is how I came to Bright Inventions.
You have around 35k total reputation on Stackoverflow. Only about 7k users are on your level. How did that happen?
Really? It is actually hard to believe that I am in such a small group. I guess that after moving from C# to JS stack I was shocked how Java is vast compared to C#. Of course, there were libraries that helped to manage that. Yet when I met Kotlin it seemed that this is a perfect combination of both systems. Its compatibility with libraries and source code of Java was so high that as a result my productivity increased. It was much easier to write code in Kotlin than Java.
Now this gap between both languages has been minimised. But then I thought that Kotlin was such a great option and yet still not many people knew it. So I dedicated my time to help people who wanted to know Kotlin. I tried to answer as many questions as I could about Kotlin on Stackoverflow.
I think when it comes to Stackoverflow reputation you cannot cheat the system. You have to be systematic about it. Answer every possible question you know the answer to. And be patient enough to wait for your reputation to grow.
What are your predictions on trends for software development for 2022?
The main trend that I see is that programmers are becoming more and more responsible for managing backend infrastructure or even setting up cloud services on their own. Cloud providers modify their products to make them more accessible for developers. DevOps are not as necessary as they used to be. They are still needed naturally, but we used to ask them to do the configuration for us and now we can do it by ourselves.
Another strong trend is moving to higher and higher levels of abstraction in terms of developing backend systems in the runtime environment. What I mean by that is using more and more serverless technologies. Tools and frameworks we use make us use more functional programming. We can see that especially in frameworks like React or Compositional AI.
Why do we work with AWS at Bright Inventions? When should we choose AWS or Azure?
There is not a great story behind it. We use AWS because we know it. 🙂 It is like driving on the left side of the street in England or Australia. It is just how they learned so they do it that way. At Bright Inventions we started with AWS so we stuck to it. I do not think that it would make a great technical difference if we used Azure or other cloud services instead of AWS. Looking from a business perspective it does not matter as well.
What best practices do you follow when writing a code?
We should write code keeping in mind people who are going to read it. First, we have to focus on the recipients of our code, not on efficiency or pace of writing it. It comes from the fact that code is more often read than written. If you optimise it too early, you usually complicate it, which makes it more difficult to understand it.
It is definitely something very difficult for developers. It often might be hard to present in the code what we wanted to achieve. For your programs it might be irrelevant – application does what you told it to do so it seems fine. You did your job.
So, we often do not think if we could write it differently so our code would be better understood by humans. Thus if the next person comes and reads our code, they will understand what we wanted to do. Often we do not have time for that because the program works the way we wanted it to work so why should we bother? But in a longer perspective – we should care! You can see a value years from now. When someone new has to take a look at it after years to understand the reasons why this code was made, then we have an issue. Especially when we plan to develop our solution for years, then we have to write code for future readers.
Can everybody be a software developer?
I think everyone who wants to be a developer can become one. I remember that when I started to learn I felt really frustrated. Now you have access to lots of materials, guides, tutorials and more. When I was starting there was not even Stack Overflow so imagine how long ago that was. 😉 I think now it is easier because there is access to this knowledge. It is up to you if you are motivated enough to go through this. If you want, you have every possibility to learn.
Of course, you have to dedicate lots of your time to achieve your goals but I guess that is typical for many industries. You do not become a lawyer in 2 days. That is a process for programmers as well. You have to learn and train systematically. After some time it can give you lots of satisfaction when you finally feel the power to solve some problems in the virtual world.
What projects you have worked on bring the best memories?
I always enjoyed projects that I truly believed in and felt that they solve real problems. For example, when we were developing at Bright Inventions an app supporting taking medicine it was really interesting to understand older people's interaction with the phone. It gave me a unique perspective on our app users.
When we were working on a system gathering data about discounts at stores we could also learn more about human shopping behavior. That was also very interesting.
Another interesting case is building an EPOS system for restaurants. This is a software used for 8 hours a day by employees of restaurants. They completely rely on our work. It is not a lifestyle app that gives us pleasure but is necessary to do our work. In the case of ePOS systems, our priorities are stability and ensuring business processes even despite the obstacles like Internet connection disruptions. If Facebook does not work, we can go for a walk. If the ePOS application does not work, we have a line of frustrated end users that cannot pay for their orders. So, the level of stress is much higher.
Also, we cannot do changes in the interface just like that. As I mentioned, our clients use it for 8 hours a day and have strong habits associated with the app like that. The user's memory is massive here. If you move one button, you can totally disturb their daily work. Every change on the product must be reasonable because it will affect your users. Feeling the responsibility for users is a crucial part of our job as software developers.
What do you do after work?
Recently I got into joinery. I took my first steps by building woodshed but I plan to build more. Like many people at Bright Inventions I love jogging. After work I also learn to stay up to date. I like to watch good movies as well. One that I recently enjoyed was “Fury” with Brad Pitt. It was not another movie about WW2. It brought a new perspective to the table.