20 practical productivity tips that you can start doing today as a developer (no Pomodoro)

Mazen Touati
Studocu Tech
Published in
10 min readSep 20, 2023

In this article, I’ve curated practical and straightforward tips for enhancing your productivity as a developer (some are applicable to non-developers too), which I use daily.

I’ve organized these tips into the following four themes for an easy reference:

  • Level up your working environment.
  • Optimize your coding workflow.
  • Make your debugging resourceful.
  • Work on your soft skills.
Photo by Erol Ahmed on Unsplash

Level up your working environment

1. Choose the Right Theme

While this may seem unconventional for such an article, selecting the right theme plays a crucial role in your productivity. Many developers default to dark themes for their favorite IDEs, often arguing they’re easier on the eyes. However, this belief is perhaps not universal across scientists. Personally, I find dark themes uncomfortable, causing text to appear blurry. If you share the same experience, consider giving lighter themes a try. Dimmed themes like Solarized are an excellent option as well.

Why does theme choice matter for productivity?

A theme that strains your eyes can reduce your focus and, by extension, your efficiency. Prioritize your eye comfort for a better coding experience and overall well-being.

💡 Read more about cognitive load at A programmers cognitive load

2. Master Shortcuts

To get started, explore the available shortcuts in your IDE’s settings, typically found under theKeymap option. However, for a more proactive approach, consider using plugins like Key Promoter. This tool not only helps you remember existing shortcuts for manual tasks but also suggests creating shortcuts for actions without a shortcut assigned to them yet.

Here are some things you might consider looking into,

  • Utilize caret manipulation shortcuts for tasks like selection, deletion, and navigation between words and lines, applicable not just in your IDE but also in all text inputs, including the terminal.
  • Swap and duplicate lines.
  • Access clipboard history.
  • Jump to a line, Jump to a file, and jump to a line in a file.
  • Access the refactoring options (especially for JetBrains products).
  • Toggle the file tree display.
  • Etc.

💡 Are you using PhpStorm?

If you’re a PhpStorm user, there’s a lot you can do to make it less overwhelming. The following is a personal recommendation for setting an opinionated minimalistic PhpStorm setup. You can cherry-pick what resonates with you.

Are you interested in knowing more about IDE shortcuts? Check out this article by Killian Saint Cricq.

3. Upgrade Your Hardware

If you rely solely on your laptop’s keyboard and trackpad, including the magic trackpad, it might be worth considering switching to an external keyboard and mouse. While it might take some adjustment, the return on investment is substantial. This change will unlock greater flexibility and precision when navigating your codebase. You can still replicate most trackpad gestures using keyboard shortcuts (in case you’re worried about that).

Here are some mouse recommendations:

  • Prioritize an ergonomic design that fits your hand comfortably.
  • Opt for a mouse with at least the navigation buttons (prev and next), which greatly aids code navigation.

I understand that this advice might come across as condescending, and you may already feel efficient with your current setup. Not to worry, we still have plenty of other tips that are less opinionated.

4. Consider Focusing Your View

Many developers opt for multiple screens, multi-view terminals, etc. However, it’s highly unlikely that you need to monitor all these sources simultaneously at all times. Human cognitive load has its limits. Unless you’re dealing with an exceptionally complex scenario that requires aggregating multiple information sources, it may be more productive to narrow down your focus.

You can explore alternatives such as using closed-display mode or naming terminal tabs for a more streamlined workflow.

Named terminal tabs example

Optimize your coding workflow

5. Learn Regex

I can’t emphasize this enough: Regular expressions (Regex) are an incredibly potent tool for refactoring and searching. I understand they can be challenging to master and remember entirely, but you don’t need to remember everything by heart. What’s crucial is understanding concepts, like grouping, lookahead, and lookbehind. After that, it’s perfectly fine to search for the syntax whenever you need it.

