What skills do you acquire while working in the software engineering industry? How do they differ from what you expect coming out of university? How can you boost your job performance as a software engineer? Pour some coffee, put on some relaxing music and join us for the fifth episode of Tech Talks where Elena Vučeljić shares valuable lessons and insights she learned working as an Advanced Software Engineer at Zühlke.
What do you need to know if you are studying Computer Science?
I had an idea of what working in this industry was going to be like upon graduation. When I landed my first job as a software engineer, the title was odd to me, because I expected one of a programmer or a developer. However, the title of an engineer is no accident, because the work isn’t only about programming. I had a different take on this during school, I thought that knowing a programming language would be sufficient.
In reality, it’s a prerequisite and a foundation upon which you work when it comes to commercial projects. I realized that my work is only a part of the bigger picture and that the challenge lies in understanding the project as a whole when it comes to realizing an idea into a product. This is something they don’t teach at the university, where the focus is on theory and assignments.
It would be quite useful to get acquainted with project dynamics during studies. I didn’t get any idea of what it will be like working in a team during university, and it’s all about teamwork when it comes to certain aspects of a project, there’s only so much you can do on your own. Another surprise for me when I started working is that version control is expected of you from the very start. This was an elective course during studies instead of a required one. I will also make a remark when it comes to automation testing. It was the first thing I had to learn while working on a project because it wasn’t a part of the curriculum.
Do you need anything else besides programming skills?
Soft skills were of most use to me when it comes to teamwork. It’s important knowing how to communicate and to ask for help as a new person on the team. This can be a major time saver and give you a deeper insight into the project. The sooner we are in command of these skills the sooner we become an independent member of the team.
The soft skills needed to give and receive feedback are something that can contribute to your drive when it comes to working. Other people can be objective and spot where you can improve much faster than you yourself can. All of this was new to me. I didn’t know how to communicate to someone they can improve or fix something without them taking it as an insult. On the other hand, I had to learn how not to take feedback too personally.
There are certain individuals that believe that coding is all it takes to make it in the business and that soft skills are just hogwash. This was not my experience. I felt that soft skills were one of the main aspects I had to focus on improving.
How to approach learning in the software industry?
Learning on the job is the most effective approach. You learn by doing while paying attention to how other people do it. It’s the least time- consuming option. However, that’s never enough. Depending on the company, there are education days you can take or an education budget for courses or books. Maybe the company itself can give you some time for this, the point of the matter is that you have to improve yourself outside the office as well.
Finding the time can be challenging, that’s why it is a good idea to make learning a constant thing in your life. Make it a point to regularly check up on things that interest you or that can perfect your skills. I know some people who develop their own small projects and that can be of tremendous use when it comes to learning about all aspects of a project yourself. Simply put, expanding your knowledge is something that has to be done outside the office hours.
It helps that the company has a list of workshops and courses you go through when you start working. These include feedback workshops, presentation skills and public speaking training among other things. It was of big help to be advised by my superiors or more experienced colleagues. I would point out that you don’t necessarily have to attend every workshop, you can google so many things nowadays. The Internet is the cure-all when it comes to so many problems. You can always find a video, a podcast or an article on a subject. All you have to do is search.
Should I be a "Jack of all trades" or a "Master of one"?
I had to learn so many different technologies because the projects I worked on required it. But I do think you should specialize in a certain technology you are working with, while also being acquainted with others - just don’t spread yourself too thin. I think you can’t specialize in other technologies as much as you can in your primary one. It’s the one you work with every day, the one you develop the most. There is a higher sense of security when you’ve absolutely mastered your expertise. I know some people in the company who like to experiment with programs and to perfect themselves just for the fun of it, not because they are obliged to do so. I do it as well.
What is the best process to learn new technologies?
My work consists mainly of mobile development in Java, and I find the Kotlin programming language interesting, so I’m learning about it in my spare time. Things I experiment with that may not be directly related to my work are loT and extended reality. I like to try things out to see whether I like them or not and whether to continue learning about them further.
My learning process starts with browsing through articles and checking out YouTube videos. If I really get interested in something, I find a well-reviewed course or gather people at work I can learn new things and experiment with. This might be of use to a project we are currently working on or even land us a new project.
Elena Vuceljic is an Advanced Software Engineer and has been at Zühlke since July 2018. She graduated as MSc in Computer Science. Her main area of expertise includes iOS, Java and Android. Her main focus is mobile development.