Words of Wisdom
We asked developers who went successfully through the onboarding phase, which advices they would give to someone starting now. Here is what they said:
- Don't take on too much work.
- If you struggle with something, talk to people. This does not mean asking about every little technical obstacle you hit, or any decision you have to take.
- Try to solve it first, and be bold with taking decisions yourself, but if you still struggle, talk to people, regardless of whether the problem is technical, procedural, psychological or whatever.
- Be realistic. Understand your limits and pick up work accordingly. When you go for something exotic and new for yourself, doubt your own original estimates of the effort & time it'll take.
- Don't compare yourself to others, thinking you have to be at the same level, lest you build up an imposter syndrome. Instead look up to those with more skills / knowledge; learn and grow from them.
- Trust yourself: I often felt I wasn't completing tasks quickly enough at first. I think the extra pressure I put on myself actually made it harder to complete things since I was lost in the weeds while trying to force my way through something, instead of stopping to think through the issues.
- Ask questions when stuck: I also shied away from asking questions which seemed silly or trivial, when I did finally ask, often the answer was simple enough to someone already familiar with the context, but wouldn't be apparent to someone new to both OpenCraft, and the Open edX platform.
- Fulfill your physiological needs: I sometimes get too lost in my computer and forget the essentials like eating, stretching, drinking water. When working in an office there were enough people around, so I would occasionally be pulled away from my computer, or asked to lunch. Working remotely I've had to build a habit of taking a few minutes now and again to cover these bases on my own, since when my physical needs are neglected, my mental capacity tends to suffer.
- The amount of tickets you commit to should increase gradually. In the beginning, try to take less tickets and don't worry if it seems to little to you (you can always pick up more during the sprint). It's way better to take less and complete it on time than commit to more and finish on time just a part of it. OpenCraft likes to deliver on time :)
- Take into account that tickets consist very often of not only coding the feature but also writing tests, adding documentation and having it all reviewed on time. So always add extra time for this in your estimates - it can eat a lot of time in the beginning (but it's normal).
- When planning your work, remember about the timezones of your reviewers - response to your comments can sometimes take even 24h.
- Remember about changing the statuses of your tickets and posting updates/comments so that others know how it's going. (This is something I'm stil getting used to :)).
- Finally, trust yourself. Don't worry, you're doing good. It all takes time in the beginning - no worries :)
- At the end of the day, look through your activity history and sent emails and make sure you didn't miss logging anything. When you're bouncing back and forth between things rapidly, or there's a lot of different issues grabbing your attention, it's really easy to miss logging your time. I find that towards the end of particularly hectic days, rather than feeling accomplished, I'm left feeling unsettled about my time logs. It can be worth taking a quick look through your activity history (even if you probably logged everything), just to kick that feeling so you can start your work the next day more refreshed.
- If you didn't sleep enough last night because you were caught up in your work, just sleep. In tech, it's normal to sometimes "stay at work late" or even lose sleep due to weird scheduling, emergencies, etc. Curve this habit and push back - nothing is worth losing sleep or your health over (at least not on a very regular basis).
- Always have some time off scheduled specifically for leisure and/or personal projects, even if you've just come back from a vacation. Otherwise time might slip away and you'll only ever take time off for emergencies or for other people in your life. If you're seriously concerned about your personal finances while taking time off, assess why that's the case and question whether you negotiated your contract correctly, because trying to take your mind off things when you're off work for the night just isn't as effective as completely disconnecting for a week or two. :)
- As a more general point, I've read GitLab's entire employee handbook, and I particularly like their attitude towards time off, such as: "If you have to respond to an incident while being on-call outside of your regular working hours, you should feel free to take off some time the following day to recover and be well-rested. If you feel pressure to not take the time off to rest, refer to this part of the handbook and explain that you had to handle an incident."
- Taking a week or two off at OpenCraft is very difficult if OpenCraft is your main gig and you have a lot of responsibilities - I suspect this is true for GitLab and and most other companies as well, regardless of how nice their handbooks sound (not to say we shouldn't improve if there are ideas :) ). For me it sometimes didn't feel like it was worth the struggle to schedule take time off from OpenCraft, but it just is.
- Assess your career trajectory. Where would you like to realistically be in your life in 5 or 10 years, and what are the things you can do or the skills you can gain to help you get there? Specifically, what can OpenCraft do to help you get there? This could be throwing yourself on projects that might allot you valuable experience based on those long-term goals. In my experience, making work align with life goals can really refuel day-to-day work, making it invigorating and meaningful in lieu of the initial excitement when first joining a company.
- Ask questions when stuck.
- "Speculative Execution" has a bad rep these days :P but in my experience if I'm reasonably sure of something, I'll ask questions, but assume I had the right idea and start working. If it turns out I was right, I feel good, otherwise it's an opportunity to learn.
- Tickets are more than just coding. There is the time it take to learn the codebase, deal with messed up devstacks, documentation, reviews, feedback etc.
- Timezones differences can magnify. Even a small difference in timezone can magnify the response loop when people have different working hours, schedules and priorities.
- In my case, the main things were: reducing+avoiding communication
- Building many backup devstacks
- Formalizing all the undocumented processes (specially non-technical ones)
- Creating personal tools (computer or not) to manage time and tasks.