Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Productivity insights for software developers. (Probably useful for others too.)

Slide 3

Slide 3 text

…the problem-solving nature of programming and testing tasks make them more vulnerable to interruptions compared to architecture and UI design tasks. 1 1 Abad, Z. S. H., Karras, O., Schneider, K., Barker, K., & Bauer, M. (2018). Task Interruption in Software Development Projects (pp. 122–132). Presented at the the 22nd International Conference, New York, New York, USA: ACM Press.

Slide 4

Slide 4 text

For software development, focus is simply more fragile than other tasks. And focus requires willpower to ignore distractions and stay focused, but…

Slide 5

Slide 5 text

You have a finite amount of willpower that becomes depleted as you use it. 2 2 Newport, Cal. Deep Work: Rules for Focused Success in a Distracted World (p. 100). Grand Central Publishing. Kindle Edition.

Slide 6

Slide 6 text

As the day goes on, it’s naturally more difficult to focus.

Slide 7

Slide 7 text

A programmer is likely to get just one uninterrupted two hour session in a day 3 3 Parnin, C. (2013). Programmer, interrupted (pp. 171–172). Presented at the 2013 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), IEEE.

Slide 8

Slide 8 text

…for a novice, somewhere around an hour a day of intense concentration seems to be a limit, while for experts this number can expand to as many as four hours—but rarely more. 4 4 Newport, Cal. Deep Work: Rules for Focused Success in a Distracted World (p. 100). Grand Central Publishing. Kindle Edition.

Slide 9

Slide 9 text

So, really, 1 to 4 hours of productivity per day.

Slide 10

Slide 10 text

How can you maximize your productive time to get the most out of each day?

Slide 11

Slide 11 text

Disclaimer: You may need manager support and advocacy for some of these tactics.

Slide 12

Slide 12 text

Take care of yourself and your team.

Slide 13

Slide 13 text

Proper nutrition, sleep and exercise lead to activate a state of optimal mental health, resulting in an enhancement of brain function. 5 5 Altomare, R., Damiano, G., Palumbo, V. D., Buscemi, S., Spinelli, G., & Cacciabaudo, F. (2017). Feeding the brain: the importance of nutrients for brain functions and health. Progress in Nutrition, 19, 1–5.

Slide 14

Slide 14 text

…diet alone is not enough to maintain a healthy brain, but it is important that it is accompanied by constant exercise and regular sleep. Proper rest and the benefits of sport further strengthen the brain synapses, greatly improving the cognitive abilities of individuals.6 6 Altomare, R., Damiano, G., Palumbo, V. D., Buscemi, S., Spinelli, G., & Cacciabaudo, F. (2017). Feeding the brain: the importance of nutrients for brain functions and health. Progress in Nutrition, 19, 1–5.

Slide 15

Slide 15 text

Get and encourage rest. You need rest to be at your best.

Slide 16

Slide 16 text

…we observed a difference of about 44% in the engagement with the task of developers who forewent one night of sleep and developers under normal sleep condition. Moreover, the results showed that sleep-deprived developers performed 54% more fixing addressing syntactic mistakes compared to developers who slept regularly. 7 7 Fucci, D., Scanniello, G., Romano, S., & Juristo, N. (2018). Need for Sleep: the Impact of a Night of Sleep Deprivation on Novice Developers’ Performance. IEEE Transactions on Software Engineering, 1–20.

Slide 17

Slide 17 text

Make time to exercise. It’s good for your brain.

Slide 18

Slide 18 text

…evidence for the benefits of exercise on both affective experience and cognitive performance points to exercise as an effective, low-cost intervention for improving both affective and cognitive health. 8 8 Hogan, C. L., Mata, J., & Carstensen, L. L. (2013). Exercise holds immediate benefits for affect and cognition in younger and older adults. Psychology and Aging, 28(2), 587–594.

Slide 19

Slide 19 text

Take a walking break. Your brain keeps working even if you’re not.

Slide 20

Slide 20 text

Walking substantially enhanced creativity by two different measures. For the three alternate uses studies, 81%, 88%, and 100% of participants were more creative walking than sitting. For the BSE, 100% of those who walked outside generated at least one novel high- quality analogy compared with 50% of those seated inside. Walking worked indoors on a treadmill and outdoors at a bustling university. 9 9 Oppezzo, M., & Schwartz, D. L. (2014). Give your ideas some legs: The positive effect of walking on creative thinking. Journal of Experimental Psychology: Learning, Memory, and Cognition, 40(4), 1142–1152.

Slide 21

Slide 21 text

