So, you’ve done the hard part and won your dream job as a software engineer. What now?

The first day of a new job is hard for anybody. The first day of a new career is even harder. This year I joined the mobile team at Azimo as an Android software engineer intern, which later led to a full time job. In this article I’ll share my experience and some of the things I learned on the journey.

Joining an active project

It’s rare that your first job in software engineering will involve building a product from scratch. It’s much more likely that you will join an existing team working on an active project with a substantial codebase. Don’t worry if you struggle to familiarise yourself with the code to begin with, it takes time.

Thankfully, “technology entry level” is one of Azimo’s KPIs (Key Performance Indicators). In practice this means that onboarding must be simple enough for a new intern to get code into production within just one week. I was really pleased to manage the task, and grateful that the company had thought to make it possible for a newcomer.

For more information about the Azimo internship process, read these blog posts from Mirek Stanek Summer internships at Azimo, Kuba Kwiatek So you want to be a software engineer? — Part 2 and Oleksandr Masliukivskyi What to expect from an iOS internship.

Achieving goals

Personal growth is essential to making progress as a software engineer, but it doesn’t happen without good leadership. Goals agreed with the leader of my team helped me understand what I needed to achieve by the end of my internship:

Become the owner of one product feature

Finish three technical/maintenance tickets

Fix five or more bugs in the application

Know how to read the crash analytics tools

Understand the application delivery flow

Contribute actively to code reviews

Contribute actively to grooming and estimation sessions

Write this blogpost

These goals helped me understand not only what I needed to produce but the speed that I needed to work at. If I felt that I was moving too slowly, I could check my progress and measure my improvement over time.

Learning from your team

Good teammates have a huge impact on your early career. They choose which tasks you can do, arrange meetings with other departments and, most importantly, assess the quality of your work, helping you to learn and improve. A keen-eyed teammate will help you avoid repeating your mistakes, and show you how to look at your work from a different perspective.

At Azimo the friendly atmosphere helped me to adapt faster and feel part of the team. I never felt like I was working alone and, thanks to the guidance of other engineers, I was soon solving problems that seemed impossible just a few months before. My lesson here was not to be shy about asking for help.

Taking part in meetings

There is more to being a software engineer than writing code. If you haven’t worked in a real company before, you will probably be surprised by how long you spend in meetings. Here is a brief breakdown of the meetings that I attend every week at Azimo:

Standup.

During the daily standup, the whole team meets for a quick status update. As a new intern, I found these standups invaluable. They gave me greater insight into our product, the challenges the team faces and how individual team members like to work. Grooming session.

At grooming we discuss the details of the next sprint. Engineers have to determine whether the product manager’s requirements are sufficient and then assess the complexity/time required for a given task. In the early days I found helpful to watch and learn from more senior engineers, but later it became easier to take the initiative. Mobile guild.

During the mobile guild session, we review our work as a team during the prior week, from communication and workflow to the code itself. At the end of the meeting we try to draw conclusions about what to improve or change. These sessions helped me to solve problems every week that could otherwise have lingered for months. Mobile engineering meeting.

The goal of this meeting is to improve the architecture of a project. At the end of each meeting we create a list of improvements to implement. These meetings helped me to understand the level of quality that the Azimo engineering teams aim to maintain. One-to-one.

This is the most important meeting for me, it’s a chance to have an honest conversation with your manager about how things are going in all aspects of your work. I recommend preparing a full list of things that you want to discuss, and to be honest about what’s going well and what isn’t. A good manager will help you with both.

Skills that will make your start easier

By coding every day, you will pick up skills that simplify your work, especially when a more experienced team member shows you what is slowing you down 😎.

Debugging code:

You can’t be a software engineer without debugging code. It is an essential skill. Knowing how to use the debugger is also an advantage that will help you find your way in an unfamiliar project. With a debugger, you can check which methods are called, track values of variables and everything that is available in a specific scope, at the specific time of code execution. Using shortcuts:

Being able to use an Integrated Development Environment (IDE) is not enough. If you don’t learn shortcuts, you will lose velocity quickly. During my first weeks on the job, I learned a wide variety of shortcuts that massively increased the effectiveness of my work. I can’t imagine going back to my previous habits. Writing tests:

The ability to write good tests is a key skill for any engineer as all newly-implemented features must be tested. If you write good tests, you save yourself a lot of manual testing later, and you reduce the risk of regression issues. I can’t emphasise this enough — if you gain experience writing tests before you start a full-time job, you will have a significant advantage.

A few things to remember

Lastly, I want to share a short list of tips that I hope will help you in your first weeks on the job: