Friday, October 16, 2009
Goals, Results and Activities - defining your productivity
I think that it is important to properly define the terms that we use when talking about productivity. Since these words are somewhat subjective it matters more that you have a specific definition that you can refer to periodically than to agree with everybody else on the specific terms and definitions.
I use the words Goals, Results and Activities.
A quick definition might be that a Goal is a long-range target. A result helps you, your company or your team succeed. Activities are the smallest unit of work that helps accomplish a result or goal.
You can think of an activity as a single step in a journey. It always takes work to make a step, but the step does not always get you closer to your goal. Of course the lesson is to check your compass and map periodically to make sure you’re always going in the right direction.
Goals
Goals are long ranging strategic targets. They can be self created or defined by your manager or company. An example of a strategic company or team goal might be "Be profitable in Q3" or "Ship Version 3.5 of our Product." We define goals so that each individual to look up from their daily tasks and see how it fits in with the goal. This helps people know when they’re on track and helps them feel like their making a difference and not just a "cog in a wheel."
Personal Goals are a very important piece of my happiness. When I can accomplish a personal goal or can see myself making progress on a personal goal it gives me great satisfaction. Personal goals don’t have to be anything more than something you’d like to do. I can give examples of personal goals, but it is important for you to find your own passion. For me it is to Run a Marathon, Compete in an Olympic distance Triathlon and help my non-profit, Technically Learning, meet our donation goal this year.
Results
Results are all about impact. The best results have the highest impact. Impact can be defined by how much closer completing that result will get you to the goal. I’d like to dedicate an entire blog entry to getting results, but for now let’s move on to tasks.
Tasks
We define our tasks by splitting up larger blocks of work. We can then prioritize those tasks by what will give us the best results and the greatest impact. It is important to reflect daily on your task list to make sure the tasks you are completing still align with getting the best results and align with the overall goal. Don’t get so focused on the individual tasks that you lose site of the goal. Tasks are meaningless if they don’t get the results.
Have you ever known anybody that seems to be constantly busy or overwhelmed but never seems to accomplish anything? They may be simply choosing the wrong tasks and by the time they’ve completed their task list, the goal has changed and their work is lost.
Remember: high activity does not necessarily imply high impact.
I use the words Goals, Results and Activities.
A quick definition might be that a Goal is a long-range target. A result helps you, your company or your team succeed. Activities are the smallest unit of work that helps accomplish a result or goal.
You can think of an activity as a single step in a journey. It always takes work to make a step, but the step does not always get you closer to your goal. Of course the lesson is to check your compass and map periodically to make sure you’re always going in the right direction.
Goals
Goals are long ranging strategic targets. They can be self created or defined by your manager or company. An example of a strategic company or team goal might be "Be profitable in Q3" or "Ship Version 3.5 of our Product." We define goals so that each individual to look up from their daily tasks and see how it fits in with the goal. This helps people know when they’re on track and helps them feel like their making a difference and not just a "cog in a wheel."
Personal Goals are a very important piece of my happiness. When I can accomplish a personal goal or can see myself making progress on a personal goal it gives me great satisfaction. Personal goals don’t have to be anything more than something you’d like to do. I can give examples of personal goals, but it is important for you to find your own passion. For me it is to Run a Marathon, Compete in an Olympic distance Triathlon and help my non-profit, Technically Learning, meet our donation goal this year.
Results
Results are all about impact. The best results have the highest impact. Impact can be defined by how much closer completing that result will get you to the goal. I’d like to dedicate an entire blog entry to getting results, but for now let’s move on to tasks.
Tasks
We define our tasks by splitting up larger blocks of work. We can then prioritize those tasks by what will give us the best results and the greatest impact. It is important to reflect daily on your task list to make sure the tasks you are completing still align with getting the best results and align with the overall goal. Don’t get so focused on the individual tasks that you lose site of the goal. Tasks are meaningless if they don’t get the results.
Have you ever known anybody that seems to be constantly busy or overwhelmed but never seems to accomplish anything? They may be simply choosing the wrong tasks and by the time they’ve completed their task list, the goal has changed and their work is lost.
Remember: high activity does not necessarily imply high impact.
Labels: goals, productivity, results, tasks
Tuesday, October 13, 2009
10/GUI User Interface re-imagined
I just came across this video of a new multi-touch OS that I think is pretty interesting. It's called 10/GUI. The designers tried to imagine what the Operating System would look like if designed for ten points of input instead of a single mouse pointer. What they came up with is a type of window manager that puts each window side by side, in a long strip. Using gestures you can zoom in and out as well as reorganize the windows.
I find this sort if thought experiment intriguing, but I'm not convinced they've landed on the right solution yet. This works well for a small screen, such as you'd find on a laptop, but I can't imagine it on my 26 inch monitor. I like to organize my windows in a horizontal and vertical tiling layout. I also switch between multiple windows or have multiple windows up at the same time, I think this may be confusing if switching between more than a couple windows. Finally, what about multi-monitor setups? In my office I use between two and four monitors at any time. Would you have a single strip that would link all the monitors together?
Here's the video, I think it's an incredibly interesting idea. I also like that they didn't replace the keyboard with a surface, yet.
10/GUI from C. Miller on Vimeo.
I find this sort if thought experiment intriguing, but I'm not convinced they've landed on the right solution yet. This works well for a small screen, such as you'd find on a laptop, but I can't imagine it on my 26 inch monitor. I like to organize my windows in a horizontal and vertical tiling layout. I also switch between multiple windows or have multiple windows up at the same time, I think this may be confusing if switching between more than a couple windows. Finally, what about multi-monitor setups? In my office I use between two and four monitors at any time. Would you have a single strip that would link all the monitors together?
Here's the video, I think it's an incredibly interesting idea. I also like that they didn't replace the keyboard with a surface, yet.
10/GUI from C. Miller on Vimeo.
Labels: GUI, Multi Touch, User Interface
Sunday, October 11, 2009
I Code in my Freetime
I just read Ted Dziuba’s blog on not programming on his spare time. His point is interesting, but I don’t think he expressed it very well. For any readers out there, I think I should first put this entry in a bit of context. I program all the time. I am constantly writing little tools, websites, learning new technologies (my blog entry on Ruby on Rails was posted at near midnight), and getting excited about the next new thing. Just ask my wife, while she’s checking Perez Hilton; I’m reading a programming guide.
I deeply believe there is a balance in work and life. I believe a person should do as much of what makes them happy as possible. I’m writing this in between a run and a bike ride to a climbing gym, for example. However, people tend to do things that they enjoy and that makes them happy in their free time.
What makes me happy? Learning things.
I’ve known for quite some time that my biggest hurdle wasn’t discovering what I found interesting so I could pursue that as a career, but rather focusing my energies on something that I could really make a difference in and that was really inspiring to me. The things that I gravitate toward are usually challenging and represent a huge learning curve. I attribute my attraction to this somewhat to our natural tendency for seeking.
I don’t know Ted, and I don’t want to put words in his mouth, but I think what Ted was trying to say is that it’s important to balance your outside work activities and understand when others have different habits than you.
Would I hire somebody that doesn’t program outside of work? Absolutely.
Would I ask in an interview what they like to do with their free time? Of course I would.
Part of working for my company, Security Innovation, is fitting in with our company culture, and part of that is sharing common interests. We tend to work long hours and I wouldn’t want to spend 10-14 hours per day with somebody I didn’t have anything in common with. I also want to know that they’re interested in what they’re doing and that they are doing what they love. These people tend to work harder, learn faster and do better work than people that don’t enjoy what they do, in my experience.
So I guess my big lesson from all of this is just take all things in balance. Just because somebody programs with all their time, or knows every bit of security knowledge doesn’t make them a good hire. Conversely, though, being excited about what you do with the majority of your life is a very important thing.
I deeply believe there is a balance in work and life. I believe a person should do as much of what makes them happy as possible. I’m writing this in between a run and a bike ride to a climbing gym, for example. However, people tend to do things that they enjoy and that makes them happy in their free time.
What makes me happy? Learning things.
I’ve known for quite some time that my biggest hurdle wasn’t discovering what I found interesting so I could pursue that as a career, but rather focusing my energies on something that I could really make a difference in and that was really inspiring to me. The things that I gravitate toward are usually challenging and represent a huge learning curve. I attribute my attraction to this somewhat to our natural tendency for seeking.
I don’t know Ted, and I don’t want to put words in his mouth, but I think what Ted was trying to say is that it’s important to balance your outside work activities and understand when others have different habits than you.
Would I hire somebody that doesn’t program outside of work? Absolutely.
Would I ask in an interview what they like to do with their free time? Of course I would.
Part of working for my company, Security Innovation, is fitting in with our company culture, and part of that is sharing common interests. We tend to work long hours and I wouldn’t want to spend 10-14 hours per day with somebody I didn’t have anything in common with. I also want to know that they’re interested in what they’re doing and that they are doing what they love. These people tend to work harder, learn faster and do better work than people that don’t enjoy what they do, in my experience.
So I guess my big lesson from all of this is just take all things in balance. Just because somebody programs with all their time, or knows every bit of security knowledge doesn’t make them a good hire. Conversely, though, being excited about what you do with the majority of your life is a very important thing.
Labels: coding, development, free time
Friday, October 9, 2009
Stuffed Grilled Pork Chop
We started out with bruscetta. I sliced a baguette drizzled olive oil on each slice and broiled them until brown. I topped each one with a red and yellow pepper tapenade.
For the main course I served sauteed carrots with rosemary, stuffed grilled pork chop and carbonara pasta.
Sauteed Rosemary Carrots
The carrots were delicious; they were from our CSA and since it's harvest time they were perfectly ripe and flavorful. I sliced quartered them and sauteed them over high heat for a few minutes with olive oil, salt and rosemary.
Stuffed Grilled Pork Chop
To cook these start with the following:
- Four thick cut boneless pork chops
- 2 oz. thinly sliced pancetta
- 4 oz. provolone cheese
Heat a heavy cast iron grill pan to medium-high heat. Place two grill presses in the pan to heat them. Meanwhile slice each pork chop almost in half lengthwise and layer two slices of pancetta between the slices of pork and one slice of provolone cheese. When the pan is hot lay each stuffed pork chop in the pan and set the grill presses on top. Cook the pork chop until done, but be careful not to overcook. If your cheese runs out completely it's too warm. Don't be afraid of a little pink in your pork. If you overcook it the pork will be dry, tough and flavorless.
Pasta Carbonara
I didn't make up the Carbonara recipe, I got it out of one of my Italian cookbooks, but Giada De Laurentiis seems to have a good recipe for it. Take a look, if you have luck with the recipe let me know.
Thursday, October 8, 2009
Time Management with the Pomodoro Technique
About 6 months ago it seemed like the internet was infatuated with a new time management technique called "Pomodoro." Developed by Francesco Cirillo, The Pomodoro Technique is a good way to increase focus, manage time and improve time estimations. If you're curious, the term "Pomodoro" comes from the Italian word for tomato, which is the type of kitchen timer the author of the technique used to time his sessions, more on this later.
The Pomodoro technique taps into a few important principles to help increase focus and results:
The cycle of the pomodoro technique goes like this.
Does this really work? I've found that this works well for me when working on certain types of tasks, but like almost any time management technique I've had to modify it for my own uses.
It works when I am writing, testing or reviewing. I think it works with these classes of problems because I don't need to hold enormous amounts of information in my memory, and taking short breaks periodically allows me to step back and reframe the issue I'm working on for added clarity.
When I have a task that I estimate should take an hour I will sometimes use a single pomodoro to complete the task in half the time. I've found when all distractions are removed that this 50% estimation is fairly accurate.
I've found this can be very distracting when I find myself solving large problems, while programming complex systems, or need to keep a large amount of information in my head. All this thrashing every 25 minutes only serves to defocus me. Stopping every 25 minutes makes it nearly impossible to enter into a "flow state" which can increase productivity significantly. If I find myself in that kind of a state, and I'm feeling good I won't take a Pomodoro break. I'll pop my head up four or five hours later to discover I've made significant headway on all my tasks.
Just think how well you work when right at the end of a major deadline. The Pomodoro Technique attempts to tap into that focus (or frenzy) and allow you to harness it all day. Give it a shot for a few days, maybe you'll find a source of energy and focus you never knew you had.
The Pomodoro technique taps into a few important principles to help increase focus and results:
- We can attain a laser-like focus for a short period of time, after that time focus deteriorates and results diminish
- Minimizing distractions is paramount for finding a flow state
- Taking short breaks can help increase focus
- Using a prioritized task list helps minimize downtime due to task selection between tasks
The cycle of the pomodoro technique goes like this.
- Create a Priority weighted task list.
- Select the first task, set a timer for 25 minutes, and begin working on it.
- Turn off all distractions. No phone, e-mail, IM. Close your door and focus.
- At the end of 25 minutes stop working completely. Pencils down; like at the end of a gradeschool test
- Walk away from the task and do something else unrelated and calming for 5 minutes
- This means no checking e-mail, phones, etc. Go play with the dog, or get a glass of water.
- At the end of the 5 minutes,
- Return to your desk
- Place a checkmark next to the task you were working on, on your task list
- Set your timer for 25 minutes
- Return to your task and continue working with laser like focus for 25 minutes
- If you complete a task draw a line through the entire task on your sheet
Does this really work? I've found that this works well for me when working on certain types of tasks, but like almost any time management technique I've had to modify it for my own uses.
It works when I am writing, testing or reviewing. I think it works with these classes of problems because I don't need to hold enormous amounts of information in my memory, and taking short breaks periodically allows me to step back and reframe the issue I'm working on for added clarity.
When I have a task that I estimate should take an hour I will sometimes use a single pomodoro to complete the task in half the time. I've found when all distractions are removed that this 50% estimation is fairly accurate.
I've found this can be very distracting when I find myself solving large problems, while programming complex systems, or need to keep a large amount of information in my head. All this thrashing every 25 minutes only serves to defocus me. Stopping every 25 minutes makes it nearly impossible to enter into a "flow state" which can increase productivity significantly. If I find myself in that kind of a state, and I'm feeling good I won't take a Pomodoro break. I'll pop my head up four or five hours later to discover I've made significant headway on all my tasks.
Just think how well you work when right at the end of a major deadline. The Pomodoro Technique attempts to tap into that focus (or frenzy) and allow you to harness it all day. Give it a shot for a few days, maybe you'll find a source of energy and focus you never knew you had.
Labels: productivity, time management
Wednesday, October 7, 2009
Musings on a ComboBox
I just spent a good half an hour debugging a control I thought I had a pretty good handle on, the ComboBox.
In .NET 3.5 we have a really neat control called the ComboBox, it's a bit of a textbox, and a bit of a dropdown list box. However the eventing seems a little wonky.
I had the following code:
Seems simple enough, right? I'm just grabbing whatever the user just selected out of the dropdown (which happens to be a file in my case) and read that file and populate a textbox with the new value. When there was already text in the text box I'd display up a MessageBox warning the user I'm about to blow away the existing text.
Here's the interesting part, when there was text in the TextBox already (so I displayed the MessageBox) everything worked as expected. However, when there was no text in the TextBox I always got the previous value of the ComboBox, as if the ComboBox hadn't updated its state yet. This occurred if I removed all the MessageBox code and just tried to set read the filetext directly.
The fix? Get the newly SelectedIndex of the ComboBox directly, lookup the value of the item that's selected from the Items list, store that value in a string and reference that throughout.
Final Code:
If you see something I missed, please let me know in the comments. I am a firm believer in clean code and would love to learn how to make this better.
In .NET 3.5 we have a really neat control called the ComboBox, it's a bit of a textbox, and a bit of a dropdown list box. However the eventing seems a little wonky.
I had the following code:
private void MyComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(TargetBox.Text))
{
if (MessageBox.Show("There is text in the request textbox, do you want to replace this?",
"Replace Text?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.Yes)
{
TargetBox.Text = File.ReadAllText(MyComboBox.SelectedText);
}
}
else
if (!string.IsNullOrEmpty(MyComboBox.SelectedText))
TargetBox.Text = File.ReadAllText(MyComboBox.SelectedText);
}
Seems simple enough, right? I'm just grabbing whatever the user just selected out of the dropdown (which happens to be a file in my case) and read that file and populate a textbox with the new value. When there was already text in the text box I'd display up a MessageBox warning the user I'm about to blow away the existing text.
Here's the interesting part, when there was text in the TextBox already (so I displayed the MessageBox) everything worked as expected. However, when there was no text in the TextBox I always got the previous value of the ComboBox, as if the ComboBox hadn't updated its state yet. This occurred if I removed all the MessageBox code and just tried to set read the filetext directly.
The fix? Get the newly SelectedIndex of the ComboBox directly, lookup the value of the item that's selected from the Items list, store that value in a string and reference that throughout.
Final Code:
private void MyComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
string selectedFile = MyComboBox.Items[MyComboBox.SelectedIndex].ToString();
if (!string.IsNullOrEmpty(TargetBox.Text))
{
if (MessageBox.Show("There is text in the request textbox, do you want to replace this?",
"Replace Text?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.Yes)
{
TargetBox.Text = File.ReadAllText(selectedFile);
}
}
else
if (!string.IsNullOrEmpty(selectedFile))
TargetBox.Text = File.ReadAllText(selectedFile);
If you see something I missed, please let me know in the comments. I am a firm believer in clean code and would love to learn how to make this better.
Labels: .NET, coding, development
Friday, October 2, 2009
Manage Energy, not Time
Recently I was forced to work only 6 hours per day. On the surface this seems great, I immediately started filling my time with other things that I've wanted to get around to, but never felt I had the time for because of my busy 10-12 hour per day work schedule. That excitement quickly moved way to fear, fear not getting as much done, fear of losing clients or projects due simply to not having enough hours to work in a day.
Nevertheless as I mentioned earlier, this wasn't necessarily my choice, so the experiment began.
Week one went by, no apparent loss of productivity.
Week two, again, no apparent loss of productivity.
What's going on?
After a few weeks I decided to look into what was really happening. I found myself focusing much more acutely on my tasks at hand. I pushed out any non-work related distractions from my mind and more importantly inbox and really focused on what I needed to complete by the end of the day.
I also tapped into the natural ebb and flow of my daily energy cycles. I realize that sounds like some kind of new age crystal energy management technique, but it's really not. I discovered that I found myself most productive in the mornings, between 8:30 AM and lunch, generally right after I have my coffee. I feel like I can accomplish anything during those hours. I could review the most boring document, find and fix pedantic bugs, deploy to a server, or slog through hundreds of XML log files looking for a potential vulnerability. I can do all of this and stay focused, and stay sharp because this is the time when my mind is most active.
After lunch however I've found that I have a far harder time focusing on a task, especially if it is one that I don't find particularly interesting. After lunch it's much harder to find my "flow" and get things done. (side note: my wife has recently started a partial raw foods diet. I've found eating raw for lunch significantly increases my ability to focus after lunch. More on that in a later blog post.)
What was really happening when I was working 10 hours per day was that I tapped into my early morning ultra-productivity cycle, but then as the day went on I increased hours while drastically decreasing results. We've all heard of the Law of Diminishing Returns.
Of course these times and energy levels will be different for everybody, so I recommend spending a few days or weeks keeping an hourly journal to track how you feel. Get a notebook and on each line write each hour of the day, then in the next columns rate yourself on metrics you are interested in. In this case I would rate myself on: productivity, alertness, focus, and flow.
What to do?
Now that we know when we're most productive we can apply this to our daily work habits.
Choose to accomplish tasks that you find less fun, exciting or interesting when you have the most energy. I've found that doing something a little boring is doable if I do it first thing, when I'm focused and am excited to be productive for the day. You'll fly through your boring tasks quickly especially if you leave some fun and exciting tasks that you can only start on after you're done, just like your mom used to make you eat your peas before you could have ice cream.
In the times when you are less productive choose to do your fun and exciting projects. In my experience the excitement of the task helps me quickly find my "flow" state and get lots of stuff done.
If I do these two things and minimize distractions I can get the results of 10 hours worth of work done in 6 hours, which of course is an amazing increase.
Another principle I'd like to talk about soon is finding your pace. I'll leave that for a future blog entry too (yikes, I'm already adding to the future pile blogs to write!), but I'll mention a couple of quick principles. Just like running a race it's important to know and stick to your pace. Perhaps you can work 10 hours per day for 5 days straight, but if you push beyond that you'll run the risk of burning out, getting sick, or losing productivity. If you find your pace you can do as much work as you can, predictably, which in the long run will help increase productivity, results and make you happier.
Nevertheless as I mentioned earlier, this wasn't necessarily my choice, so the experiment began.
Week one went by, no apparent loss of productivity.
Week two, again, no apparent loss of productivity.
What's going on?
After a few weeks I decided to look into what was really happening. I found myself focusing much more acutely on my tasks at hand. I pushed out any non-work related distractions from my mind and more importantly inbox and really focused on what I needed to complete by the end of the day.
I also tapped into the natural ebb and flow of my daily energy cycles. I realize that sounds like some kind of new age crystal energy management technique, but it's really not. I discovered that I found myself most productive in the mornings, between 8:30 AM and lunch, generally right after I have my coffee. I feel like I can accomplish anything during those hours. I could review the most boring document, find and fix pedantic bugs, deploy to a server, or slog through hundreds of XML log files looking for a potential vulnerability. I can do all of this and stay focused, and stay sharp because this is the time when my mind is most active.
After lunch however I've found that I have a far harder time focusing on a task, especially if it is one that I don't find particularly interesting. After lunch it's much harder to find my "flow" and get things done. (side note: my wife has recently started a partial raw foods diet. I've found eating raw for lunch significantly increases my ability to focus after lunch. More on that in a later blog post.)
What was really happening when I was working 10 hours per day was that I tapped into my early morning ultra-productivity cycle, but then as the day went on I increased hours while drastically decreasing results. We've all heard of the Law of Diminishing Returns.
Of course these times and energy levels will be different for everybody, so I recommend spending a few days or weeks keeping an hourly journal to track how you feel. Get a notebook and on each line write each hour of the day, then in the next columns rate yourself on metrics you are interested in. In this case I would rate myself on: productivity, alertness, focus, and flow.
What to do?
Now that we know when we're most productive we can apply this to our daily work habits.
Choose to accomplish tasks that you find less fun, exciting or interesting when you have the most energy. I've found that doing something a little boring is doable if I do it first thing, when I'm focused and am excited to be productive for the day. You'll fly through your boring tasks quickly especially if you leave some fun and exciting tasks that you can only start on after you're done, just like your mom used to make you eat your peas before you could have ice cream.
In the times when you are less productive choose to do your fun and exciting projects. In my experience the excitement of the task helps me quickly find my "flow" state and get lots of stuff done.
If I do these two things and minimize distractions I can get the results of 10 hours worth of work done in 6 hours, which of course is an amazing increase.
Another principle I'd like to talk about soon is finding your pace. I'll leave that for a future blog entry too (yikes, I'm already adding to the future pile blogs to write!), but I'll mention a couple of quick principles. Just like running a race it's important to know and stick to your pace. Perhaps you can work 10 hours per day for 5 days straight, but if you push beyond that you'll run the risk of burning out, getting sick, or losing productivity. If you find your pace you can do as much work as you can, predictably, which in the long run will help increase productivity, results and make you happier.
Labels: productivity, time management
Subscribe to Posts [Atom]





