My first year as a software engineer

One year ago, I started as a junior developer at viesure. It was an exciting and intense time for me. In this blog post, I want to share my experiences, challenges, and achievements in my very first year. From my application all the way to what’s coming next for me. Let’s start at the beginning.

The application

I was just about to successfully finish my first year at university when I applied for the position as a junior developer at viesure. At that point, I had a basic knowledge of java and the principles of OOP. I wrote some small programs at university and got some architecture concepts taught.

The job post was forwarded to me by one of my university colleagues and since I could identify myself with the job advertisement of what viesure was looking for, I decided to apply. The hiring process was quite fast and uncomplicated. After sending an application letter and my CV, I got an invite for an interview, and due to quick responses and good communication, it only took around a week from my application to the job offer.

The first day

I arrived at the office and was introduced to all my new colleagues. After a warm welcome, my desk was shown to me with all the equipment waiting to be unwrapped. Most of the time, on that day, I spent with setting everything up. That means unpacking, doing cable management and downloading and installing all the required software. This more or less consumed the entire first day. On the second day, it was time to tackle my first task, taking a dive into the unit and integration tests to remove potential code-smells and to increase the test coverage to fulfill internally set quality requirements. This was a great way to get familiar with the code and the project structure.

Well tested code has to be well written since otherwise, it becomes quite tricky to test in a meaningful and useful way. For me, this raised awareness when writing code to always think about its testability. Since I was part of a scrum team now, there was a to-do section on the board of the current sprint where I had to pick my next task. Until I got enough confidence and started to get a feeling for the complexity of tasks, more experienced colleagues helped me to pick a task fitting to my knowledge and skillset. When starting to pick tasks by yourself, there are different aspects to consider, in my opinion. Important for me was that I completely understood the issue and had a doable approach to solve it. Furthermore, I made sure that the task is finishable for me in the remaining time of the sprint, and the third aspect was the time my colleagues were able to spend for supporting me if I got stuck.

My first pull request

I can still remember how scary opening my first pull request was for me. The moment of truth, now everyone can see what I produced, and this code will be part of the running application. The changes were small and pretty straight forward, but still, I was afraid what the others would say and if I completely screwed up. My scare was unnecessary, I got a few comments regarding code style as well as some hints and tips for my next tasks plus a well done. When getting feedback on your work, it is essential not to take it personally, but instead, keep in mind that it was meant to help you to improve. Once my code was merged, it felt just great, and I could not wait to tackle the next task.

At viesure, a lot of effort is put into code reviewing and giving feedback. This was a great advantage for me to improve by making use of the input on the one hand and on the other hand by reviewing code of others as well as asking questions about their implementations. The most crucial resource of knowledge are my colleagues and the code written by them.

Learning

There is a lot to learn as a software engineer, therefore my learning curve in the first year was significant. Being able to achieve that, you need to get supported. I got this support in form of courses, the possibility of certifications, giving small talks in front of my colleagues and the help I got from everyone in general. During my first year, I managed to finish the AWS Cloud Practitioner and the OCA Java 8 certification and held over ten talks about topics like Clean Code, Principles of OOP, Infrastructure as Code, and many more. I reeived great inputs and lots of feedback for these talks.

My next year

Now, a year later, things are still challenging for me and there are plenty of things left I need to learn. But I improved a lot. During that year, the learning curve was incredible, and I look forward to all the challenges which are still ahead of me. I am planning to take the Spring Professional Certification and to host a workshop for my colleagues.

Summary

In the beginning, even as I thought I know a lot already, there was a quick fall down back to earth – after checking out one of the projects and having a first look on the code. Everything looked different from what I knew, I saw annotations I have never heard of, and even if it was “just” a micro-service, compared to what I was used to, it was big for me. After that first overwhelmed impression, it was surprisingly easy to get used to it with all the help my collegues provided me with.

There have been a lot of challenges and learnings. It was a tough year, but in my opinion totally worth the effort. I am integrated in a great team that supports me whenever I get stuck. Thankfully they never get tired of my questions and are always willing to explain things to me. To me, the most overwhelming experience in that year was handling my first pull request. It showed me that, even as a junior developer, I am already responsible for writing code that will be part of the service we are providing our customers with. So I am also responsible for creating a positive experience for our customers and ultimately enable them to enjoy using our service.

After my first year at viesure, I am really looking forward to the upcoming years and all the progress I am going to make developing my skillset.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.