Work less. Focus on productive time, not hours in your seat.

Slide 22

Slide 22 text

When you look at the world’s wealthiest countries, higher productivity correlates closely with working fewer hours. (OECD Data)

Slide 23

Slide 23 text

Stay hydrated. Water isn’t just for athletes.

Slide 24

Slide 24 text

…mild hypohydration, resulted in an increase in errors during a prolonged, monotonous drive, compared to that observed while performing the same task in a hydrated condition. The magnitude of decrement reported was similar to that observed following the ingestion of alcohol resulting in a blood alcohol content of approximately 0.08 % (the current UK legal driving limit), or while sleep deprived. 10 10 Watson, P., Whale, A., Mears, S. A., Reyner, L. A., & Maughan, R. J. (2015). Mild hypohydration increases the frequency of driver errors during a prolonged, monotonous driving task. Physiology & Behavior, 147, 313–318.

Slide 25

Slide 25 text

Eat well. Brain foods are real.

Slide 26

Slide 26 text

the brain, which represents 2% of our body weight, consumes about 20% of the calories we eat each day. 11 11 Altomare, R., Damiano, G., Palumbo, V. D., Buscemi, S., Spinelli, G., & Cacciabaudo, F. (2017). Feeding the brain: the importance of nutrients for brain functions and health. Progress in Nutrition, 19(3), 1–5.

Slide 27

Slide 27 text

The best studies of the consequences of skipping breakfast have been conducted among children , but the same principles apply to all of us . Hunger at any time has been shown to reduce a child’s ability to pay attention , absorb information , and respond appropriately to the environment. 12 12 Schwartz, Tony. The Way We're Working Isn't Working: The Four Forgotten Needs That Energize Great Performance (p. 94). Free Press. Kindle Edition.

Slide 28

Slide 28 text

Blueberries Nuts Avacados Salmon 13 13 WebMD: Eat Smart for a Healthier Brain

Slide 29

Slide 29 text

Another sore point for the health of the brain is the consumption of junk food, high in saturated fats which are seriously detrimental to the welfare [of the] brain. 14 14 Altomare, R., Damiano, G., Palumbo, V. D., Buscemi, S., Spinelli, G., & Cacciabaudo, F. (2017). Feeding the brain: the importance of nutrients for brain functions and health. Progress in Nutrition, 19(3), 1–5.

Slide 30

Slide 30 text

Defend your day. Protect uninterrupted blocks of time.

Slide 31

Slide 31 text

You know that feeling at the beginning of a day when you look at your calendar and don’t have any meetings or distractions?

Slide 32

Slide 32 text

Group meetings and other day- fragmenting tasks into a single day to save large contiguous blocks of time for deep work the other days.

Slide 33

Slide 33 text

Check email or chat less frequently. Dedicate time for checking and responding to email.

Slide 34

Slide 34 text

E-mail interruptions have a negative time impact upon employees and show that both interrupt handling and recovery time exist. A typical task takes one third longer than undertaking a task with no e-mail interruptions. 15 15 Marulanda Carter, L., & Jackson, T. W. (2012). Effects of e-mail addiction and interruptions on employees. Journal of Systems and Information Technology, 14(1), 82–94.

Slide 35

Slide 35 text

Reduce interruptions—reduce stress. Less stress means more happiness.

Slide 36

Slide 36 text

…interrupted work is performed faster. We offer an interpretation. When people are constantly interrupted, they develop a mode of working faster (and writing less) to compensate for the time they know they will lose by being interrupted. Yet working faster with interruptions has its cost: people in the interrupted conditions experienced a higher workload, more stress, higher frustration, more time pressure, and effort. So interrupted work may be done faster, but at a price. 16 16 Mark, G., Gudith, D., & Klocke, U. (2008). The cost of interrupted work (pp. 107–110). Presented at the Proceeding of the twenty-sixth annual CHI conference, New York, New York, USA: ACM Press.

Slide 37

Slide 37 text

Value and support happiness. Happiness and productivity go hand-in-hand.

Slide 38

Slide 38 text

…our results show that unhappiness makes developers take shortcuts in the process, often leading to low code quality. 17 17 Graziotin, D., Fagerholm, F., Wang, X., & Abrahamsson, P. (2017, January 11). Unhappy Developers: Bad for Themselves, Bad for Process, and Bad for Software Product. arXiv.org. IEEE.

Slide 39

Slide 39 text

Reduce your TTF. (Time-to-flow.)

Slide 40

Slide 40 text

The faster you can get into the zone, the better.

Slide 41

