In this article I talk about strategies I use to efficiently navigate my tasks at work as a junior developer (who has ADHD).
These are the topics covered (I went a little further than just starting):
Basically, there are 3 types of strategies I use when doing a task: ** those applied to reduce the difficulty of starting, those applied during development to smooth the process, and those applied at the end of the task to reduce the errors that will pass into code review*. To help understanding, I'm going to use a task I did a few months ago, a modal in React.
*I have to warn you that these tips will improve your performance in the medium term, but in the short term it may seem like you're taking things slower than you'd like. I suggest talking to your leadership to align the expectations.
Before starting any task I like to understand the code I'm going to work with, so I look for the components involved in the task and read them, taking notes in a notebook about what each one does, where the data comes from and what its internal functions do. That way I can have a deeper understanding of what I'm going to be dealing with and I prevent that information from staying only in my head (which is not at all reliable), as well create a place to turn to if ever I need to work again on the same components.
You could argue that doing it this way "consumes" a lot of task time, but I guarantee it makes development easier and reduces time spent looking for bugs later. From a junior's perspective, you gain code mastery much faster and deeper this way. People don't usually do this and I've found that reading and understanding the code beforehand helps me identify points of attention that go unnoticed even by the more experienced.
However, sometimes the task is to start something from scratch. In these cases I look for similar components and do the same procedure to understand what all its code does because this prevents me from just copying code snippets without understanding what they actually do. My task of creating a modal fell in this case, I had to create the component from scratch based on a more general one that already existed in the project.
The last thing I do is taking note of the subtasks within the main task. Here I try to make them as simple and short as possible, because this reduces the time between one subtask and another and greatly improves the development flow. Regarding my modal, it was something like this:
- create modal component
- condition API call to click
- mock API return
- test the action of clicking the button
- find out how to pass information between different components
Having very small and relatively simple subtasks helps reduce the anxiety and procrastination to get started and gives you a better view of progress. Sometimes it is necessary to define microsteps to help break the inertia of starting the task and one that helps me a lot when I need to research a difficult topic is to leave the website or documentation open and then get up from the chair for a while. For some reason I feel less overwhelmed when I've just taken a walk and the website I need is already open just waiting for me. This also works with the code itself, I find the right file to work with and then I'll take a walk around to unwind before starting.
During the task, unforeseen bugs/fixes always arise, so I write down all the things I didn't anticipate I would have to do and also all the questions that come up to search the internet or ask someone on the team, that way nothing gets lost and I guarantee that I will remember to clarify everything.
Another strategy I have to adopt when it's particularly difficult to focus on the task is to write down the problem I'm trying to solve and write down the little conclusions that will lead me to the solution. An example of how I do this part:
- at what moment should the click open the modal?
- ↪ when an element is registered, determined by
- what defines isEnabled? At what point is it changed?
- ↪ when an element is registered, determined by
- the modal must have: isOpen, onClose, type, name, date, activities
- date comes from the URL ✅
- where does the other information come from? Does the parent component have them all? Do I need to get any of them from somewhere else?
In some situations it's necessary to do a pair programming and I realized that without my notes I could end up getting pretty lost, so I like to take these steps before having someone help me with answers.
This is the time to check if any silly mistakes have gone unnoticed. Before submitting an assignment for code review I usually recheck a few things:
- run all the automated/integration tests to make sure I didn't accidentally break anything
- run lint (if not running automatically)
- update my branch with main/master
- if necessary, update libraries and database
- if necessary, resolve merge conflicts
- run the code and make sure the behavior is as expected, including error cases
- check if I've followed the code standards defined by the company
And here's a tip my tech lead gave me: if you think the code is bad after finishing the whole task, call someone on your team to take a look, you can explain what you tried to do and the person can give you feedback on how to improve before submitting to the code review itself.
Starting a career in development can be quite difficult, especially if you've gone through a career transition or don't have a good theoretical background. With this article I would like to share some strategies I use to make tasks less daunting and less anxiety-provoking.
Do you have any more tips to give not only to me but to other people just starting out? Leave it in the comments and help some more people.