Your First Difficult Task
The day finally arrived. Your trial by fire. You've probably been working on bugs and/or small UI changes for the last couple of months and suddenly a new feature has been requested by the product team and you're the assignee.
In the current era of remote work it's rather common for developers to take a quieter approach when dealing with the aforementioned scenario. After all, you might be thinking:
- I need to prove to my peers I can complete this task elegantly and in a timely manner
- I should not bother my peers trying to figure out how
<COMPLICATED BUSINESS LOGIC>
works - I need help but have no idea who to talk to
If the above speaks to you, rest assured everyone else has been through the same. Our codebase is huge and full of unknowns even to the oldest members of the team. The worst thing you can do in this scenario is try to tackle such tasks alone. Here's why:
Duplicated code
Trying to build a new feature from scratch all by yourself is an easy way to duplicate code, specially in our codebase (1859 files as of June/2021!).
Poor code design and structure
Working on a feature for weeks on end just to reach the review phase and receive negative feedbacks is not just bad for you, but also your team leader, product owners and any other stakeholders, since now they will have to wait until all issues are addressed. Always assume that a feature should be PRODUCTION-READY as soon as it makes it into a release.
Read more about Production-Ready vs Feature-Complete
Time waste
You'll most likely need to set some time aside to understand how a feature you're working on is interconnected with existing modules & features. This can easily take hours, if not days out of your total allocated time for this task.
You'll make unrealistic assumptions
And this may not be your fault: 99.9% of the times you'll find out a feature briefing is missing important details about how it should work.
Solution
All of the issues mentioned above can be easily circumvented with one simple trick: talk to 2 or 3 of your peers (and if you don't know who they are, ask your team leader). Get them to write down:
- Whether they would use existing components / functions / libraries to achieve the expected outcome or have to write it from scratch
- Who from the product / design / marketing team would be able to help you with any business related questions
- What other parts of the app would be affected by your changes
- How would they break down said task in smaller ones
You should ideally use the following channels (in this correct order) to find the help you need:
#native-dev
: this is where all RN developers are. 90% of the time you'll find the help you need here.#chapter-native-apps
: this channel has all RN developers + some designers, product owners and team leaders from other areas. This is a good place to get help about business related questions (e.g.how promotions work?
,how do I abandon a race?
).#developers
: if you didn't get the help you needed in either#native-dev
or#chapter-native-apps
, than this is your last resort. This channel is where you'll find all the software developers in the company. Use it sparingly.
Final considerations
We want you to succeed at getting your first difficult task done. Asking for help doesn't mean you're a bad developer. On the contrary, it shows you care about the quality of work you're putting out and that you're a team player.
Remember: you're most likely not gonna be maintaining this piece of software forever, so it is of utmost importance that it is built in a way that anyone else can jump in and easily understand why it was built the way it was built. 😄