Hi Taro Community,
I’ve encountered an interesting situation at my company, where I was the sole member in India until recently. In March, we hired an internal manager in India, whom I now report to. In our latest 1:1, he mentioned that I wouldn’t be assigned direct coding tasks possibly until September or October. For now, my work involves renaming elements within the codebase, and while I understand the rationale behind these changes, I’m missing out on more substantive coding work.
Given this context, I’m seeking advice on how to proactively engage with and understand our codebase. Without being assigned direct coding tasks, what are some effective ways to delve deeper into the code, learn its intricacies, and prepare myself for future assignments?
Any tips or shared experiences on how to navigate this period would be highly appreciated.
Thank you for your help.
Oh no, this is bad 😟. Not having any coding tasks for 5-6 months would greatly damage your career (and be extremely boring). I've helped a lot of engineers in similar situations (and have been in that situation myself), so I have a lot of advice here. Your 3 questions are actually a great place to start!
Should I take the initiative to review and study different parts of the codebase independently?
No, "studying" a codebase is a huge waste of time, especially at a Big Tech like Microsoft where a ton of the code will be legacy spaghetti. You won't truly learn a codebase unless you engage with it (i.e. write code into it).
Could I propose small, self-initiated coding projects to demonstrate my understanding and initiative?
Yes, yes, yes! This is the best cure when you're stuck in a situation without work. Create scope! At a Big Tech company, the obvious culprit is refactoring, adding automated tests, and other sorts of cleanup work. For me at Meta, there was no shortage of non-controversial refactors that didn't need any buy-in. For example, after Instagram's codebase supported Java 8, a lot of code needed to be migrated to lambdas. I submitted a ton of commits doing that (the IDE did most of the work haha).
How can I use this time effectively to ensure that when coding tasks are assigned, I’m fully up to speed and ready to contribute meaningfully?
Easy: By writing code. Find opportunities to write code. On top of code cleanup work, internal tools are another easy target. At Meta, a lot of internal tools were thatched together by interns and after they left, their tools fell into disarray. So that was another good source of coding with some decent impact when you were bored.
I also recommend talking to managers of sister teams (i.e. teams that have the same skip as you) and seeing if they have anything on their backlog you can help with. Again, Big Tech engineering teams often have tons of random cleanup work in the backlog from small bugs, internal tool patchups, and refactoring.
Here's another similar question I highly recommend: "Help needed: New grad job going at a slow pace with nothing to do - Next steps?"
As an engineer, this is a bad sign that you are not being trusted (or, more likely, your team is not trusted): "I wouldn’t be assigned direct coding tasks until September or October"
If your goal is to grow your career, get promoted, and increase your technical competency, this situation won't get you there...
I would recommend trying to create scope for yourself. This requires some level of relationship with engineers in the US who can review your code and trust you. Once you have that, find bugs or small improvements you can make and submit them.
I would not "study" parts of the codebase independently. It's very hard to study/read a codebase and get anything valuable from it, unless you actually make a change.
Here's a great discussion about finding scope internally vs changing companies.
Hi Alex,
Thanks for your earlier response—it was enlightening. I’m currently part of a new team that’s focused on building the system, and at this juncture, there doesn’t seem to be any direct coding work available as the manager suggested. In such a scenario, could you guide me on how to create scope for myself?
Moreover, how can I discern if there is any coding work that needs attention amidst our build system tasks? Any strategies for identifying areas where I could potentially contribute code or improve existing processes would be greatly appreciated.
Given your situation, there's 2 approaches I would try:
In general, just look for problems and work backwards from them: "How do I find projects for myself at work?"
Hi Alex,
I’m currently assigned to work on the build system for SDK packaging in our project, and at the moment, it involves little to no direct coding. I’m considering requesting backlogged tasks from sister teams to get some coding practice in. However, I’m concerned about how this might be perceived by my current team.
Since I was specifically hired for the build system project, I’m worried they might think I’m not interested in my assigned role if I ask for different tasks. Moreover, I can’t afford to push back my current tasks entirely.
Do you have any advice on how to approach this situation? How can I balance contributing to my assigned work while also expressing a desire to remain sharp in coding without sending the wrong message about my commitment to the current project?
I'm curious: What kind of work does build system for SDK packaging entail? That sounds like technical work with coding to me. Is it just using no-code tools or updating configs or something?
Anyways, here's some thoughts/options:
Hi Rahul,
Reflecting on your comments about the lack of direct coding tasks, I believe the situation may be less about trust and more related to the current stage of our team’s development. Since we’re a new team that’s still focusing on building the system, coding tasks might naturally be less frequent at this juncture.
Could you provide some strategies or steps on how to build those relationships with US-based engineers from a remote position? Also, how would you recommend I identify and approach opportunities for making impactful changes or improvements within the current work, even if direct coding tasks are not yet assigned?
I’d love to hear your thoughts on how best to navigate this phase, particularly on finding ways to contribute meaningfully while the codebase and project are still taking shape.
That makes sense that the whole team doesn't have substantial coding work at this point. Hopefully there is a plan to get there. In the meantime, your goal is to have meaningful interaction with the team.
Could you provide some strategies or steps on how to build those relationships with US-based engineers from a remote position?
Relationships require spending time together, both for work and non-work activities. Can you adjust your hours temporarily so you can?
You mention "even if direct coding tasks are not yet assigned" -- do you need to wait for coding tasks to be assigned? Are there other parts of the codebase that are more mature where you could make simple changes?
Hi Alex and Rahul,
I’m contemplating the possibility of contributing to sister teams within our organization to broaden my exposure and contribute more actively during this initial phase where my team’s coding tasks are limited. Do you recommend discussing this with my manager beforehand?
I’m a bit hesitant because there’s a chance he might prefer me to focus solely on my current tasks, especially given the team’s nascent stage. If he doesn’t encourage branching out, how should I proceed?
What tasks do you even have if you aren't getting coding tasks? Regardless, I would indeed bring this up with your manager. If they want you to focus on your current tasks (I assume they're busy work that don't actually add value), then you should politely push back and mention that writing code will have more impact and there's some important projects sister teams are working on where they need help (assuming this is the case). Expanding a team's impact to uplift sister teams is generally a good thing that makes your manager look good as well.
Hi Alex,
I’m currently focused on the build system for SDK packaging, which doesn’t involve much coding. Given that I’ve recently joined the team, and considering this might be the task I was hired for, I’m hesitant to push back on these responsibilities.
However, I do want to keep my coding skills sharp. If I reach out to sister teams for additional coding tasks, there’s a chance they might not have anything for me, as they could already have enough people covering these areas. How should I approach this desire to code without stepping on toes or giving the impression that I’m not dedicated to my current tasks?