What rules should every junior engineer follow, and what are the most common career mistakes that should be avoided? There is a tremendous amount of information on these issues, but the best advice always comes from the experts in the industry. We spoke to Bulent Karaahmed, VP of Engineering at Resolute Software, to learn more. Bulent developed his first programs more than 30 years ago, taught at the faculty of mathematics and informatics of Sofia University and is now a mentor of the junior developers at Resolute Software.
Keep on reading to find out what Bulent told us about his career path and what his most valuable career advice are.
Let's start with your junior period - could you tell us what your first steps in software development were?
I wrote my first programs more than 30 years ago, but I have been programming professionally for exactly 25 years. The things I encountered as a beginner so many years ago would sound very strange and even unrealistic for the current generation of developers. The first time I used a computer was back in the 80s. My friend’s father brought a Pravetz 8D. I was extremely excited, even though there was no monitor, so the only thing we could do with it was to “read” information from a tape recorder. Of course - we managed to ruin many things, and the computer was quickly taken away from us.
In the ’90s, I started writing simple Basic and Logo programs. These were my first steps, and then I realized that it was necessary to find someone who could teach me instead of trying to do everything independently. However, it was challenging to find a mentor back then, and there was another big problem - the lack of information. Our primary source of information at that time was translated Russian literature. Stack Overflow didn’t exist. Everything we wanted to achieve, we did ourselves. We were happy and excited to find a snippet that worked. Later, Microsoft’s MSDN magazine was published. It was very useful, and we were able to find various tricks in Windows programming.
In the beginning, while I was still a student, I started working as a web developer. Later, I continued with Windows programming, C ++, mobile development, Machine Learning, .net, and others. I have never stopped learning and developing my skills and expertise in all these years. It is crucial for me to maintain a certain level, and to do that, I don’t stop making efforts every day.
What were the things you changed with time and experience? What are the mistakes you recognized and no longer make?
When I was still a junior in the early years, I loved to brag about all the small details I could remember, and I was very proud of the knowledge and expertise I had back then. Later, however, I realized that it was all unnecessary.
Web developers are unique kinds of people. We are rational thinkers, we consider everything through strict mathematical frameworks, but sometimes we forget about the so-called soft skills. The truth is that these skills contribute to success both professionally and personally. The second mistake I think I made at the beginning of my career was ignoring these skills.
Another mistake I used to make before, but I try not to do now, is to enjoy the quick success and results. I used to do it very often. I quickly achieved something that made me happy and boosted my self-confidence, but the short work and quick successes do not last over time because they are often not well thought out. Because of this, I had to go back and revise more than once. Of course, one must beware of the other extreme, which is over-analysis, because this, on the other hand, can stop you from going forward. After all, it is essential to be able to find a balance between these two.
Given your rich experience - what advice would you give to junior developers?
The most important piece of advice I can give is that knowledge without application is dead knowledge. Just because you’ve seen how something is done doesn’t mean you understand it if you haven’t done it yourself at least once. My next piece of advice would be to build a solid foundation of fundamental knowledge. Technologies are constantly evolving, but critical thinking and accumulated fundamental knowledge are key. It is essential to master the principles of algorithms, structural data, semantics, and syntax of programming languages. Once you understand the foundations on which the entire IT industry is built, everything becomes easier.
Another thing that is important for every beginner is to be able to find the information they need. It is unnecessary, and it’s also impossible to know everything in detail because everything could be found in the documentation; they need to know where to look for it. Technologies need to be known, but the focus needs to be on how and what problems certain technologies can solve. In this regard, it is good to know a lot of different technologies, because through that one can make better decisions and solve more problems. Narrow specialization in a particular technology can turn a person into a professional, but it is essential to understand the bigger picture.
What rules do you follow now when you mentor junior developers, and what is the approach at Resolute Software?
I am a huge supporter of the individual approach to people because everyone is different. However, there are some universal methods that I have applied over the years that work equally for everyone. For example, every developer should be satisfied with the achieved results. That is why I am trying to create a motivating environment in which they feel that they have reached the final decision on their own. In addition, I try to set little milestones that meet their capabilities at a specific moment without rushing them. Therefore, the tasks I give them get a bit complicated over time.
“At some point, sooner or later, everyone reaches a level that allows them to become relatively independent. My goal is to find the most direct path to this independence.”
The unique thing about Resolute Software is that we provide junior developers with an environment where they can work without the fear of making a mistake. During my junior years, I used to be in an environment where I was afraid of making mistakes because my mentors were much more authoritarian.At Resolute Software, everyone can freely make suggestions without worrying about whether they are right or not because here, we don’t want to have the so-called “Code-monkey” developers. We want people to be stimulated, to create, be satisfied, and have personal motivation. The attitude to any problem should be “I can do it,”; so, we know that a person has this inner energy and desire to achieve what they are looking for.
At Resolute Software, we are all down to earth, and we know that there are no experts who know and can do everything. Each of our specialists knows how far their abilities go and how one can complement another in this sea of knowledge.
What brings you the most satisfaction when you pass on your knowledge to someone?
I started teaching very early. From the very beginning, after entering the university, I started training students, both Bulgarians and foreigners. For many years I was also an assistant at the faculty of mathematics and informatics of Sofia University. I realized that giving knowledge means being filled with happiness that you have helped someone.
It gives me great satisfaction to see that I have contributed to someone’s success. To know that they succeed and to know that I have contributed to this progress and development is very meaningful to me. I never passed on knowledge expecting to receive anything. I like and enjoy seeing a specialist obtaining the right set of skills - both technical and personal.
Currently, there are thousands of online courses and opportunities to the extent that it is already difficult to know which are the best. How to choose the correct course or training and what is essential to look for in the process?
I think this is a very serious problem because it is challenging to choose the right source of reliable information and knowledge. Therefore, the most important advice here would always be to check the accuracy of the resources.
When analyzing a source of knowledge, be it a video course or a book, the information transmitted from this source must be consistent with the learner’s current level.
“Every experienced mentor is aware that they can convey to the other party only as much as they can comprehend. Therefore, an individual approach is needed, and each person must know how far their knowledge goes at the given moment.”
You should never be fooled by fashion and trends. The fact that there is a very famous course, and 10 million people have watched it, does not mean that it is universally suitable for everyone. A person needs to assess whether a course corresponds to their individual level of knowledge and expertise. Only this way can they receive and derive as many benefits and skills as possible.
The truth is that the market craves developers, and various courses and academies generate a lot of information. Unfortunately, however, they hang in the air because they rarely offer fundamental knowledge and skills in this area. You cannot become a developer in 6 months. In a year, you can learn to write code the most, but this can only happen if there is a person next to you to monitor what you do.
And finally, can we summarize everything in five essential tips?
Of course. Here they are:
1. A solid foundation of knowledge and skills is key in order to thrive and develop further as a professional.
2. Never stop learning and applying what you have learned.
3. Do not always rely on external help. First approach the problem on your own, analyze it and try to come to a solution.
4. Whatever you do, do it with passion and desire, not just because it is trendy in the market.
5. Find an experienced mentor and follow their advice. We at Resolute Software, for example, can offer great mentors and a motivating environment.