Introduction
I have hit the 6 month mark working as a Software Engineer, and it has been a massive learning experience to say the least. The transition from being a student studying computer science to a fullstack developer a tech company has been filled with challenges and imposter syndrome, but in the end, it has been incredibly interesting and I have learned a ton from senior and lead software engineers. I am grateful for having such an amazing team, and a great work life balance, but there are things that I wish I have known sooner.
You Will Always Be Learning
I have had the privilege to have a ton of internships and research under my belt during undergraduate career, spanning throughout different disciplines in computer science. From internships revolving around Machine Learning, to embedded systems, full-stack development, automation, cybersecurity, and QA, I have done it all in such a short period of time. I have pushed past challenging problems, complex algorithms that scrambled my mind in ways that left me stuck and hating my life (as most cs majors do!), and I would be lying if I said I wasn't eager to finally relax in my full time position as a full-stack developer.
"Being a full-stack developer should be a lot easier than my time in university," I remarked, remembering the amount of tasks I had to grind out.
But I was woefully mistaken.
Don't get me wrong, for the most part, my work life balance has dramatically increased, as I no longer have to work late trying to get assignments in, however, it was insane just how much information I've had to ingest in such a short amount of time. Six months later, I'm still feeling like I've only covered about 30% of all the features that are offered on my team. There is always legacy code that people will have to deal with, but as long as you have an open mind, and stick to your fundamentals, you should be fine.
It's Okay to Ask For Help
It's always daunting to ask for help from senior and lead engineers. There's this need to always know everything and to figure it out yourself, but you shouldn't be afraid to ask questions, especially when it comes to legacy code. As long as you aren't wasting time, and you have ensured that you spent a substantial amount of time trying to figure out an issue by yourself, leveraging experienced devs will help you grow as a better and more competent dev.
Software Engineering Requires Really Good Communication Skills
There's a stereotype that software engineers are introverted and don't like to talk to people. This is not true. In fact, I would argue that software engineers need to have really good communication skills.
Being able to narrow down Product Managers' loose requirements especially requires a ton of communication skills and a need for clarification. You need to be able to communicate your ideas and thoughts effectively, and be able to explain complex technical concepts to non-technical people. This is a skill that I am still working on, but I have seen a lot of improvement in my communication skills in the past 6 months.
Conclusion
I have learned a lot in the past 6 months, and I am excited to see what the future holds. I am grateful for the opportunity to work with such an amazing team, and I am excited to see what the future holds. I hope that my experiences can help other new software engineers who are just starting out in their careers.