Advice to My Past Self (First Year as a Software Engineer)
Tags: beginners, career, codenewbie, motivation
Published: 2020-07-14 15:19:40

I just finished my first year as a software engineer. In this time I have worked with 9 different technologies and about 5 different products. I have enjoyed my first year, and I thought it would be good idea to do a retrospective on my experience so far. Read this for fun, or take it as advice if you are just getting into the field!

### Ask questions ❓

I don't think there has been a time that I have gotten through a conversation with another coworker without asking a question. It's important to ask questions. Not only technical questions, but also ask questions about the business. Understand how the process works not only on paper, but in reality among team members. Also, ask questions about their day! It never hurts to be friendly to your team members and build relationships with them😉 Of course, ask questions in moderation and always try to find the answer on your own first.

People won't give you help unless you ask for it, and the best way to do that is by asking questions about items that you don't understand yet. How else do you expect to learn about the system?

### Find a project to prove yourself (if you want) 🥇

If you want to move up the ranks and get promoted, then you will likely need to find a feature that will add a lot of value to the company, but is also in your skillset. This project is your springboard for getting more complex work and people trusting you with the work that you output. The tricky part is here is finding something that you can accomplish within reason, but also is large enough to help the company in a significant way.

### Document Everything ✍🏻

When you are writing a new large feature, or maybe changing how an old one works, document this! Throw it in the ReadMe (if there is one) or create one. This helps others that had the same questions you did and now they have an *amazing* document to look at to help them. ReadMes were not heavily used at my company, but I started creating them anyways. Now, when people start on projects they know what resources they will need and can look over the document for some basic questions! It helps to get knowledge documented and not just living in people's heads.

*Side Note*: This is helpful for when someone has questions on a feature that you have worked on in the past. Now you have a reference for what you did 6 months ago! 

### Find hobbies ⚽ 📷

Find hobbies. More importantly, find hobbies that aren't programming. Everyone needs to have a life outside of work, it's important to your overall happiness. Try finding a creative and physical outlet like running and photography, painting and weight lifting, etc. Anything that helps get your mind off of work and software. Otherwise, you'll be burnt out in no time. 

### Ask for help and be open about your understanding 🙋🏼‍♂️

Earlier, we talked about asking for help. When you receive help or maybe someone is asking you a question, be open about your understanding. Unless there is an enormous gap of your understanding and what people expect you to know, people are usually willing to help. You don't need to know all of the system when someone from product asks a question, or understand a piece of code as soon as another engineer explains it to you. If you give the impression that you understand when you don't, it will become a problem later. 

### Make goals 📅 📈

*Make goals. Make goals. Make goals.* What do you want out of your career and in life? By writing these down, you know what you are actively working towards. On top of this, make *specific* goals. I am a big fan of the SMART (Specific, Measurable, Attainable, Relevant, Timely) goal setting strategy. Maybe start with the long term goals, and create your short term goals and stepping stones for those. Maybe you don't know what you want long term, so make short term goals for now! By measuring your goal progress, you have an accurate view of what you are accomplishing in your career. 

If you don't create goals and actively improve, you will learn slower, advance slower, and miss out on your goals. Also, by creating these goals, it makes it easy to talk about what you have accomplished in your yearly review with your manager. 

### Always be eager to learn 🤔

You probably got into software because you wanted to learn something. Maybe it was a minecraft mod or creating an app. Either way you learned how to accomplish these things. As a software engineer, it is important to never stop learning. How you learn it is up to you: side projects, videos, reading but always keep learning! Being eager to learn will help you grow as a software engineer and as a person by continually exposing you to new philosophies and ideas. 

Stick to these principles, and you'll keep growing as a software engineer and as a person. 

Signed,

Your future self