I am a developer with six years of experience, having worked in both startup and enterprise environments. I began my journey at Ola Financial Services, a small startup, where I navigated daily chaos and contributed to multiple product deliveries within a short span. For the past five years, I have been with Flipkart, where we have shipped numerous products, pulled many late nights performing NFR, tackled production issues, stretched through weekends to meet timelines, mentored several juniors and learned from experienced seniors.
I am writing this article to share the strategies that help me stay efficient—both as an individual and as a team player. If you use any techniques that aren’t mentioned here, I encourage you to share them in the comments.
1. Get maximum Clarity
Try to get utmost clarity of the task at hand. Iterations can be minimized when you have a clear understanding of what you are trying to achieve.
Don't shy away from asking questions. I have observed many developers are only silent listeners in product grooming sessions. At times, product brainstorming sessions turn into a monologue from Product managers. Developers come out of the session with subtly different notions of what some features are about and face clash of opinions at a later stage of the development cycle. This leads to a re-work.
To avoid this, have a clear vision of the experience you want to deliver to the end user. You can achieve this by asking plenty of questions—both to yourself and to stakeholders. These questions might include:
- How will the page appear on different devices?
- How should animations behave when widgets load?
- What should the failure experience look like?
- What is the expected maximum QPS of my API?
By proactively seeking answers, you ensure that your development aligns with the intended product vision, reducing ambiguity and making your work more efficient.
2. Goals for every hour of every day
The first thing I do every day after opening my laptop is write down my tasks for the day. My typical task list at the start of the day looks something like this:
I log in early and start my day by completing PR reviews. I prefer to begin coding with a fresh mind. As the day progresses, some tasks get completed, others are deprioritized, ad hoc tasks come in, and a few remain unfinished. Here’s a snapshot of how my task sheet looks midway through the day:
[Green: Completed, Red: Deprioritized, Black: To Do/ In Progress]
2.a. Take a break
Don't jump straight into your next task after completing one. Take a two-minute break—walk around, drink some water, stretch, rotate your eyes, take deep breaths, or even touch your toes.
You can also try the
Pomodoro technique, which breaks tasks into manageable chunks within fixed time intervals. This method works well for many people. I’ve tried it myself but couldn’t stick with it for long.
3. Focus on the Signal, Filter out the noise
Software development demands undivided attention. During a typical day, we get several pings, notifications, emails etc. Minimizing these distractions maximizes output.
I have organized my mailbox with filters and labels. I have enabled notifications for relevant chat threads and disabled pop-up notifications from chat apps on my laptop. Instead of constantly checking messages, I review chats and emails during breaks—either after completing a task or at the end of a Pomodoro session. My phone remains nearby during office hours for urgent matters.
I prefer scheduling meetings later in the day. While I don’t have control over most meetings, I try to push one-on-ones and mentoring discussions to the second half whenever possible. Blocking certain hours—especially in the morning—for deep work and development has also been incredibly helpful.
Of course, what works for me may not work for everyone or even for me in a different team or environment. The key is to experiment and find a system that helps you stay focused while staying connected when necessary.
4. Organizing for Efficiency
A well-organized workspace—both digital and physical—can significantly improve efficiency. I prefer keeping my Chrome tabs minimal instead of having 100 open at once, draining my CPU and making it harder to find what I need. Chrome tab group feature is a blessing indeed. This is how my chrome looks.
My bookmarks are neatly labeled, following a structured format like Team Name > Year > Feature Name > Figma Link, Solution Documents, Jira EPIC, ensuring quick access to important resources. Similarly, I keep my Google Drive and Confluence well-organized, making it easy to retrieve documents when needed. A little effort in structuring things upfront saves time and reduces unnecessary frustration throughout the day.
5. Learn, Learn and Learn
Efficiency isn’t just about working faster—it’s about working smarter. Continuous learning plays a crucial role in improving efficiency by helping you discover better tools, optimize workflows, and avoid common pitfalls. Staying updated with new technologies, best practices, and industry trends allows you to solve problems more effectively and make informed decisions. Learning doesn’t always have to be formal; it can be as simple as reading documentation, exploring open-source projects, discussing challenges with peers, or experimenting with new techniques. The more you invest in learning, the more efficient and valuable you become in your role.
6. Automate Everything You Can
Automation and templatization can significantly boost efficiency. The key is to develop a mindset where you constantly ask yourself: Can this task be automated?
For example:
- Every morning, if you manually open your terminal and start specific processes, consider writing a script to automate it with a single click (explore AppleScript or shell scripts).
- If you open the same set of browser tabs daily (calendar, mail, chat, music, Jira board), save them as a tab group for quick access.
- Some teams have automated daily and weekly reports for on-call incidents based on severity, eliminating the need for manual logging.
- Scrum-related documents—on-call notes, sprint retrospectives, interview evaluations, and meeting minutes—can all be templatized to save time and maintain consistency.
The more you automate, the less time you spend on repetitive tasks, allowing you to focus on high-value work.
7. Listen Carefully and Be opinionated
One of the most underrated soft skills is active listening. Pay close attention to others, ask thoughtful questions, and don’t hesitate to express your opinions. However, instead of outright rejecting ideas you disagree with, try nudging the conversation in your direction by asking well-structured questions. Thoughtful questioning is a skill that improves with practice and can help align teams without unnecessary friction. If you disagree with a proposal, take the time to understand the other person’s perspective, ask clarifying questions, and gather data to support your viewpoint before engaging in further discussions. This approach fosters productive conversations and leads to better decision-making.
8. Scrum Ceremonies
I am a regular at scrum ceremonies. I believe product development is a team play, not a solo act. I encourage developers to attend these meetings to discuss blockers, share updates, and align with the team. However, instead of just highlighting problems, it's more effective to be solution-oriented and suggest ways forward. Additionally, collaborating on task prioritization—both for yourself and your teammates—ensures smoother progress and better efficiency for the entire team.
In a fast-paced development environment, where team members frequently change for various reasons, scrum practices play a crucial role in helping new members adapt quickly and align with the team's workflow.
8.a Retrospectives
At the end of each sprint, we hold a short retrospective to reflect on what went well and what could have been improved. This practice helps in identifying and minimizing recurring issues, making future sprints more efficient.
8.b Sprint Planning
Sprint planning is a blend of art, science and logic. Before a sprint begins, the team must go through multiple product grooming sessions and clarification discussions to ensure clarity. The engineering team should break down tasks into achievable, time-bound subtasks, estimate efforts accurately, and document them as Jira stories. We use Atlassian's Jira to manage agile processes in our organization. Tech backlogs and on-calls need to be accounted for.
The scrum master should account priority of each item, assigning them based on team members' strengths, and distributing dependencies to minimize intra-team blockers. Additionally, it's essential to develop multiple Subject Matter Experts (SMEs) for every product line the team oversees. This ensures that no single person becomes a bottleneck, and the team remains resilient even when members transition.
8.c Make Yourself Redundant
I’ve often seen people create dependencies around themselves to feel indispensable. While this might seem like a way to establish importance, I believe it’s counterproductive for both the individual and the team. One of the best engineering managers I’ve worked with once told me, "Try to make yourself redundant. That way, you can focus on bigger and more important tasks."
In my team, stand-ups and on-call handovers are not reliant on the scrum master or senior developers. Instead, we follow a round-robin approach where every team member takes turns conducting them. Since adopting this practice, we’ve noticed that junior members often step up, gaining confidence and conducting these ceremonies independently. This not only distributes responsibility but also fosters leadership and growth within the team.
9. Help Others, and Help Will Return to You
Being a team player isn’t just about collaboration—it’s also about going the extra mile for your teammates. Sometimes, a small effort can make a big difference, whether it’s spending half an hour over the weekend to help with deployment approvals, staying up late on a Google Meet to support someone running their first NFR, or dedicating an entire day to debugging a critical production issue.
Have faith that help comes full circle. In my career, I’ve sought assistance from many peers, and more often than not, I’ve received it. When you build a culture of support, you not only strengthen your team but also create an environment where knowledge-sharing and collaboration thrive.
10. Development Plan and Brag Documents
Flipkart encourages employees to create a well-structured Development Plan at the beginning of each year. This plan allows you to set clear, concise learning and development goals while also exploring individual projects and experiments. Once drafted, employees review their plans with mentors and engineering managers to gain feedback and ensure alignment with their growth aspirations.
Many employees find it frustrating to work on numerous projects throughout the year, only to struggle during performance evaluations, trying to recall and articulate their contributions. To avoid this last-minute stress, I strongly recommend maintaining a
brag document—a running log of all significant work, achievements, and impact, complete with relevant documentation links. By maintaining this document consistently, you make performance reviews smoother, fairer, and more rewarding for yourself.
Thank you for taking the time to read this article! I hope you found these insights helpful in improving your efficiency at work. Everyone has their own strategies and techniques that work best for them, and I’d love to hear yours!
If you have any tips, experiences, or thoughts to share, drop a comment below. Let’s learn from each other and grow together! 🚀
Comments
Post a Comment