An Agile Approach to Learning
Lessons from my first 2 months as a Software Engineer at my first job
The end of September marks my first 2 months as a Software Engineer at my first job. As I write this post, I've been reflecting on moments that have led to this point...from private study to my first few weeks on the job. So far, I've realized that working in a team is very different from working on your own. There are lots of adjustments to be made, and I've learned to adapt during this period.
Some of the lessons learned are listed below:
Communication is very important
This was the very first lesson I learned. When starting a new job, or joining a new team, effective communication is very vital. You have to understand that the consequences of your actions-- or inactions--can affect your team and the project in general. This is why any issues you're facing that's preventing you from completing the tasks assigned to you has to be immediately communicated to your supervisor.
Your teammates are there to help you.
Prior to joining my current company team, I was used to working on my own and figuring out how to solve issues/bugs as they occur. When I joined the team, I realized that I had to ask for help a lot more, which I wasn't used to before. I've come to understand the benefits of doing this. First, it gets you solutions to issues as fast as possible, with the added benefits of getting answers to follow up questions you might have. Also, it accelerates your growth. I was able to learn a lot more from my teammates than I was when learning on my own, and in a shorter time as well.
If this is your first job as a junior software engineer, you would most likely be working with people that are more experienced than you. Leverage on that. Ask questions until you gain clarity. It's okay to do so.
It's okay if you're not immediately productive at the beginning.
When I first joined the team, I was introduced to a plethora of technologies and software engineering practices that I wasn't used to. From agile methodology to branch based collaboration, submitting pull requests and the resulting code reviews, and also libraries and standard practices that I wasn't used to. I struggled at the beginning, and there were times I couldn't meet up with deadlines because I was trying to balance understanding the codebase & general workflow, and also completing the tasks I was assigned to do. Luckily for me, my team lead was understanding and provided me with the necessary documentation and learning resources I needed to be productive and get the job done.
If this is your first job, don't put pressure on yourself to be immediately productive when you join the team. Understand that it takes some time to get used to the codebase and general workflow. Also, this brings me back to my first point: communication. Always let your supervisor and team know when you need help with anything that prevents you from being productive or getting the job done. Projects have timelines attached to them, and doing this would ensure that your work aligns with the timeline.
Take care of yourself.
Software Engineering is tasking, and it's very easy to get caught up with getting tasks done and meeting up with deadlines, so much that you forget to take care of yourself. Your physical and mental health is very important, and taking care of yourself should be a priority to you. Take breaks when you need to do so, and always reach out to your supervisor/team lead whenever you feel overwhelmed.
Building products is fun and rewarding as well. You get to contribute to providing solutions to real-life problems. All the private study, tutorials, and personal projects have led up to this moment, so don't forget to enjoy the journey as well. I've learned a lot during this period, and I look forward to learning more as I progress. Here's to many more awesome days ahead!