Photo by Clark Tibbs on Unsplash
One Year as a Software Engineer at Microsoft
Lessons Learned
A wise woman once said and I quote: Time flies when you are having fun. That is my reality . I cannot believe that today makes it one year of working full-time as a Software Engineer.
This is my first full-time role post undergraduate studies and I have learned a lot.
I write this, to share my learnings as I reflect on my journey so far. I hope it helps the people just starting in Software Engineering or are Early in their Careers like I am. If only one person becomes better because of this article, then my job here is done.
1. Focus on problem-solving
This is my first point for the right reasons. I believe that as Software Engineers, our job is to solve problems with 1s and 0s in effective ways. I have noticed that people usually ask about what technologies are worth learning to land a good Software Engineering role or to become a better Software Engineer. I have noticed that new problems will always come up. A problem that doesn't exist today, will exist in two years and it is important to be adaptable. The technology or stack that you choose to focus on today, might become a new thing tomorrow.
Instead of spending a lot of time worrying about the technology stack to focus on, choose a stack you are comfortable in, get your fundamentals right and focus on solving problems using the tools that you have been armed with. If a new problem arises, that requires a new stack, you would easily adapt because you spent time on your fundamentals and you have gotten better in the art and science of problem-solving.
2. Communication is key - get better at it
There is more to Software Engineering than writing code. Several times during your career as a Software Engineer, you'd be working with several partners to bring a product to life. This could be Product Managers, your immediate teammates, Designers, Data Scientists, Engineers in other teams, and so on. And you have to communicate with all of them most effectively. For some new features or code changes you make, you'd have to write documentation to communicate those changes with the people that work with you. You'd have to write code that is clear and easy to understand and sometimes you need to make that tradeoff between over-optimized (or smart) code and clear (or easy-to-understand) code.
3. Embrace and Learn from Failures
A wise person once said and I quote: It is okay to make a new mistake but it is unhealthy to make the same mistake twice.
Everyone has failed at something at some point. Embrace the possibility that you will not always get things right. I have made some implementation mistakes in certain features I have worked on which tried to lower my confidence. However, when situations like that come up, it is important to have a growth mindset. Ask yourself what went wrong and what you can do to prevent that from happening in the future. That is how you grow to become a better Engineer.
While it is important to embrace failures, it is also important that you learn from them and take responsibility.
4. A Bad Bug, not a Bad Life
I think some of us can relate to that one bug that is frustrating. I have encountered it at certain times and it is easy to let it affect your mood especially when you have a deadline to meet. One tip I will share is that you should leverage the knowledge of others when you encounter situations like this. It could be Coworkers, Blogs, StackOverflow, Documentation, etc. Have the courage to ask for help. Trust me, there are answers, you just need to learn to ask.
5. No 'stupid' Question
I know people say this a lot but I need to repeat it because it is something I struggled with at some point. Train your mind to not believe in stupid questions. It is okay to not know and ask for help. This does not mean that you should ask questions without doing your research first. However, if after doing your research, you still need help, then ask. See it as doing your future self a favor by becoming more knowledgeable. If you never ask, you'd never know.
6. Give Back
Give back. I am a product of the generosity of the people that have shared their expertise with me through blog posts, video tutorials, lectures, mentorships, scholarships, and so on. When you can, please give back. It might seem small or insignificant, but your simple act of generosity can change the lives of people for the better.
Going forward?
For me, the goal remains the same: Becoming world-class in my craft and making a positive impact in people's lives by leveraging technology. I am just getting started and I look forward to everything the future has to offer.
Always Day 1