It's been about 3.5 months since I landed my first job as a software engineer with an awesome startup called Orbit and I've definitely learned a thing or two in this short time.
In fact, I started out wanting to jot down three simple things for this blog post, but as soon as I started, I just couldn't stop!
So, my friend, here are three (plus seven more) things I've learned after three months as a junior software engineer.
That's the job. Learning and solving problems, every single day. No matter what level you're at, there's always going to be a new and more complex problem to solve.
I recently took on a task where I had to find a solution to something and I'd ask my teammates for help, almost expecting a "here's how you do it," step by step kinda thing, but it was so interesting to experience putting our heads together to both work to figure it out. It's all thinking and solving a problem. And repeat day after day!
I had a week or so recently when I was really anxious for some unknown reason. I could tell that I wasn't on the right path with my thinking, and I even had these irrational fears of being fired. Seriously, for no rational reason.
I was doing good work, learning actionable things, and completing my tasks - but for some reason, my brain was having this bizarre negative field day (or week).
Looking back, the only way out was getting ahold of myself and my thoughts. Anytime I'd start to feel myself spiral, I'd reframe my mind to something concrete like "I'm capable of focusing on one thing at a time to get my work done and do my best today."
Doing this often sets me on a good path and allows me to focus on one actionable thing at a time without going into this unpleasant and irrational work doom spiral.
I think with any new job or opportunity, there's always the rose-colored period for the first three months where everything feels amazing and perfect and nothing can get you down.
I love my job, but now I have a more level-headed view of everything.
That's not to say you shouldn't be over-the-moon when you first start something! Embrace the honeymoon period but then also remember that it's okay to get out of the honeymoon and feel a little more settled and accepting of the good days that come with the "meh" days - as with absolutely anything in life!
As soon as we get more into the routine of a new job, we become less aware of just how much we're learning. To keep myself motivated and proud of myself for what I'm learning, I try to keep track of my learning by documenting new processes so that I can can refer back to them later or just feel proud when they start feeling more natural and second-nature to me.
I saw this advice in a Twitter thread a couple months ago when I was having a hard time not understanding a difficult topic and getting down on myself about it.
Learning and growth are great (so great!) but actively going through those growing pains is uncomfortable as hell.
The only way to improve and get to the other side is to stay the course and trust the process.
In any given moment of learning or growth, it may feel like it'll always be this hard, but it's only a matter of time before you're through it and a better developer than before.
6. Every hard issue that takes you hours is just time invested to get you through it in a fraction of the time in the future.
(I'm looking at you, local environment troubles and convoluted errors yet unbeknownst to StackOverflow!)
This goes back to documenting any process that feels confusing or difficult. Especially if a teammate helps you through something - take the time after the discussion to write it down and truly absorb and understand it.
I personally don't enjoy explaining something over and over again, so I try to never be the cause of a teammate feeling the need to do so for me.
I'm thinking specifically of recently learning about Rails decorators and services - subjects I had no clue about before (though I'd seen them around the codebase every now and then).
When I had a task where I had to use and code with them, it was the ideal moment to learn what their purposes were and how I could use them in the future.
Reading documentation, blog posts, and using other learning resources helps to get a broad overview of the big picture so that you're able to understand unfamiliar topics, little by little.
Recently I'd worked for a long time on a certain issue and I wanted nothing more than to push it over the finish line.
One of my teammates had some suggestions on ways to refactor the code and I literally almost did a "thanks, but no thanks" and pretended to understand it when I didn't.
Thankfully, I gave myself an order to fully understand the suggestions before making my next move. To do this, I wrote in my notebook exactly what my teammate was suggesting (this helps me fully conceptualize something that's not yet clear to me).
Surprise, surprise -- it was really helpful advice for cleaner code and a more organized architectural solution.
I've found that if I'm confused about how to frame a question I want to ask a teammate, chances are pretty good that I haven't done my true best to figure out the problem itself.
By making a serious effort to understand the question or problem you're trying to solve, I think it gives you such a good leg-up for ultimately finding the solution.
Plus! It's a great feeling when you eventually do ask a teammate for help as you discover that your instincts were actually pretty close to the answer you're given!
There you have 'em! Ten things I've learned after three months as a junior software engineer.
Thanks so much for reading! I wanna know what resonated most with you! Feel free to leave a comment below and let me know what you think!
P.S. I send weekly newsletters about the self-taught coding journey and inspiration for other early-career developers! Let's be friends! >>