Updated: Aug 6
Mindful developers are happy, productive developers.
Mindful Development is understanding exactly what you're working on at any given moment, and what comes next. Whether you're building a new shiny API, or supporting a system - being mindful helps you be more productive and less reactive.
Ask yourself: What are you planning on getting done for this session? Be specific! Write down a list of tasks down or reference them from your favorite project management tool, and add your own ballpark estimates on how long you think each task will take.
Ideally, you should do this before you start, or the night before. Outline what you're building, and how you're going to build it. If you're fixing a glitch, think of your debugging strategy and what may be causing the issue and/or steps to replicate.
Build your to-do list before you start, but ideally the night before.
Your most productive hours are earlier in the day. Don't waste your productive hours on context switching and building to-do lists. If your list is ready from the get-go, you'll spend this time producing instead of thinking about what you should be doing.
Once you start, the clock is ticking. Be mindful of the following:
Understand when you're getting sidetracked, and write what sidetracked you down - but don't let it disrupt your flow & mission.
When you're writing code, you're putting down what you've already thought of on paper. Once you've actually started developing, you shouldn't be heavily thinking about architecture - this helps you focus on writing quality code and making split-second decisions that will affect the maintainability of your project for years to come.
PR / Push Frequently
Aim for small PRs that cover 2-3 small to medium sized tasks, or one large task.
Ideally, you should be submitting multiple PRs on a weekly basis.
If no one reviews your PR, tag them on Slack.
If you tag and everyone is busy - go ahead and merge it in - as long as it's not going to production directly. PRs can be reviewed after the fact.
Don't be shy about pushing your code before PRing, and asking for input on specific commits or code decisions.
Track your time, and be aware of how long a specific task is taking you.
If you're 2X over your original estimate, ask for help from a fellow team member.
If no one is available to help right away, move on to something new, and come back to it later.
There you have it. Plan, Execute, and Stay Accountable. Avoid mindlessly pulling up your text editor every morning, and drifting through the project or sprint. Be constantly aware of what you're working on, what you've accomplished, and what comes next.