DAY 1215
Anonymous asked:
What’s your advice for hitting the ground running in my first job, learning the new internal tools and codebase?
I
definitely had a bumpy landing at my first job, and I had to develop a
lot of strategies to try and get my bearings and ramp up to being
useful.
Be patient with yourself and trust your team
Every
person on my team told me it would take “6 months to a year” to fully
ramp up,
and I thought that sounded absolutely crazy. However as I hit that
half-year mark, it felt like I had barely scratched the surface.
If you trust your own feelings when it comes to how well you’re doing, you’ll always feel woefully slow and underperforming.
Your
team knows it takes time to ramp up, and they still hired you knowing
that would be the case. Check in with your team and manager often to see
how you’re progressing against their expectations of you. Hopefully
they’ll have a clear plan which will detail what’s expected of you over
time.
Take some easy, neglected work under your wing and become the go-to person
A
typical way to get a junior developer comfortable with the team and the
codebase is to have them do some small tasks that the team typically
does. This is great for having lots of people to help you out, and clear
criteria for success.
Also keep an eye out, though, for
small bugs, dashboard improvements, tool features, or other things which
would help the team out, but which are too low priority for your
teammates.
Prioritization before you got on the team was done
according to what was worth your more senior teammates’ time, but there
may be a lot of things that would be good learning experiences for you.
Bringing these things up to your manager can show your
proactiveness, even if they decide it’s best to not work on them. And if
they do decide to put those tasks on your plate, they can be a more
visible way to make an early impact on the team, since you’re doing work
which will make the team’s life better and which would otherwise not
have gotten done.
Another important benefit to finding something
small and focusing on it for a little while is that you’ll build up more
expertise and confidence.
Resist the needing to perfectly understand everything
I’m the kind of person who always wants to know how and why and when
things evolved to be how they are, what the benefits are, and all those
other interesting questions that really help you dig into something
while learning it.
However in the kind of giant codebases we’re dealing with, it’s a
neverending rabbit hole that will stall you forever. There are a lot of
times I have to follow some instructions or copy some example code
without knowing why it works, only to go back and gradually fill in the
gaps later on. For example “is this method I just called part of PHP,
one of Facebook’s additions on top of PHP via HACK, or part of one of our
internal APIs?”
A lot of the time when studying I would take long
detours to address my curiousity about something, or to relearn it from a
different source which might explain it in a better way. Having to care
more about productivity than learning is one of the consequences of
switching from student to paid employee.
This is a really hard one for me but I’m working on it.
Worry less about getting unstuck any particular time, and more about learning how to get unstuck in general
Getting stuck and asking teammates for help is a
huge (maybe the biggest?) part of being a junior developer, and it’s
easy to feel like your teammates know everything all the time.
If
you pay attention, though, you’ll quickly realize that the person
helping you solve your problem has to figure out the answer for
themselves before they can explain to you what it is. In other words,
they don’t know the answer either, but they know how to find it out.
You can pick up a lot of research and debugging tricks by watching how
experienced people go about it. Do they look into he documentation
first? The wiki? An internal messageboard? The codebase itself? Click a
link from an error message?
There are so many ways to
identify problems in code, and you might learn a method that’s new to you or find out that some techniques are better suited for certain types of tasks. Don’t be shy to ask people to let you in on their thought process of how and why they choose each method!
I believe getting unstuck is the number one most important skill to be successful in a programming job, and learning to do it better will make you more productive in every other way.