Developer Productivity, Lifeline of Your Career
In a world where sprints and task lists determine your productivity as a developer, it is essential to be practical. Whether you are just trying to keep up with the tasks that management is producing non-stop or just want to finish assignments so that you have more time for yourself. In both situations, you should also learn from your work and make conclusions about the process you went through to improve your career. Not to mention, you need to do the learning while unseen changes happen to your tickets, and goalposts keep changing.
I have tried many techniques to overcome problems during my developer journey, and I would like to share some that made the most difference in my work. Juniors usually think that developer productivity is mostly about coding skills, but I want to introduce some non-coding related topics that are beginner-friendly to help you start improving yourself.
Sprint Grooming
I don’t know how widely popular it is for teams to have planning time allocated weekly, but I can’t stress enough its benefits. You don’t have to convince your whole team to do it; make sure you do it before committing a time frame. In its essence, you should spend some time thinking about the high-level planning of a task and its broad strokes.
Are functional requirements all set? Do you have all the dependencies sorted out? What are the significant steps to measure and complete the ticket? Is the ticket dependent on another ticket? How much of the existing code base can support the ticket, or how much do we need to improve the existing code base to complete the ticket? At last, my favourite question to answer is, how long will it take to complete? Discussions around these questions will bring much value to your planning. It will be much more valuable if your team is involved as well. Others might know little details that can help with the task or bring concerns to clear roadblocks.
Doing this in a team setting also helps you get a better completion time estimate. If any of the developers think something is going to take longer, then management will take the consideration more seriously.
There were times when I thought a ticket would take a week to complete, and the discussions revealed that it needed no more than a day. All because we had time to get together and talk about it to clear misconceptions and share knowledge. One little caveat is to timebox this meeting. You can spend hours planning something, and there is a point where you start wasting your time. Not even the best plans can stand against surprises and mismanagement, so don’t take too much time thinking about all the tiny details; focus on broad strokes.
If you are doing this in a team setting, please consider others’ time as well. Going too much into detail will waste others’ time, and not every ticket is important enough to require everyone’s attention.
Conceptual Flow of Execution
Now that you have an overall idea of how to approach the task at hand let’s do one last planning step: taking concrete steps to finish the work. It might take fifteen minutes or half an hour, but ensure you cover start to finish. You can write these things down on paper, use a digital bullet point note, or utilize a fancy task list tool.
These notes can contain steps like:
- Grab a list of recently updated merchants from the merchant service
- Grab a list of the most sold items based on merchants from the sales service
- Based on the design, combine merchant information with most sold items to be presented in the front-end
- Create an endpoint for the front-end
- Create a component for the API call
At this point, you might realize that there is no existing database call for grabbing recently updated merchants, or you can’t search items based on merchant. These missing parts will add up to your development time, so they should have been considered during grooming. These little surprises can bring your productivity down.
Now you have an easy-to-follow task list, you know where you stand in terms of completion time, and switching between tasks won’t be too much of a context switch since you will be reasonably confident about your planning. Not tracking your steps between projects is troublesome since you will forget things over time. A context switch is a natural killer of productivity, so regardless of whether you agree with me about keeping a task list, you need to find your way of dealing with it.
Do not Try to Tackle Everything at Once
If you are having trouble grasping an issue or a solution doesn’t click in your head, focus on the concrete steps of the task. If you follow the second tip above, you will have a basic idea of how the solution should look like. You have yet to determine the exact code, but you do know how things should go. Focus on things that are considered ‘stepping stones.’ As an example, your database is a safe place to start. Data always sits somewhere, and it needs to be pulled. Regardless of how much optimization you can introduce, there will be a function pulling information in. You can also think about front-end and back-end communication and decide on an interface based on requirements. You may not know where the data will come from, but you at least know what you need to provide. As you tackle these small steps, you will realize that once hard-looking problems and complicated solutions start to untangle themselves. You will start seeing things clearly. Introducing optimizations or refactoring code will become easier. On top of that, your building blocks will be valuable somewhere else.
One Last Note for Junior Developers
Collaboration with others becomes your day-to-day job once you start working in a company. There is a lot to say about how to work with others, but I want to instill one idea in you that will stay constant forever in your career. Once you have been assigned a set of tasks, a ticket, or a project, it becomes your responsibility to complete it. Multiple people are involved in creating these tasks, such as a project manager, your lead developer, and, occasionally, the CEO may take a particular interest in a specific project. Regardless of how senior your managers are, they can make mistakes. The tickets may need to be more well-defined, and it is your responsibility to take them to completion. If you don’t take ownership of your tasks and don’t ask questions at the correct times, you will eventually be held accountable. Therefore, feel free to ask for clarifications and point out missing details. It will make your life as a developer much easier, and on top of that, you will be regarded as a reliable team member.
I hope I was able to introduce you to some new ideas about working with others and staying productive. These profound topics require a lot of repetition to get good at, but I am a fan of learning on the go, so starting is the most important thing.
Don’t hesitate to contact me if you want me to explore any of the tips more deeply or if you have any suggestions on what else might be helpful to junior developers.