About 2 months ago I started a new job. After almost six years at Ginger, I started a new gig at Forter, and have been having a blast there in the past few weeks. It also got me thinking quite a lot about how to learn stuff. It’s been a long time since my mind had been at CONSTANT LEARNING mode. At Forter I have to learn:
- A new domain I know nothing about.
- Technologies I know nothing about (including 4 programming languages I only have a passing knowledge in).
- Huge codebases I know nothing about.
- People in the company: their names, roles. Whom should I ask what at any given situation?
Here are a few tips I gathered from my experience at my new job.
1) Ask questions, but…
You should be asking a lot of questions to gain the knowledge you need. Don’t be shy to ask things like ‘What does this term mean?’, ‘Who was this person and what is her role in the company?’, and of course ‘Why can’t I get this to run?’. But there’s a but here, there’s a way to ask questions as well:
– Don’t ask about everything you don’t immediately understand. Some things you can pretty easily find out on your own. There’s a lot to learn in investigating by yourself how that thing works.
– But don’t spend days investigating a question when someone can answer it for you in two minutes.
– Ask different people. Even the nicest person has his own job to do, and your questions can interrupt his flow. Also, getting the perspective of multiple people is important.
– Keep a list of things you don’t understand. Try to cross them off one by one by either finding out yourself, or asking a teammate. I put there things like terms I don’t understand, questions about why things were done a certain way and even questions about operating my mac (hey, I’m a Windows guy) which I wanted to google when I had the chance. Now, whenever I have a moment (e.g. running a long integration test) I try to cross something off the list.
2) Don’t judge, listen
As an experienced dev you feel that you bring a lot to the table, and it can be hard to resist the urge to tell teammates that some code is ugly, or that a system should have been built in a completely different way. Instead, ask ‘why is this piece of code complex’? Or, ‘what were you concerned about when you decided to build the system this way?’ The answer should teach you a lot, and you’d be surprised how much more open and candid people can be when approached in a kind, not judging manner. Many times things are the way the are for a good reason. And even when there isn’t one, remember, your old company had a lot of ugly code, patches and hacks as well, left by years of pressure and compromises. Instead of judging, try to understand the context and the history involved.
3) Ask everyone what they’re working on
This has been incredibly useful to me. Whenever I meet a teammate in the kitchen I ask them what they’re working on. They were always happy to talk about this, and the gain for me is pretty great:
- They usually have to explain the purpose of parts of the system, in order for me to understand their current task. Great for crossing things off the ‘things I don’t understand’ list!
- I get to learn the role of this person in the team, so when something comes up later, I know who’s the expert on what.
- I become friendlier with this teammate, which brings me to…
4) Be social
It’s easy to drown in your own tasks when you’re new. Things can be overwhelming, and as an experienced dev you might feel you need to prove yourself right away and complete a lot of tasks quickly. So when they ask you out to lunch you might think it’s better if you just munch on something in front of your screen. Don’t do that. Really, your first weeks at work are not only about learning technologies and systems, they’re also about creating personal connections with the people you work with. Eat lunch with teammates every day, ask them a little about their personal lives, tell them about yours. Make friends. It will make your time at the new job much jollier.
One final note: Beginnings are hard. Take it easy and remember that no one expects you to change the world in your first month or two. Good luck!