Zühlke – Empowering Ideas

People and Culture

5 tips for mapping out your career in software engineering

mmil

Welcome to the Hüb – a place where our experts frankly share their opinions, ideas, expertise and knowledge about the industry, its future and important trends.

5 minutes to read

How do you become a good software engineer? What skill set is sought after in the industry? How can you efficiently keep up with the latest developments?

Pour some coffee, put on some relaxing music, and join us for the sixth episode of The Hüb where Dr Milan Milanović shares the valuable experience he obtained while working as Lead Software Architect at Zühlke.

What should newcomers pay attention to?

A lot of companies still prefer programmers that have specialized in one area (specialists), because they know their tech stack very well. But specialists can have a limited skill set for analysing problems outside their field. A T-shaped engineer who knows one area thoroughly but also is knowledgeable in other areas as well is a much better option for a team. It is useful for an engineer to have a multiple set of skills to be able to help out in different parts of a project.

I believe newcomers need a solid grasp of fundamentals, whether they learn it from books or from working with colleagues on a project. Problem solving through the processes in a project can make the latter more effective. My advice is to code as much as you can, especially with other teammates during a project (pair programming), but also to read other people's code and do code reviews. In this way you will obtain a skill set that is sought after in the industry. Furthermore, it’s important to learn how to work in a team and collaborate with others. This is often even more important than technical skills.

How valuable is it to keep up with industry trends?

I belong to a group of programmers for whom coding is a job as well as a hobby. I love writing code, so I do it whenever I get the chance. I’m also an avid reader of books and articles in the field. Besides writing code, I take time to read other people’s code, especially online as there are many open-source projects. You can always find something new to learn.

If you do this, you gain a broader perspective on your field of work, but it might also help you out with your future projects. For example, I am using some language novelties in an application we are working on. I did not need to do that at the time, but I believe these novelties will boost my future efficiency in writing more structured code.

Speaking about industry trends, every avid software engineer or architect should take time to read various kinds of technical books and articles online from reliable sources, such as InfoQ, DZone, ThoughtWorks Technology Radar, etc., but also to use any internal knowledge exchange platforms available (such as Yammer).

What are the essential skills of a software architect?

Software architecture entails a different set of responsibilities from those of a software engineer. An architect needs to have broad and deep technical knowledge, preferably in different technology stacks. Most important is a knowledge of architectural foundations, different architectural styles, diagramming, etc. One of the most important skills for a software architect is good communication skills, as they need to talk with a variety of stakeholders, customers and developers. Last but not least, an architect needs to have good leadership and analytical skills. In the role of team leader, an architect should be able to lead a team of diverse personalities and specialities. Regarding analytical skills, they must know how to clearly identify stakeholders in the project, understand the requirements, how to design the system, how to select the right architectural style and technological stack, and of course, how to document it.

To become an architect, it’s definitely important to know and understand one or more technological stacks. On the other hand an architect needs to read a lot of articles and books, preferably recommended by other architects. An architect can also enrol in various courses on the topic and gain certifications (TOGAF, Open CA or an architectural certification from one of the major cloud providers).

It is also essential that an architect knows what is possible to implement at the code level. This is the basis that can be further compartmentalized into different architecture fields such as solution architecture, software architecture, etc. What is common for architects is that they can all agree on one thing - there are no ideal solutions, only trade-offs.

How do you take your career to the next level?

If a company has defined specific job requirements for each role and an internal career track, you can stay with that company for a long time, move up the ladder, and gain the experience they are looking for. Moving into more senior positions requires more people skills, working with junior developers and coaching them. After some years on the job, there are several directions you can choose. For example, some people choose to go into management, where project management is quite a popular option. Others, however, might prefer to follow a technical career path. There are companies that have predefined recommendations for selecting a desired career path in advance, so moving into one also means moving out of a comfort zone and provides an opportunity for improvement.

Since each individual has the greatest influence on their own career, you should find a company that will support you in your career choices and allow you to grow in the desired direction.

Milan Milanovic
Contact person for Serbia

Milan Milanović

Lead Software Architect

Dr Milan Milanović has been working at Zühlke since October 2017. He has over 15 years of experience in the software industry, working in different domains and several tech stacks, including web tier technologies, .NET and Java platforms, mobile and distributed computing technologies. He holds a PhD in Computer Science and is a Microsoft Certified Developer and ScrumMaster. He is the author of numerous scientific publications in various fields of computer science, for which he has received several (international) awards. His main areas of interest include software architecture, cloud computing solutions, web and mobile solutions, agile methodology and managing software teams to deliver innovative and high-quality products.

Contact