Slide 41 text

Create your ideal focus environment. Many factors influence your ability to concentrate.

Slide 42

Slide 42 text

Private. Quiet. (Or with headphones.) Natural light. (Or not.) Good air quality. Comfortable temperature. Plants. Reduce clutter. Minimize visual distraction.

Slide 43

Slide 43 text

Build habits and rituals. These signals can help you start faster.

Slide 44

Slide 44 text

Build a strong and consistent ritual for starting your day that helps you work towards getting in the zone faster. Let’s look at an example…

Slide 45

Slide 45 text

Get to your development setup quickly. Spend less time open applications and browsing for files.

Slide 46

Slide 46 text

Write scripts and use other tools to reduce the time it takes to get the right applications open. Text editor. Terminal. Version control. Automated tests.

Slide 47

Slide 47 text

Start your day with big or challenging tasks. Don’t waste finite willpower on small or mindless tasks.

Slide 48

Slide 48 text

Starting your day with a big task primes your brain so it can continue working on the problem even if you switch to something else.

Slide 49

Slide 49 text

Plan a little at the beginning and end of your day. Start focused and prepare yourself for the next day.

Slide 50

Slide 50 text

Wrap up your thoughts at the end of the day to help you pick up where you left off when you get started the next day.

Slide 51

Slide 51 text

Leave something broken. Give yourself a clear focus to start your next session.

Slide 52

Slide 52 text

Our brains don’t like to leave things unfinished. Leaving something broken can make it easier to dive right into work when you’re back at your computer.

Slide 53

Slide 53 text

Reduce context- switching.

Slide 54

Slide 54 text

A programmer takes between 10-15 minutes to start editing code after resuming work from an interruption. 18 18 Parnin, C. (2013). Programmer, interrupted (pp. 171–172). Presented at the 2013 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), IEEE.

Slide 55

Slide 55 text

Carefully curate and reduce notifications. They are rarely as important as we like to think they are.

Slide 56

Slide 56 text

Studies have shown that responding to notifications impedes the efficient resumption of interrupted tasks and negatively impacts task performance. A proposed solution is to relinquish notifications and allow users to seek for information at their own convenience. 19 19 Iqbal, S. T., & Horvitz, E. (2010). Notifications and awareness (pp. 27–30). Presented at the the 2010 ACM conference, New York, New York, USA: ACM Press.

Slide 57

Slide 57 text

Identify and monitor distractions. You can’t reduce what you’re not aware of.

Slide 58

Slide 58 text

Use Rescuetime to learn your distraction triggers and quantify productivity. Pay attention to what does and doesn’t work. What creates problems? Can you make changes?

Slide 59

Slide 59 text

Don’t keep your phone in your work area. Or at least turn it off.

Slide 60

Slide 60 text

Don’t distract yourself. You can be your own worst enemy.

Slide 61

Slide 61 text

We also found that individuals seated in open office environments self- interrupted at a substantially higher rate. 20 20 Dabbish, L., Mark, G., & Gonzalez, V. M. (2011). Why do i keep interrupting myself? (pp. 3127–3130). Presented at the the 2011 annual conference, New York, New York, USA: ACM Press.

Slide 62

Slide 62 text

Clear your mind of other tasks. It’s difficult to concentrate with other tasks nagging your brain.

Slide 63

Slide 63 text

Your mind only has so much working space. This is why one of the main goals of GTD (Getting Things Done) is recording things to get them out of your head so you can focus.

Slide 64

Slide 64 text

Do fewer simultaneous projects. Less bouncing between projects.

Slide 65

Slide 65 text

Context-switching within a project or to a similar type of task on a different project can work, but minimize switching frequently between significantly different projects by working on few projects at any given time.

Slide 66

Slide 66 text

Do less. Don’t spread yourself thin.

Slide 67

Slide 67 text

It’s easier said than done, but simply saying no to projects is the best way to reduce context- switching.

Slide 68

Slide 68 text

Automate more. Reduce the need to switch tasks at all.

Slide 69

Slide 69 text

You’re not automating a 15 second task. You’re reducing the 15 minutes of context-switching overhead for each time you perform the task.

Slide 70

Slide 70 text

Automate tasks that are painful. Reducing unhappiness is a productivity win.

Slide 71

Slide 71 text

Get better at context- switching.

Slide 72

Slide 72 text

You can’t remove 100% of interruptions or distractions, so get good at handling them efficiently.

Slide 73

Slide 73 text

