Why Developers Underestimate: One Reason That Will Change the Way You See Projects Forever

I, like many developers and tech consultants, am a chronic underestimator. When I make an estimate, I do so believing that the estimate encompasses the effort necessary for me to accomplish each and every goal for that project.

And I’m wrong, nearly every time.

People have a completely skewed perception of time. Checkout this excerpt from a Huffington Post article from last year.

This vs That’s initial research is in line with previous research into time estimation, which has revealed that our ability to accurately estimate time is influenced by our emotional state, how hungry we are, how tired we are, whether our eyes are open or closed, what we are doing, among many other factors.

Aside from the fact that people in general are terrible time estimators, it’s also my opinion that estimating a multi-stage project all at once is about as useful as guessing who will win March Madness at the beginning of the bracket. It’s not a good idea to put your money on that bet.

Here’s one of the biggest reasons why we estimate improperly.

Our perception of effort and knowledge are different from our perception of implementation.

How long would it take you to make 100 sandwiches?

How easy is it to make a sandwich? Certainly not all that hard. You’ve done it a million times, so it’s not too difficult. Five minutes on a good day, 10 minutes tops.

So, how long does it take to make 100 sandwiches?

I asked my wife this question, and she estimated an hour and a half. Seems fair to me – probably about what I would have guessed as well.

Would you immediately think to guess that it would take 500 minutes (8.3 hours)? You probably think that you’d have a system – a way of solving common problems over and over by that point. 100 sandwiches shouldn’t take nearly 8 hours, considering how easy sandwich-making is. You’d have a killer sandwich assembly line.

But even if your amazing sandwich assembly line was world class and doubled your efficiency from 5 minutes to 2.5 minutes, you’re still going to finish sandwich 100 at the 250-minute mark.

This is the cognitive problem we face in estimating time for development. We see projects that we have the technical ability to solve without having to acquire any new knowledge, and therefore we have a tendency to underestimate. Things we already know how to do and systems we fully understand seem like they should take much less time to implement than they actually take.

Stop thinking about how easy a project is, and start thinking about how long it takes you to make one sandwich.

Quick Tip: Serve Parse Files via HTTPS

Trying to serve your Parse files via SSL/HTTPS? You’ll notice that you can’t force it, and Parse doesn’t support this via their file URL scheme. But you can use the same trick Parse uses on Anypic.

Replace http:// with https://s3.amazonaws.com/.

So if you start with this:

http://files.parsetfss.com/b05e3211-bf8b-.../tfss-fa825f28-e541-...-jpg

The final url will look something like this:

https://s3.amazonaws.com/files.parsetfss.com/b05e3211-bf8b-.../tfss-fa825f28-e541-...-jpg

In ruby, that’s:

url.gsub "http://", "https://s3.amazonaws.com/"

In JavaScript:

var url = // your url...
var subbedUrl = url.replace("http://", "https://s3.amazonaws.com/");

Boom – fully secure Parse files.

You’re welcome.

The Path to Productivity: 7 Hacks, Principles, and Patterns

Share this article on Twitter

Productivity is such a huge focus in our lives. We are all allocated the same amount of time, so how do some people do amazing things while others always seem behind the curve?

The answer, in some ways, is that those who are on their game have learned how they themselves can be productive. Certainly there’s no one shot solution, and productivity isn’t the only answer to rising above average, but I would argue that those who are above average absolutely cannot ignore the importance of finding ways to stay productive with their time.

In this article, I will discuss my tips for finding personal productivity.

1. Start Treating Time as a Precious Resource

Time is your most valuable resource. It is the resource that no one can leverage against another person, because we are all given the same amount of time in a given day. The only way we can rise above average is to treat time for what it is: a consistently valuable and rare resource. Truly adopting this perspective is the driving informer behind changing your habits. This is your motivation.

Share this tip

2. Find Your Time

What is Your Time? This isn’t a metaphorical or philosophical question – it is actually quite practical. What time are you giving yourself per day? Mine is from 6 to 8 in the morning. This is a new habit I am constantly forming, but this is when I build my side ventures, when I do my reading and writing, whatever I choose to do. Specifically, my time is uninterrupted, and I can gain pure focus during that time. I’d recommend mornings, as this is the time when you are most likely to have the drive necessary to turn that time into value.

Give yourself the incredible gift of time. No one else can give it to you.

Pro tip: The morning is also a good option because we often sleep as a luxury. Do you prefer the luxury of sleep, or the reward of accomplishing your goals? I know my answer.

Share this tip

3. Don’t Trade Your Time Cheaply

When I was doing my masters program, I constantly had to make a choice: order food in, or go and get lunch. (This was before my wife and I made a conscious decision to eat as many whole foods as possible.) While the delivery fee was outrageous sometimes, I had to consider the value of my time, and on many occasions, the delivery fee was justified because ultimately my time was worth more than the hours I would spend traveling and sitting. What are you trading your time for? Could you delegate or hire out a task you are currently spending your time doing? Something even as simple as mowing your lawn could be hired out, freeing you up for more time to spend doing things only you can do.

