First 5 Months, as a Jr. Dev
Tags: beginners, webdev, tutorial, productivity
Published: 2022-11-17 01:52:03

## **Background**

In the spring of 2022, I graduated with my computer science degree. Through out my time in college I did not get any professional software engineering experience. 0 SWE internships, 0 Co-Ops, nothing. After graduation, the next most logical step for me was to start looking at internships/ jobs. I landed an internship which eventually turned into a full-time position. For me, the transition from Student -> Software Engineer, was a bit rough, especially coming in with 0 professional experience. I want to share somethings that I wish I knew before started my first job, as well as how it's been going the past 5 months.

## **Things I wish I knew before starting**

**Git/ Github**: Using git was one of the hardest things I had to learn when coming into the professional world. I did not get much team experience working on projects in school, that might not be the case for you. But I struggled a lot with understanding how to...

_Branching and Merging_: For the most part you will learn these concepts just by doing them. The main thing I will say is, if you don't have an internship, or have never worked with a team of people before, look into open source projects. Open source projects are a great way to step your foot into the "professional" world. In addition to this, I will attach a few resources down below that helped me out a ton.

_Creating PRs_: You will do this a lot, and I mean A LOT. Make sure that when you create a pull request, that it's easy to review. Someone who has never touched this piece of code previously, should be able to read what you are trying to do in your PR.

1. Add comments to explain findings, or ask questions
2. Make sure the description explains what you are trying to do.
3. Don't spam commit. Make your commits tell a story. It makes reviewing the PR a lot easier.

_Reviewing PRs_: When reviewing PRs, there are a few things that I started doing. If I don't understand something at all, I would leave questions (don't be embarrassed about asking stupid questions). Checkout the branch, and run the code yourself. Run tests. If you see something odd, point it out (ex: commented out code, random debuggers, etc). 

You won't learn or understand a lot of git commands, unless you do them. Sure, it's important to read about them, and understand what they do, but make sure you practice and use them. Here are a few things I used to make my learning experience easier.
 
- Did you mess something up, and want a quick fix? https://ohshitgit.com/
- Struggling with understanding branching? https://learngitbranching.js.org
- If you can't use the command line, find a GUI that you enjoy, and use that. Here are a couple good ones.
  - GitHub Desktop https://desktop.github.com/
  - Built in VsCode GUI https://code.visualstudio.com/
- Make a sandbox project, make branches, mess something up, try to fix it.




**Testing**: Testing is something that isn't talked a lot about in most computer science programs, but is almost always present in the professional world. Code without tests, is trash. Your tests should fail, if your code doesn't work correctly. Make sure to keep that in mind when writing them. In one of my first tests, I had to assert a DOM element existed. I used a class, that another DOM element also had, so even if my element wasn't present, the test would pass. This is bad. Tests were not on my priority list when I first started, but are definitely something I look to add now. 

**Communication**: If you are ever stuck, or don't even know where to start with a problem/ task. Ask. Everyone knows that you are new. Nobody expects you to know everything. Ask for help. A lot of people take this a bit too far though. I wouldn't want to be spammed questions every second. Try to figure it out on your own first. Chances are, the first task you are given might be fairly simple. Look at your organizations GitHub, and find similar PRs of someone else doing the same task. Try to do it on your own, before reaching out. When you reach out, explain what you have tried, and where you currently are with this problem. Overall, just be descriptive about your findings. 

**It's okay to not know**: Every person at one point did not know. But as you progress, and experience different problems, solutions, tasks, you will start to pick things up quick. The first time you do something is very challenging, but the more you experience it, the easier it gets. Coming in, you might be thinking about learning everything, but it's okay to not know. Focus on specific things that interest you, and learn about them. You don't have to learn about every single thing.

**Conclusion**
I have only been working for about 5 months now, and I can proudly say that I have learned so much, and am excited to keep expanding my knowledge. There are certain things that I still need to improve upon, such as communication, but I'm actively setting goals for myself. Being a software engineer is fun, and a lot different than what I expected, but I'm happy to be here, and super excited for the future. I really hope this helps someone who also recently started, and is in a similar boat as me.