In only a small percentage of sessions did developers resume coding in less than a minute. Developers consistently spend a significant portion of their time doing non-editing activities before making their first edit in a session. During this time period, developers are performing a variety of activities that relate to rebuilding their task context. 21 21 Parnin, C., & Rugaber, S. (2010). Resumption strategies for interrupted programming tasks. Software Quality Journal, 19(1), 5– 34.

Slide 74

Slide 74 text

Switch strategically. Sometimes you just need to switch gears.

Slide 75

Slide 75 text

Sometimes you hit walls. Recognize when switching gears to a different or related task can help you see things from a fresh perspective and find the solution to a problem. Your brain will still work on the problem in the background.

Slide 76

Slide 76 text

Break large tasks into smaller, related tasks. Your brain likes completing tasks. So completing a higher number of small tasks helps.

Slide 77

Slide 77 text

The feeling of accomplishment encourages you to keep going, and you have more natural stopping points to recharge. Your brain is also less overwhelmed and thus less inclined to need a break at the wrong time.

Slide 78

Slide 78 text

Avoid switching to cognitively different tasks. Try to keep your work on the same type of task or a closely related task.

Slide 79

Slide 79 text

e.g. Don’t switch between writing code and manual testing. Or don’t switch between writing documentation and coding.

Slide 80

Slide 80 text

Be slower to switch. Take a few moments to collect your thoughts and mentally save your working state.

Slide 81

Slide 81 text

…a brief interruption lag of a few seconds can facilitate resumption, by allowing an opportunity to lay the cognitive groundwork for returning to the primary task later. 22 22 Trafton, J. G., Altmann, E. M., Brock, D. P., & Mintz, F. E. (2003). Preparing to resume an interrupted task: effects of prospective goal encoding and retrospective rehearsal. International Journal of Human-Computer Studies, 58(5), 583–603.

Slide 82

Slide 82 text

Reduce error- based distractions.

Slide 83

Slide 83 text

You can’t avoid every mistake, but making fewer mistakes and/or recovering faster can give you more productive time.

Slide 84

Slide 84 text

Slow down. Working faster increases mistakes.

Slide 85

Slide 85 text

Add automated tests. Catch mistakes while your mind is still thinking about the problem.

Slide 86

Slide 86 text

There’s simply some things computers are really good at, and automatically checking for errors on your behalf is one of them. Writing tests also helps you analyze your code. Then the computer can do the tedious part.

Slide 87

Slide 87 text

Don’t deploy on a Friday. Weekends are for recharging. Don’t risk losing that.

Slide 88

Slide 88 text

It’s bad enough having to fix a broken deploy on the weekend, but this is also cutting into your rest that you need to be at your best. Take rest seriously and maximize your chances of getting enough by not deploying before time off.

Slide 89

Slide 89 text

Get good at debugging. Build context faster and find the problem faster.

Slide 90

Slide 90 text

Avoiding mistakes is great, but fixing them quickly and seamlessly is the next best thing. The better you are at debugging, the less time you’ll spend searching for answers when something breaks.

Slide 91

Slide 91 text

Always be refactoring. Cleaner and more readable code benefits everyone’s productivity.

Slide 92

Slide 92 text

While refactoring can slow you down in the short-term, if you’re in the middle of work and notice a meaningful opportunity for refactoring, set aside some time after you complete your task to make improvements.

Slide 93

Slide 93 text

Make the most of tools.

Slide 94

Slide 94 text

Make tools earn their keep. Just because a tool is supposed to increase productivity doesn’t mean it is.

Slide 95

Slide 95 text

Always question the net productivity of your tools over the long-term. (But don’t confuse a learning curve with a lack of productivity.)

Slide 96

Slide 96 text

Cut tools ruthlessly. Fewer tools means fewer areas for issues.

Slide 97

Slide 97 text

While you can’t always be switching tools, removing tools can reduce the surface area for things to break. You're never adding just one thing to your stack but all of the dependencies as well.

Slide 98

Slide 98 text

Move up the chain. Higher-level tools can save you from plumbing distractions so you can get more done.

Slide 99

Slide 99 text

Just like a high-level programming language can be more efficient than Assembly, taking the time to migrate to and learn higher-level tools can improve efficiency as well.

Slide 100

Slide 100 text

Fix or fire unreliable tools. Be honest about whether a tool might be harming your productivity more than helping.

Slide 101

Slide 101 text

…developers found especially unpleasant those interrupts caused by failure or insufficient knowledge of development tools. Even though few such interrupts occurred, the developers spent much effort handling them. Therefore, they suggested focusing special attention on keeping the tool environment running and providing adequate tool training. 23 23 van Solingen, R., Berghout, E., & van Latum, F. (1998). Interrupts: just a minute never is. IEEE Software, 15(5), 97–103.

