I started my first programming job at the start of October in 2019.
Junior Full-Stack Developer is my title, and here’s a list of what I’ve learned since then and some other random bits and pieces I’ve learned.
A bit of context
- The company I work for is a relatively small Fintech startup (~18 employees total)
- We use Vue, Node.js (Koa) and MongoDB, so it’s full-stack JS.
- We’re a team of 4 devs: Tech Lead, Senior, Mid Level & Junior (me)
- 3 of us are self-taught, everyone went to University except me
What an average day is like
8:20: Arrive at work, set up my laptop, get a drink, open Github and just catch up with slack, etc. Open up Google calendar and see what’s going on for the day, just generally settle in.
10 - 12: Most meetings happen in these hours, team meetings often happen around 10 and daily standup is at 12. They’re mostly like 30 minutes of just talking about what we’ve been doing, dev team meetings are mostly looking at the Github milestones and reviewing how we’ve been doing, standups are basically reviewing the work we’ve been doing recently and discussing what’s happening today, just catching up with each other and staying on track in general.
12:30: Gym time wooo 💪. I replace my lunch with this, which is why I arrive a bit earlier than the typical 9-5. A surprisingly good way to break up working all day. They’re nice enough to not track my hours and be strict about how long I spend.
5:15: Between lunch and the end of the day there might be a meeting, but usually after lunch, I just quietly code away until I leave. On some days we have little birthday parties and small things like that to make work seem less work-like I suppose, these usually happen around 4:30-5.
Code Expectation vs Reality
- When I accepted the offer I had never used Vue before, so I had to get up to speed with using Vue instead of React before I could even do anything. I expected to be pretty useless and struggle with it quite a lot.
- I expected working in a team would be hard, I had no idea how they would manage Git and I had limited experience interacting with others using Git. I knew the fundamentals but obviously, I had never worked on a team before.
- I expected things to be very strict and limited, tests, comments.
- I thought my ideas and things I knew wouldn’t be needed or wanted (e.g in meetings I should just do whatever the senior says to do because I’m the junior)
- Vue isn’t that different from React, I was able to transfer a lot of knowledge. I’m still not as comfortable with Vue as I was with React even now though, but I’m getting there. (The senior dev is very active in the Vue Land discord chat helping people - so being able to ask questions and get in-depth answers directly related to work makes life a lot easier.)
- Working in a team isn’t as difficult as I expected. I make a branch and push my changes, making a PR for review when I’m done. The most confusing thing I’ve had to do is branch off a few times and merge conflicts. I keep it very simple 🤠.
- There’s linting enforced, some stuff is tested (but not a lot!) and comments are a luxury. Most code is not commented, which is not too bad if it’s descriptive, but some confusing things that are hidden away are quite exactly that, hidden away. Reality is far from what they show you.
- The dev team was kind of unhappy that I didn’t give my opinions more often and brought it up in one of my reviews early on, saying I had good ideas but didn’t tend to let people know about them. As time has gone on I’ve been putting my ideas out there more and the other devs seem to agree with me, so in general, everyone seems happy to share ideas, there’s no longer a “but you’re a junior!” feeling and my ideas are welcomed.
Work Expectation vs Reality
- I honestly had no idea what to expect, I had no clue about any finance stuff at all, I expected to be totally overwhelmed with finance words I didn’t understand.
- I imagined that the typical 9 to 5 work hours would leave me with a lot of free time after work and that I’d spent at least 7 of those actually writing code.
- I expected to be bad at soft skills, for sure.
- I’m way less intelligent than everyone else, they all went to uni and I’m a dropout.
- The financial side of the business is mostly handled by other people, there is a lot of things people say I still don’t get…But I don’t really have to when I need to understand them, I just ask a few questions and get a general idea of how it works, combined with a bit of googling on the subject if needed.
- Most of my time is spent not writing code, like 50% at best. 10-20% is taken up just by meetings or just talking to people. The rest is reading code, code reviews or being on a break. I also have almost no free time, by the time I get home and get all my daily required things done I just want to go to sleep. I was entirely not used to this compared to my previous habits of writing code for 14 hours a day.
- I am bad at soft skills. I can’t bring myself to talk to people for no reason at all. We’re separated on 2 floors - I rarely see people on the other floor & I leave the office at lunch so the only real way to talk to them is to relocate myself to the other floor.
- Pretty much true. I have a lot less random school-related knowledge. I am just uneducated outside of what I’ve taught myself.
TL;DR: My expectations vs reality of starting my first job has been that things are a lot easier and way more relaxed than I expected. I am indeed just a bit of an awkward developer that wants to write code and not chat about random stuff in the kitchen. 🤷
Tips and stuff I found important
Obviously working with a team Git will be the most important thing to understand teamwork wise, I feel if you can do all the basics (clone, push, pull, merge, make a PR, etc) you’ll be fine.
We do things slightly differently to what I expected here, we make a branch and push to it and then merge it after review. (using Github labels to figure out what’s going on).
Getting the right balance of how many questions you ask is important, if you ask too few you’ll get stuck on small things too often, if you ask too many you’ll be wasting a lot of time.
It’s hard to say what the right amount is, but if you ask the right types of questions it doesn’t matter how many you ask.
If you can google it (e.g the question is a generic question about JS) then google it. If you feel like asking in person just to discuss it a bit, you can.
If the question is codebase specific then just ask it.
If you’re stuck for over like 30-40 minutes just staring at the screen wondering why something won’t work, ask for help. Sometimes all it takes is someone to look at the same thing and they’ll spot something you didn’t right away. (This doesn’t have to be in person, you can ask a random person in a chat or stack overflow, etc.)
Overall you have to kind of humble yourself and not feel shy or ashamed to ask for help, even if it’s a small thing. Being a junior gives you the perfect excuse anyway 🤠. They want you to ask questions.
Find what works for you
Personally, I spend a lot of time on discord discussing code with others, sometimes I’m “at work” but solving someone else’s problem, teaching something or just talking random code stuff.
This almost sounds bad, like I’m wasting company time… But honestly, I feel taking breaks from what I’m doing helps me just feel happier with what I’m doing overall.
I feel like I’m able to do what I want, when I want - as long as I do the work at an expected pace and I’m becoming a better developer at the same time, I feel this is exactly what I want to be doing.
I expected “working” to be a miserable thing I did to earn money, but by being able to just break it up and do what I enjoy (gym & chilling discussing code), I feel way happier and enjoy going to work.
Code reviews are good
You can learn a lot from code reviews 😸!
Not just people reviewing your code, but reviewing other people’s code and also looking at reviews other people made unrelated to your code.
You have to understand you are not your code. If someone says you did something wrong, you shouldn’t be upset they’re saying you did it wrong, they’re saying the code you wrote isn’t correct. Everyone has times when they’re tired and the code just isn’t good, it happens. 🤷
I wrote up notes of most things that were confusing to me. There was a LOT of things done in a very specific way I’d never seen before, specific to our codebase only.
The problem with asking questions is that you’ll get an answer, but if you don’t come across that thing again. You may have forgotten the next time it comes up.
I use markdown to write notes and then when writing something for GitHub I just copy/paste it in there as part of the Issue/PR and it’s already in the correct format.
And that’s about it, I’ve probably missed a few things as the time has just kind of flown by, but I think everything is going fine and all my reviews have been overly positive, the transition from self-taught to “proper” work has been fine.
…Now I just have to hope coronavirus doesn’t make me unemployed 😷.