The human side of software development.
Applying development practices against every-day life, and applying life lessons to development
This is developer++
Developers love predictability, it’s what we strive for. The code we write should be predictable in it’s behaviour, if it’s not, that’s a big problem.
Correctly predicting how a user will use a feature makes almost any task seem trivial.
But have you ever had a day at work that went just as you expected? Me neither. But I’m working towards changing that.
As developers, there are many things competing for our time. The following list are just some of the things that scream for attention in most developer’s daily routines.
- assigned features for the current release
- bug reports from testing these new features
- live issues from existing bugs in production
- walk up questions from users
- helping other developers with difficult issues
Your list may look a little different depending if you are a free-lancer, or work in a corporate environment, but the struggle is the same.
Even when your priorities are crystal clear, there are still many decisions to be made in how you manage your time to bring the most value to your role. There may be people waiting for you to finish one task before they can continue on their top priority, while completing a different task is your highest priority and you have a live issue caused by the previous release that is causing work-arounds for your users.
Where do you start?
Where do you stop?
When do you stop?
There is endless information on time management out there, but in my experience, it’s one of those things that you have to be very deliberate about, or you just fall back into old habits. I’m totally guilty and am currently working towards building new habits for managing my time better.
Here’s what has worked for me:
1. Find your focus
Without knowing your focus for the day, you will spend it simply reacting to everything going on around you, and at the end of the day, you won’t have a clue what you actually accomplished. And it won’t be much anyway.
Spend 5 minutes planning your day as the very first thing you do. You will have a head-start on this from the previous day once you get rolling, but more on that later.
If you work 8 hour days, don’t schedule 8 hours. Assume 15% – 25% of your day will be taken up with the minutiae of email, conversations, impromptu meetings, etc.
Jason Fried of 37 Signals has a great Ted Talk on why work doesn’t happen at work.
- Write down your commitments for that day – any meetings or appointments
- Write down what you need to accomplish – this information is probably going to be coming from your bug tracking system or project plan.
- If you can’t determine the priorities of these items, and you don’t have the authority to set them, then talk to someone who can. You aren’t providing your highest value if you are working on items that are not top priority.
2. Set Goals
Setting goals works, plain and simple. Goals also keep you accountable, there is an internal obligation to achieve that pushes you forward. Goals also keep you on task, and you feel a sense of accomplishment of meeting a milestone.
The funny thing is, the size of the goal is often inconsequential, the mental reward of completing it is still there.
Look back on your daily plan of what needs accomplishing, and break that up into smaller goals. Each goal should take less than 1 hour, anything bigger starts to feel like a big commitment and it’s tempting to move onto smaller easier goals.
Make them all small and easy.
3. Time boxing
Now that you know your commitments and your small goals for the day, set aside a predetermined amount of time for each commitment and goal.
Knowing you have 30 minutes to complete a goal will keep you focused on the result, not whether or not your shade of blue on a page header matches the Maui beach at low-tide.
4. Remove distractions
This is obvious, but required.
Turn off social media notifications, and even email notifications if your position allows you some time before responding to each new email. Schedule time to read and answer, don’t allow it to interrupt you through-out the day.
As for your personal email and messaging notifications, these are a no-brainer to turn off.
5. You Are A Terrible Multi-Tasker
There are certain things that are possible to do while multi-tasking, but development is not one. Focus on your current goal (remember you set those in #2 for a reason) and you will produce higher quality code in less time, all while feeling less rushed.
It can take a while to get used to doing one thing at a time. If you are a habitual multi-tasker, it can feel like you’re not doing enough, but give yourself the freedom to do one thing at a time.
I’ve been coding while on the phone thinking it’s no big deal, and suddenly I read back a line and I have a variable named bbq because I’m talking about BBQ’s. Not cool.
6. Review your progress
In step 2, don’t forget to schedule time to review your progress at the end of the day.
You will see a bunch of items crossed off your list, and likely a few that still are not finished. That’s great!
Using this list as the starting point for tomorrow will not only give you a quick reminder on what you were working on, but also shows you if there is anything you need to schedule time for follow-ups on.
For example, you may put yesterday’s task on your list today based off your bug tracker, but seeing it on your list from the previous day may remind you that you will be required to assist with setting up the test environment, or dealing with any bugs the testing team may find.
Pick one goal that you will get done today no matter what. No matter how your day blows up, if you get that one goal done, the day will feel like a success.
Time boxing – If you have very sequential goals, and you go over your time box, just push everything back by the length of the next box.
Schedule time for yourself:
- On-going education
- Reading / answering email
- Meals and breaks
Create your schedule with a pen and paper. I’ve tried so many todo apps and systems, but always find myself most successful with a pen and paper. If you have an app to prove me wrong, let me know.
Remember, being busy is much different than being effective. Don’t get trapped in the mundane valueless tasks.
Share your goals with a friend or teammates, accountability does wonders.
- Find your focus
- Make sure you know where you’re going, make your efforts count
- Set goals
- Take the time to mentally divide your work up into small units to give you something to aim for.
- Time boxing
- Set a time limit for each task.
- Remove distractions
- Give yourself the room to think about what you’re doing.
- You are a terrible multi-tasker
- One thing at a time
- Review your progress
- Check back how you’ve done against your plan, and carry anything forward to the next day if required.
If you have any tricks that keep you on track each day, leave a comment.
I’m 8 minutes over my time-box for writing this article, if I round down to the nearest hour, still counts. 🙂
Thanks for visiting!
If you enjoyed this article, please subscribe to my newsletter below and I'll make sure you are notified of any future articles
As a thank you for signing up, you will receive my free ebook - Iterative Development for the Human Condition. This book takes a look at how the same principles used in software development can be used to effect positive changes at a personal level.[nm-mc-form fid="1"]