Slide 102

Slide 102 text

Learn your tools forwards and backwards. When you use a tool regularly, the more second nature it is, the less distracting it will be.

Slide 103

Slide 103 text

If you are a heavy user of a given tool, make time to watch tutorials and learn more about how you can use the tool better with less effort.

Slide 104

Slide 104 text

Use tools to improve efficiency. Get thing things done faster and with fewer keystrokes.

Slide 105

Slide 105 text

Creating convenient bookmarks for frequently-accessed URLs and tools, and use tools like textexpander and Alfred to improve efficiency and reduce the need to look up frequently used resources.

Slide 106

Slide 106 text

Use tools to help with focus. Tools can help build and strengthen habits.

Slide 107

Slide 107 text

Tools like Focus and tools that support the Pomodoro technique can help alternate between intense focus and short breaks.

Slide 108

Slide 108 text

Improve communication.

Slide 109

Slide 109 text

Go asynchronous. Chat is the anti-productivity tool.

Slide 110

Slide 110 text

No content

Slide 111

Slide 111 text

Be slow to rely on chat. It's more productive for you in the moment, but it's likely counter-productive for the recipient of the chat.

Slide 112

Slide 112 text

Turn to email instead of chat or phone calls whenever possible. This frees the recipient to handle and respond at a time that doesn’t break their concentration.

Slide 113

Slide 113 text

Respect each other. Strive to reduce distractions for your team members.

Slide 114

Slide 114 text

Don’t slide into someone’s DM’s with “hey.” Provide a detailed description of what you need so they can decide whether it’s urgent relative to what they’re working on.

Slide 115

Slide 115 text

Could you send an email and switch to a different, but still productive, task while you wait for the answer?

Slide 116

Slide 116 text

We found that external interruptions experienced in the previous hour significantly increase the incidence of self interruption in the subsequent hour. 24 24 Dabbish, L., Mark, G., & Gonzalez, V. M. (2011). Why do i keep interrupting myself? (pp. 3127–3130). Presented at the the 2011 annual conference, New York, New York, USA: ACM Press.

Slide 117

Slide 117 text

Extensively document your question or challenge. You’ll often answer your own question.

Slide 118

Slide 118 text

Frequently, the process of documenting and explaining your question will help you uncover the answer without interrupting someone else.

Slide 119

Slide 119 text

Improve documentation. When documentation answers questions, people don’t have to interrupt others.

Slide 120

Slide 120 text

…approximately 25 percent of all interrupts were caused by issues related to knowledge or experience, such as discussing program structures or explaining technical details. Further, 20 percent were caused by documentation issues, such as documentation review and inadequate or nonexistent documentation. 25 25 van Solingen, R., Berghout, E., & van Latum, F. (1998). Interrupts: just a minute never is. IEEE Software, 15(5), 97–103.

Slide 121

Slide 121 text

Shorten, consolidate, and reduce meetings. Meetings are multipliers since they involve multiple people.

Slide 122

Slide 122 text

Fewer meetings means fewer instances of “What do I do with this 15 minutes before a meeting?” (Multiplied by the number of attendees.)

Slide 123

Slide 123 text

Encourage a default of 15 minutes for meetings instead of an hour, and require that everyone seriously prepare for meetings ahead of time.

Slide 124

Slide 124 text

Take care with commit messages and revision histories. More informative histories serve as key documentation down the road.

Slide 125

Slide 125 text

Version control commit messages and histories are their own form of historic documentation that can great increase understanding when team members need to make modifications in the future.

Slide 126

Slide 126 text

In summary…

Slide 127

Slide 127 text

Take care of yourself. You can’t focus if you can’t function.

Slide 128

Slide 128 text

Focus faster. Take steps to reduce friction for getting into the zone.

Slide 129

Slide 129 text

Reduce context-switching. The less you switch, the easier it is to focus.

Slide 130

Slide 130 text

Get better at context-switching. You can’t eliminate it, but you can be better at it.

Slide 131

Slide 131 text

Reduce error-based distractions. The more you can focus, the less you’ll have to fix.

Slide 132

Slide 132 text

Become one with your tools. Ditch the counter-productive ones and get great with the important ones.

Slide 133

Slide 133 text

Improve communication. Become more efficient, and minimize interrupting each other.

Slide 134

Slide 134 text

Like how we think? Read the whole book for free. Or come check out Conveyor.

Slide 135

Slide 135 text

No content