Distractions Diminish Developer Effectiveness
Use Your Developer Wisely
by D1J1T — in Management — Updated: Mar 4, 2014 at 9:34 am
Serious programmers need solid blocks of time to produce at their best.
Speaking from experience, some of my most productive work has been accomplished in the evening.
Every distraction, be it a phone call, a web chat ping from a co-worker, a web conference or meeting
(also the time required right before to properly prepare to present specifics), random office chatter,
helping co-workers, answering questions, time required for quoting/estimating/documentation/logging time/and
other non-programming or development specific tasks, a cute girl walking by the water cooler, or
probably the worst of all, responding to emails are all serious distractions.
If you're developers are working in 20 or 30 minute blocks of time and tackling other tasks throughout, you're simply not getting the most for your money out of them. Certainly everyone has to "wear many hats" in small businesses in particular. Still, would you rather have 1) the job done in the budget outlined by the developer initially or 2) have that developer thoroughly updating clients, giving their input for potential new business, attending meetings, fielding calls, helping training others, keeping logs, spreadsheets, estimates, and other documents updated/neat/tidy? All of these are important of course, but by forcing developers into multiple work efforts, you minimize the productiveness of each effort. For the time spent where developers are taken off task, are re-tasked, and/or aren't developing, it is often more cost-effective to promote that developer to oversee all of these vitals and/or hire another developer as well to pick up actual development. If your company has more work than it can handle, great! Know when its vital to invest further in labor instead of more marketing.
Everyone gets distracted, what's so special about programmers?
I am at the point where I simply don't answer the phone, web pings, or emails while I'm working. Sure, distraction affects everyone. I mean not to put programmers/developers on any pedestal here, though it should be known that their skills often do, in my opinion, require more focus than many professions in order to produce most efficiently. Let's consider the effect of distraction on some other positions first:
- Management: Usually handling multiple tasks, hence the distraction can be minimal or huge depending.
- Sales: If on a call/meeting, distractions can be severely detrimental, if not, the distraction should have minimal consequences.
- Secretarial: Distractions are commonplace and in a sense, part of the job. Hopefully the company doesn't overload this individual with too many tasks...
- Data Entry Personnel: Can typically quickly pick up where they left off, no matter which application they are using.
- Tech Writers: Can see/already know/or find quickly where they left off in the document.
- Graphics Artist: Though they may be toggling applications, when they come back to their task(s), they see the last object/graphic/app they were working with and can usually pick back up where they left off rapidly.
- Quality Assurance: They may have to find the location where they left off in the current document.
- Accounting: May have to review/re-calculate the current file/documents they were using to ensure accuracy.
- I use multiple machines/devices to test regularly.
- I have roughly 15 browser tabs open at any given time for research, not to mention other browsers (also with multiple tabs of course) running for testing.
- I have roughly the same amount of applications running that I alt-tab back and forth from, most of which have many, many files/windows/tabs open within them. (main IDEs for the languages I'm currently working with, database software, several different graphics/video/audio editing applications, FTP client, server/backup software, helper apps, debugging & other consoles, not to even mention typical, standard general office software.) The more projects I toggle, the more applications/files I have open.
- At any given time, no matter what application(s), I'm working with many different files, if not also many different applications.
- Often, especially when debugging, I have to trace variables, methods/functions, classes/files through these multiple files and store (and be able to fetch from my brain RAM) certain data, logic, and sequences.
- I often toggle apps to make a quick change on a graphic or audio file, to re-upload files, make a database change, etc and then go back to my code to make a change, and then in turn, refresh/reload other files to see the result.
- I'm not just working with a Word document in English, or just with numbers, rather multiple programming languages combined, along with the English language (yes, I correct misspelling/grammar when I catch it of course), along with all necessary application software used to edit and test, along with the math and logic as well.
Take the following scenario as and example of what happens when distractions occur. Imagine yourself working with all of the above while at the same time keeping in your mind certain specifics (line/file/class locations of certain variables or functions, file names, file/server locations, the fact that "graphic x needs to be resized", and/or "audio file y isn't playing, though is loaded and called to in the proper function foo"), and/or "need to add another field in the database for table z, and oh yeah, update all files calling to that table accordingly." You're into your code, enjoying it, noting/fixing issues as you work on expanding the whole framework, and making improvements and fixing issues as they arise. NO, you don't stop to call an editor about an obvious error; you just fix it and move on. Nor do you call a graphics artist about a graphic in the wrong format, you just fix it and keep working. Despite others may have to call them, you don't because you know the fix already, you just implement it!
Then you get distracted. Right before this distraction, you have certain data, code lines, variables, methods, ideas, files etc in your mind. After the distraction, you may be able to remember half of what you were thinking, if you're lucky. You're now discouraged and sigh. You've lost the immediate drive, excitement, satisfaction from making good progress rapidly, and your general work flow. Instead of picking right back up where you left off, you stop and think: "hmm, what's the next major section I should update/fix." You end up re-evaluating the application state and where you were in it. You re-compile. "Oh yeah, I should fix that function. You start to do so, but not with the motivation you had before, and you've lost the tree structures, sequences, certain bits of logic, data and also some general thoughts that you had prior to the distraction.
An simplified analogy may be to imagine a chess game. It's a good one, nearly tied, and about 2/3 the way through. It's your turn, you have studied the current board. Then you get distracted. Even if its short, some re-evaluation will be required before making your move.
Whether programmers have their editor maximized with the cursor at the last line they were working on, or their graphic software with the last image they edited, or that audio file/app, or a database admin GUI, or they were researching a specific detail of a technology, they have to pick it all back up. If most programmers are like myself, they get into a "zone" or "flow" with their work, get annoyed when distracted, and most importantly, it can take them time to get back into that steady, productive "groove." That time is wasted money.
If you find these articles to be helpful, I could always use another cup of coffee! Social media likes/+1s are also much appreciated. Thanks for reading!