Our beginnings – part 1. You become a specialist in a team – Leszek’s story

How to become a programmer? It turns out that there are many paths to this profession. We decided to introduce you to a few of them based on the example of our employees. We start with Leszek, who today is the Senior Director of Engineering.
The interview with Leszek was conducted by Patryk, one of our Team Leaders responsible for the entire cycle. We invite you on a journey through technologies, programming challenges, and – the past of the IT industry. We give the floor to Patryk…
I think any of us with a flair for technology one day said, okay, I’m becoming a programmer. They plunged into a whirlwind of issues, perplexities, and doubts – where to start and when will I be ready? Many hours of browsing the Internet, loads of articles read, but the question ‘can I handle it with my skills’ or ‘am I the right age’ remains.
Heads up! In this and in the following articles of the ‘Our beginnings’ series, we will try to present the stories of several of our developers, their challenges, doubts, and all this to show you that in fact – it is enough to Want. And this ‘want’ with a capital W is especially important here.
How do I become a code whisperer?
In the first part, you will meet Leszek, our Senior Director of Engineering, who started his career in the eighth grade. Where did Leszek’s passion for programming come from and what was his education like? Here’s what he told me:
What if I could make the computer do what I expect it to do? This question has been bothering me for several years, when as an eighth grader I decided that I wanted to go to high school, to a class with a mathematical and IT profile. I did not have a computer at the time, but various films in which the heroes, like magicians, made machines obey their orders, effectively awakened my youthful imagination.
I made it! The time has also come for the first computer. I still remember the expression on my parents’ faces when, on the same day we picked up the computer, they found me in the evening with all its components spread out on the desk, instead of staring at the monitor. As a long-term subscriber of the computer magazine ‘Chip’, I wanted to see each element and confront the previously acquired knowledge with reality. Unfortunately, my parents did not share my optimism at that moment. Fortunately, everything was put back together, and the proof of success was the fact that after the treatment, no screw was left alone on the desk.
As it turned out later, the mention of the IT profile in the name of the class was not there by accident, and our teacher did not wait too long with the introduction of the first programming language, which I was supposed to stay with for a long time, for the entire high school.
Read also: How do we implement new technologies? An interview with our developer, Marcel
Program, User, Begin, End… yes, that’s when I found out that Pascal is not just a unit of pressure. So successively over the next semesters, thanks to the Pascal language, we carried out new tasks, solving more and more complex mathematical and physical problems. So it was time for the final work, the most important one – to pass the exam. I remember the input data today: speed, mass, graphic library, and elastic collisions because that was what the program dealt with. It wasn’t just going to be counted. There was also to be appropriate animation, keeping the proportions of all units. What an achievement it was then, what pride … and yet it was only the beginning of a long and bumpy road, which in retrospect I could not yet imagine. Typical Dunning-Kruger effect. Matura exam? After such preparation, it went smoothly. Computer Engineering at the university waited with open doors.
Complicated developer path
When I asked Leszek about his story, I had no idea what I was signing up for. What I got was a perfect picture of what stubbornness and willingness can lead to. And he started with C ++.
C ++ or the development of ANSI C did the biggest havoc in my head. It was a continuation of the road I mentioned earlier, a road where I didn’t know there was object-oriented programming around the corner. The abandonment of so far established structural thinking in favour of objectivity, polymorphism and inheritance was perhaps the most difficult thing that happened to me in the programming world.
But when I did this stage, I felt like Neo in the Matrix. I no longer saw letters and numbers, but data objects and models. It was amazing. Another value of using C++ was the tremendous respect for resources. There was no Garbage Collector and functionalities forgiving the programmer for his extravagance or hiding certain implementations. Most of the things had to be done by hand. From the perspective of a high-level language, this is burdensome, but it allows us to perfectly understand the behaviour of the system components and its benefits and consequences.
As you can easily guess, this is not the end of the story. It will continue with Java and SQL:
Java was another milestone. A step that introduced an easy-to-design user interface allowed for even more fun with the objects. Here was a language in which programming was fun. The use of multithreading, the use of 2D graphics in applications, and the possibility of debugging. All this together allowed us to enter a completely new level. It was the moment when I became convinced that this is what I want to do in my life. After all, combining professional work with playing with code, which is so fun, is a recipe for success. Is it not? From then on, I tried to implement all projects in this language during my studies, whenever it was possible. The last project realized in this way was, of course, my master’s thesis. I might say at this point that my thinking at that time was based on Bruce Eckel’s ‘Thinking in JAVA’.
But what are algorithms, or the best programming techniques, when we don’t have the data to manipulate them? And preferably large amounts of data. You wonder again: I’m a seasoned object-oriented programmer, so why do I need these database archaisms ?! Mistake! The sooner you as a developer understand the relationship between data and code, the better for you. You can certainly store dozens of items in just any file, but the ability to effectively store millions of records, build relationships between them, or effectively search these data, is the next level, or… another turn on the road you are driving. Modelling the world or the problems you will face, to a large extent, will start with the data and end with the code of your program.
Read also: Internal recruitment in AUCTANE. From customer service to coding – Magda’s story
I listen to Leszek and I think to myself: okay, backend, backend … So he probably never made a front … It turned out that not quite:
PHP, MySQL, HTML, and CSS, so I’m a developer, so I want my website. Because although at least in my case, there weren’t too many of these issues in my studies, I decided to create my first website while learning how to do it. It was something completely different than before. Fascination again, sleepless nights, a lot of completely useless functionalities just to be coded and seen in action. Something amazing. For the first time in history, my code was viewed not only by a colleague from the group or a lecturer. I could give the address of my website in the description of any messenger and every friend of mine could enter it and see the effect of my work. Although I was the only one who knew at that time (or actually I found out later) that spaghetti code is not the best solution, nevertheless the time for appropriate web frameworks came later.
This is how the intense and joyful period of study came to an end. When I got my master’s degree in engineering, I felt exactly like I was at the end of high school, and although more experienced, I was again trapped in the effect I wrote about earlier.
If I were to point out one thing that I consider important during my studies, it will certainly be the words I heard once during class: ‘Studies are not there to teach you everything. They are there to indicate the direction, and you have to acquire comprehensive knowledge yourself ‘. And although these words initially seemed absurd to me, in retrospect their value is invaluable. After all, this huge amount of time to solve the tasks that I set myself, just to learn the next elements of different technologies, significantly facilitated my further steps in this constantly changing world.
AUCTANE
As the last part of my conversation with Leszek, I left… the last part, which is the most current stage of his career path – AUCTANE and the aforementioned programming language:
The time has come for my first job after graduation. ‘Can you code in JAVA? That’s great, you’ll be coding in C#!’. This is how another and probably the longest adventure with one programming language in my life began. After the initial challenges related to some differences between JAVA and C#, it turned out that the devil is not so black as he is painted. Of course, the clash of the currently possessed knowledge with the level of fellow programmers who have been working in the profession for some time only encouraged me to further explore previously unknown areas.
A person can spend a lot of time learning independently, but only the environment of ambitious people who want to share their knowledge and openly discuss the problems they face allows you to really get to know various technologies with a multitude of aspects that concern you. This is when we become specialists who perfectly know and understand what they are talking about, and the previously acquired, well-established knowledge allows us to understand the mechanisms operating under the proverbial mask. And when it also happens that everyone in the team has a slightly different area of technology, which is their tailstock, the amount of invaluable knowledge that we can obtain in this way is multiplied. This is what it was like in the teams in which I have worked over the years. Mutual motivation, discussing problems, and various approaches to solving them, often result in failure. You should remember not to be afraid of failures. You should learn from them and move on. After all, errors are not made only by those who do nothing.
Design patterns are the next stage of development. A brilliant set of issues, which, in my opinion, every programmer should know, because it not only makes working with the code easier, but also significantly speeds up the process in the long run, not to mention maintaining the code. And the most interesting thing about it is that the programmer, when he doesn’t know the patterns yet, but is lazy enough, uses patterns involuntarily without being aware of it. Yes! I believe that a lazy programmer is a good programmer because they always think about what to do so that they can use it elsewhere.
If you decide to work developing software, you can look to the future with peace of mind, because there will be no room for boredom. In this industry, you are constantly moving forward and constantly learning new technologies, frameworks and concepts. There is always an area around the corner that you do not know, and which is worth exploring by broadening your horizons. Remember not to limit yourself only to working on hard competencies. They are crucial, but without an appropriate approach to the team that you will be part of, without the ability to work in a group, without the ability to communicate, but also to listen, each work will turn into a series of unpleasant sensations.
Soft skills are what make other people good at working with us. In this way, when necessary, it is much easier to relieve tension and turn stress into a willingness to act. A team that has the right cross-section of professionals with an appropriate culture is the most effective and creative part of any company. Currently, from the perspective of my own, slightly different role, I attach great importance to this. Experience has shown many times that people less experienced, but willing to cooperate, open to learning, but also to mutual, constructive criticism, realized the tasks entrusted to them much faster in their teams, learning at the same pace. It is something that acts as a catalyst and it is always worth remembering. It is also worth spending a moment to reflect on how you organize your work so as not to fall into the trap of a day in which you constantly change the context, at the end of which the body only thinks about putting itself into the embrace of Morpheus, and in fact you come to the conclusion that you failed to do anything. “Clean Code Master” by Robert C. Martin or “15 secrets of time management” by Kevin Kruse are the perfect starting positions, which will provide you with the necessary basics in a light way.
So if you are attracted to new technologies, you like to learn and you are not scared of the thought that you will spend part of the evenings at the screen with a debugger, not Netflix, then I invite you. I don’t promise it will be easy, but it will certainly be interesting. And I’m sure that after a while you’ll look over your shoulder at your experience and say it was worth it.
The end?
Huh … I must admit that Leszek can talk about his adventures. Magnum opus of technical curiosities and useful tips.
In the next instalment of the “Our Beginnings” series, we will present the path to the programmer from the perspective of Paweł, Director, Software Development. Meanwhile, there is nothing else to say, but – get the keyboard and keep going!