February 16, 2016
From nczonline.net, with love.

Time Management

Hi everyone,

If you were to ask me what soft skill should software engineers focus on before all others, my answer would be time management. I've seen so many good developers struggle at various points in their career through nothing more than time mismanagement. Time is the one non-renewable resource we all share, so managing it properly is key to not just professional success, but also personal success.

To start, most software estimates are wrong, and typically very wrong. We tend to assume the best case scenario (no interruptions, no requirement changes, etc.), underestimate the complexity, underestimate the amount of work, and overestimate our abilities. This can frequently lead to a time crunch, and therefore, a lot of stress. We all do this, which is why it helps to remind yourself to overcorrect your estimates. In general, people are happy when things come in early and angry when they come in late. How do you become better at estimates?

The truth is you will never become better estimates, and once you accept that, you can adjust accordingly. Estimate as you would normally and then multiply that number by two. For short tasks (a day or two), that gives you a pretty good estimate. For anything four days or longer, it's a good idea to round up to the nearest week; anything two months or longer, round up to the nearest month. Note that you haven't really become better at your estimate by doing this, you're just correcting for the fact that your initial estimate was wrong. In all likelihood, this adjusted estimate is also wrong, but hopefully it's closer to reality.

The other area where developers struggle is deciding what they work on each day. I've seen people get distracted by side projects, playing foosball, or other things besides what they should be getting done. Don't get me wrong, I'm a big believer in taking some time away from work during the day to refresh, but not at the expense of your actual tasks. I once worked with someone who didn't get any of their tasks done in a given week because they were too busy helping other people with their problems. While very nice, that sort of behavior isn't a good long-term strategy.

The solution? Every day, put two things on your "to do" list that you must absolutely get done. Make each small enough that there's a good chance you will get them done (break larger tasks into a series of smaller ones), and prioritize them so you know what to work on first. If you finish both, then the rest of the day you are free to do whatever you want. Or, you can take a break after you finish one and know that you're halfway to your goal. This is an approach I take whether I'm at work or away: two things I want to accomplish that day. 

Effective time management isn't hard, it just takes some practice. Keep practicing!

Be well.

-N
JavaScript WeeklySponsor: Microsoft Edge
We're building Microsoft Edge in the open. View our roadmap.

Recommended Links

How a Supervillain (or a Hacker in His Basement) Could Destroy the Internet (article)
As amazing as the Internet is, it's sometimes easy to forget underneath it all is really just a series of cables connecting everything together. How secure are those cables? What prevents people from hacking into them or destroying them? As it turns out, not much. This article explains how weak Internet infrastructure really is and the various ways Internet service can be knocked out for large areas.

Understanding Brotli's Potential (article)
Chances are that you're using GZIP to compress your text-based assets on the web server. However, there's a new competitor called Brotli that may be even better at compression. Google open sourced Brotli last year and since then, there have been very few articles comparing its performance to GZIP. This article digs into the various compression levels to discover is Brotli is actually better than GZIP.

Deep Dive Into Grid Layout Placement (article)
While flexbox has received a lot of love from developers, another new feature of CSS, grid layouts, has received relatively little attention. This article digs into CSS grid layouts with excellent detail and figures to help you conceptualize what's actually going on. Easily the best explanation of CSS grid layouts that I've come across.
JavaScript WeeklySponsor: The O'Reilly Fluent Conference
Subscribers receive $200+ off with discount code NCZ20 (offer expires 2/29)

Reader Questions

The results of my survey showed that there wasn't a lot of love for the recommended book section of the newsletter. So, I'm going to try filling this section with answers to reader questions for the next few editions to see if you like it better. Just reply to this email with a short question about web tech, career, or anything else! Keep in mind that my response needs to be limited to one or two paragraphs, so don't ask anything that would require a blog post or a book to answer!

To get the ball rolling, I'll start with a question someone asked me during an AMA:

In hindsight, what advice do you wish someone had given you at age 20?

"For the next five years, don't talk, listen. You only think you know it all but in reality your real education is just starting."

Recently on NCZOnline

Reflections on ESLint's success
It's hard for me to believe, but I first conceived and created ESLint[1] in June 2013 and first announced it's availability in July 2013[2]. As frequent readers might recall, the primary goal of ESLint was to create a linter with rules that could be loaded at runtime. I had seen some problems in our JavaScript...

React and the economics of dynamic web interfaces
I've been doing web development since 2000, and in that time I've seen eras marked by libraries and frameworks come and go. The Ajax era began around the same time as the jQuery era began, the Backbone era began several years later, and the React era really began about two years ago. Each of these...

Why I'm not using your open source project
When you think of open source software, you might think of a few specific projects depending on your area of interest. If you work on web applications, the term "open source" might conjure up visions of Apache or Node.js; if you're into big data, then perhaps Hadoop comes to mind; if you care a lot...

Feedback

Love this newsletter? Hate it? Have suggestions for how to make it better? When you subscribe to the newsletter, you can just reply to send in feedback.

Ready to subscribe?

Join 2,000 others and subscribe to get the newsletter delivered to your inbox every other Tuesday. 
If you enjoy this newsletter and would like to support my work (including the newsletter, my blog, my books, and ESLint), please consider becoming a patron. I provide a lot of free content and your support allows me to spend more time doing so, and there are great rewards for patrons.
Copyright © 2016 Nicholas C. Zakas, All rights reserved.


unsubscribe from this list    update subscription preferences