Your regular expressions don’t have to be perfect or designed for long-term maintainability. They can be as hacky as needed to get the job done for a specific task at hand.

Are you struggling with Regex? Laracast has a great series <Understand Regular Expressions> that can help you out.

6. Probably you don’t need a browser

This advice primarily applies to back-end developers. In many instances, you can efficiently develop features without the need to interact directly with your browser. You can accomplish this by relying solely on automated tests. This is where things like Test-Driven Development (TDD) are very handy. While it may initially slow down development, it ultimately saves time when addressing bugs, introducing new features, and making changes after receiving QA feedback.

With a well-tested backend, you can confidently make modifications without the tedious process of manual testing to ensure nothing is accidentally broken.

7. Have Faith in Your Tests and Your QA Engineer

This complements the previous tip. When you’ve crafted robust feature tests (or their equivalents in your ecosystem), manual clicking around becomes largely unnecessary. As long as your tests are conclusive, you’re on the right track.

Consider incorporating Mutation Testing into your workflow if you haven’t already. This practice helps pinpoint inconclusive tests and enhances your ability to identify additional scenarios that might require testing in your code.

💡 Disclaimer

This doesn’t imply blindly pushing code to production. It simply means avoiding time-consuming tasks that can be automated through testing or validated in separate processes, such as the QA phase.

8. Prioritize Results First, Refactor Later

This concept goes hand in hand with TDD. The idea is that it’s way faster to achieve results first and then refactor the code later. Don’t make it perfect on the first try. Once you have the full picture of your code and it is thoroughly tested, you can readily optimize it by removing redundancy (DRY-ing it up) and making it more modular and maintainable.

9. You Might Not Need The Documentation

The title may seem clickbaity, but the concept here is that there are times when it’s more effective (and beneficial) to dive into the vendor method’s definition to comprehend its functionality. This approach offers two significant advantages in my experience:

  • It allows for a deep understanding of how that piece of code functions.
  • It can lead to the discovery of low-level helpers and techniques that are typically undocumented.

So, it’s not just about understanding what a method does; it’s also an opportunity to learn something new. Countless times, I’ve gained insights into new low-level helpers, techniques, and approaches simply by examining the source code.

10. Take Breaks

Frequently, we find ourselves staring at the screen, grappling with complex features or tackling stubborn bugs. Over time, this can become frustrating, and sometimes the most effective solution is to simply take a break. You can divert your attention to tasks like PR reviews or spec writing, or even step away for a walk, prepare a coffee, or briefly gaze out the window. The key is to return to your problem with a fresh mindset, which may provide a different perspective and help smooth the process.

This approach resembles the Pomodoro Technique but without the rigidly predefined timeframes that can occasionally disrupt your productive flow.

11. Leverage GitHub’s Online Editor

For those hosting their repositories on GitHub, then you can take advantage of the online VSCode editor at github.dev. This can help with PR reviews (including leaving comments, suggestions, etc.) and small commits without switching branches locally.

You can simply modify the PR’s URL from github.com to github.dev, or press . while on the PR to access the online IDE directly.

Make your debugging resourceful

12. Debug Your Queries Sooner

When working with an ORM, handling complex SQL queries may not always be straightforward. When you encounter issues such as test failures or unexpected behavior while working on a feature, begin by examining what the ORM is generating behind the scenes. Verify that the generated query aligns with what should be executed.

13. Master Your Error Messages

Sadly, not all errors come with clear explanations, especially those originating in low-level vendor code. Therefore, it’s crucial to invest extra effort in comprehending the error and its underlying cause.

The next time you encounter a similar error, you should promptly recognize the root cause or what might help understand it. This proactive approach can save you valuable time in troubleshooting and resolving issues.

14. Transform Each Debug Session Into a Learning Opportunity

Stay vigilant about anything that slows down your progress, and be sure to transform your debugging experiences into valuable learning opportunities. So you can adapt your debugging strategies to what you missed the last time.

For instance:

Imagine you’re a Laravel developer who’s invested a significant amount of time debugging deep-nested code that produced puzzling results. You eventually discovered that Eloquent’s default behavior is to return null for unselected attributes in the query. The next time you find yourself in a complex debugging session involving Eloquent, consider temporarily enabling Eloquent strict mode. This kind of adaptability in your debugging strategies can help you avoid similar pitfalls in the future.

Work on your soft-skills

15. Never Forget What You Did and What You Have to Do Again

Have you ever found yourself struggling to recall what you accomplished yesterday or right before heading off on a vacation during a standup meeting? Or perhaps you’ve forgotten to complete essential tasks like speccing a card or responding to questions? If so, there’s a remedy, which is establishing a robust to-do workflow.

Personal anecdote

My preferred tool for this purpose is Notion. I create a Day Tasks board where I list everything I need to work on, what I’m currently tackling, and what I’ve already completed. I also use it to track ongoing conversations or threads that require my input.

Whenever someone assigns a task, whether it’s speccing a ticket or resolving a merge conflict, and I can’t address it immediately, I simply add it to my to-do list for later tracking. This approach keeps me consistently ahead of my tasks.

One additional feature I appreciate about using Notion for this purpose is that I can attach notes and comments to these daily tasks. This allows me to easily retrieve context or useful links from past tasks using the search bar, which has proven invaluable on numerous occasions.

Example of Notion’s Board for tracking day tasks

I’ve made a live version of the above example, so you can view and duplicate it.

💡 Leverage Slack’s “Remind Me Later” Feature

Are you using Slack? One of its great features is “Remind Me Later.” Instead of relying solely on a Day Task board or manual tracking for threads to reply to or tasks you’ve been assigned to, you can simply ask Slack to remind you about them at a later time.

If you use other communication tools, check if they offer similar features and make sure to use it.

16. Leverage Your Calendar

Your Google Calendar or similar tools are invaluable for efficient day organization. Ensure you use them effectively to schedule your daily tasks.

Consider blocking 15 minutes at the end of each working day to plan your agenda for the next day. This practice can greatly enhance your productivity by providing a structured plan for your tasks and priorities.

17. Schedule Time for Small Tasks

Dedicating an entire day to a single task may not always be the most productive approach. To boost your productivity, allocate recurring time slots in your calendar for tasks such as PR reviews, card refinement (speccing), etc. Also, schedule on-demand time slots to handle small, ad-hoc requests like reviewing an RFC or babysitting a PR. This strategy will enable you to accomplish more, unblock your colleagues, and sustain a clear mindset.

When it is time for these tasks, consider briefly pausing what you are working on to address them.

Example of recurring tasks for PR Review and day planning

18. Have Dedicated Focus Time

Allocate specific periods for focus time, where you enter your “zen mode.” This is the time to eliminate distractions and concentrate on creating or accomplishing tasks without interruptions.

Remember to snooze your notifications and update your status, signaling to others that you’re in a focused state, making it less likely for them to interrupt you.

19. Save Time by Asking Questions

While exploring and learning new things is valuable, it’s not always the most time-efficient approach. When faced with a challenge or unfamiliar task, consider seeking shortcuts by asking your colleagues for guidance and brainstorming on how to accomplish it. This can save you significant time and prevent unnecessary frustration.

20. Nudge People to Unblock You

Delays caused by blockers can harm both your productivity and team efficiency. When waiting on others, gently nudge them to take action. Ensuring that tasks requiring their input are completed promptly benefits everyone involved and helps prevent a sudden pile-up of tasks, which can disrupt your workflow and make context-switching challenging.

Bonus: Find your way

As we conclude this article, it’s important to remember that the tips shared here reflect my personal perspective and what worked for me. While some of them may resonate with you, others may not. What truly matters is using these tips, along with others, as a stepping stone to find your own unique way.

I hope you found this article insightful!

--

--