Agile techniques and their derivatives ( lean , kanban, lean startup, etc ) focus on how to make software development more productive and valuable to end users and customers. But, is all the ceremony and process missing a more basic point about individual team member productivity?
Work backwards from goals to milestones to tasks. Writing “launch company website” at the top of your to-do list is a sure way to make sure you never get it done. Break down the work into smaller and smaller chunks until you have specific tasks that can be accomplished in a few hours or less: Sketch a wireframe, outline an introduction for the homepage video, etc. That’s how you set goals and actually succeed in crossing them off your list.
Stop multitasking. No, seriously—stop. Switching from task to task quickly does not work. In fact, changing tasks more than 10 times in a day makes you dumber than being stoned. When you’re stoned, your IQ drops by five points. When you multitask, it drops by an average of 10 points, 15 for men, five for women (yes, men are three times as bad at multitasking than women).
Be militant about eliminating distractions. Lock your door, put a sign up, turn off your phone, texts, email, and instant messaging. In fact, if you know you may sneak a peek at your email, set it to offline mode, or even turn off your Internet connection. Go to a quiet area and focus on completing one task.
Schedule your email. Pick two or three times during the day when you’re going to use your email. Checking your email constantly throughout the day creates a ton of noise and kills your productivity.
Use the phone. Email isn’t meant for conversations. Don’t reply more than twice to an email. Pick up the phone instead.
Work on your own agenda. Don’t let something else set your day. Most people go right to their emails and start freaking out. You will end up at in box-zero, but accomplish nothing. After you wake up, drink water so you rehydrate, eat a good breakfast to replenish your glucose, then set prioritized goals for the rest of your day.
Work in 60 to 90 minute intervals. Your brain uses up more glucose than any other bodily activity. Typically you will have spent most of it after 60-90 minutes. (That’s why you feel so burned out after super long meetings.) So take a break: Get up, go for a walk, have a snack, do something completely different to recharge. And yes, that means you need an extra hour for breaks, not including lunch, so if you’re required to get eight hours of work done each day, plan to be there for 9.5-10 hours.
Scrum pushes for eliminating distractions, breaking down work into meaningful tasks, and time boxing work...echoing many of Tony's points. But, Tony makes the assertion that having a personal set of work standards is necessary for all professionals. What are considered to be the best work practices for software development teams? What habits do great software developers internalize?
Several sites, blogs and a LinkedIn conversation on the web give their list of good habits for software development, here is a sampling:
When reading through these sites one is struck by how much focus is given to the technical side of a developer's responsibilities. Things like: “Assume the code doesn't work until it's proven to work”, “Problem Solving”, “Curiosity”, “Keep your code clean”, “Simplicity of Design”, “Understand the Problem” and “Check the internet first, before coding something” litter these sites and conversations.
While these are probably salient points for any developer, Tony Wong's list may be more practical and direct in terms of work productivity and may even contradict the lists given by others on the best habits of software developers.
So what are your thoughts? What things tend to distract developers? Are the habits that make other professionals productive anathema to the profession of software development? Do processes ( agile or otherwise ) hide individual developer ineffectiveness? How do you keep your individual yield strong and valued?