Note: I do not recommend take-out food as a time saver (or restaurant food in general) unless it’s an absolute necessity; eat a load of plant-based whole foods, and keep them fresh in your fridge and pantry available at all times. This will likely save you money in the long run anyway, even if you go Gung ho organic like I did.

Share this tip

4. Make Your “Must Do Today” List, TODAY.

Unlike your regular to-do list, which can grow to extraordinary lengths, create a list with non-negotiable tasks that you must finish today. Make that list accomplishable, and prioritize by the value that is delivered both now and in the long term.

Share this tip

5. Put Productive Time Before Reactive Time

Don’t check your email, your phone, or your chat messages until you mark off the things on your must do today list. Other people have “must do today” lists, and if you’re not careful, you’ll work harder on their list than you will yours.

Productive time means time that you have control and domain over. It’s time that you spend working towards your goals. Reactive time is time that someone else is spending for you. This isn’t just “side job versus work” – this is totally applicable at your day job. Want to get your task list done? Do it first – make it a priority. You’ll be surprised how a few hours often doesn’t make a bit of a difference for those people who are fighting for your time and attention, but how HUGE of a difference it makes for you.

Share this tip

6. Limit Yourself

Having a tough time leveraging your hours properly? Work 2 hours less per day for a week, but retain the size of your Must Do Today list. I bet you will be surprised at how much more you will achieve when you set a concrete end-time. This principle isn’t new, but it certainly is effective, and worth echoing again here.

Share this tip

7. Decide How You Should Spend Your Weeks

Michael Hyatt has a fantastic resource that helps you with this particular effort, which you can find here, but the basic idea is this: If you don’t have a plan for how you want to spend your time, how can you expect to accomplish your goals? As Michael says, take the initiative to “live on-purpose.”

Take the time to evaluate your habits and values, and what you want your weeks to look like in a perfect world. Set your long term goals, and design your ideal week around what it would take to achieve those goals, realistically. If you are lucky enough, you are the author of your own time. Even if you work long hours at your day-job, you are the author of your off-time. Evaluate and consciously determine how you want to spend it.

This exercise does a lot for you. It might even give you a good perspective on what things need to be pushed off your plate indefinitely, or maybe it will help you realize that you are already crazy productive.

Share this tip

Conclusion

This is by no means an exhaustive list, but hopefully you will find a few of these things helpful in your own life. If you do, Tweet about it!

7 Tips for Hyper-productive Wunderlist-ing

I’m loving the newest version of Wunderlist. Honestly, I’m not even sure what all has changed, but here’s what I know: Wunderlist is probably my favorite ToDo management application thus far.

That’s a big deal, you know… there’s about a thousand ToDo managers.

Here’s how I’m using it.

1. Put it everywhere

One of Wunderlist’s primary killer features is the fact that it is available everywhere. Native apps for Apple devices, and a web interface. It really is everywhere.

So make your to-dos accessible everywhere. Unlike your email, having your todos accessible actually helps your productivity if you know when to look at the list.

3. Use Tags to Sort by Energy/Time Required and Context

Who knew you could do hashtags in Wunderlist. This allows for clickable searchability. Adding some kind of context allows you to do things like: “Clean out closet. #15m #home #busywork”. When you’re at home, your mind is completely fried, and you have 15 minutes to kill, having these tags helps you find the tasks that should be done at that point in time. When we have 15 minutes to spend, knowing exactly what we’re going to spend that 15 minutes doing is essential.

3. Name lists by major projects/efforts

When organizing my to-dos, it’s cognitively helpful for me to think about my home chores, side projects, and work projects in different contexts. Thus, when I’m thinking about writing articles, I have a list dedicated to writing articles. I can tag things to fall back to related tasks, like #writing, which I can put both on my book-writing efforts as well as my personal writing efforts.

4. Share lists with my wife, coworkers, etc

Shared lists are another killer feature.

My wife and I always need the same groceries. So, when we go grocery shopping, having the list available is super valuable. Pro-tip: when you run out of something, mark it off the list, and use the “completed” view to show you what you need to buy. Much easier than unmarking. Once you’ve bought everything, clean up your “completed” by marking them as “incomplete”. Dirty, but usable.

Sharing a list means you can also assign items. This makes divvying up responsibilities a breeze.

5. Make a Must Do Today list, and limit it to 3 items

If you don’t have a priority list that is your daily requirement, then you don’t really have an “in-queue” context. Make these non-negotiable, and make them completely accomplishable.

6. Make Managing your List its Own To-Do

Your to-do list is built to take care of your meta-work – your work about work. Stop thinking about what it is that you have to do, and pull it off the top of your list. This means it takes time to manage your list. So, dedicate some time to administering your list. Simple as that, you’ve done all of your meta work, which otherwise would steal from your insignificant cracks.

7. Make everything actionable

Make each and every item on the list an actionable task. This means no “get ready for the event” kind of tasks; instead, use “email the participants of the event”. Pro-tip: Use the comments and sub-tasks in Wunderlist to keep track of minute details. For instance, if you need to individually email a list of people, put each person as a subtask of the email task. Use comments to grab relevant links, passwords, etcetera.

I’m using Wunderlist because it makes my task management easier. Hopefully you find these tips useful to your task management. Let me know what you think on Twitter!