Forgoing sleep is like borrowing from a loan shark. Sure you get that extra hours right now to cover for your overly-optimistic estimation, but at what price? The shark will be back and if you can’t pay, he’ll break your creativity, morale, and good-mannered nature as virtue twigs.
Now we all borrow occasionally and that’s okay if you fully understand the consequences and don’t make it a habit. I did that the other night. We pushed an update to OpenBar, which had me working until 1:30 AM. That wouldn’t have been so bad if it wasn’t because I got woken up at 5 AM to help deal with an issue that arose. But the costs the following day were typical, numerable, and expensive:
Stubbornness: When I’m really tired, it always seems easier to plow down whatever bad path I happen to be on instead of reconsidering the route. The finish line is a constant mirage and I’ll be walking in the desert for much longer than was ever a good idea.
Lack of creativity: What separates programmers who are 10x more effective than the norm is not that they write 10x as many lines of code. It’s that they use their creativity to solve the problem with 1/10th of the effort. The creativity to come up with those 1/10th solutions drops drastically when I’m tired.
Diminished morale: When my brain isn’t firing on all cylinders, it loves to feed on less demanding tasks. Like reading my RSS feeds for the 5th time today or reading yet another article about stuff that doesn’t matter. My motivation to attack the problems of real importance is not nearly up to par.
Irritability: If you encounter someone who’s acting like an ass, there’s a good chance they’re suffering from sleep deprivation. Your ability to remain patient and tolerant is severely impacted when you’re tired. I know I’m at my worst when sleep deprived.
These are just some of the costs you incur when not getting enough sleep. None of them are desirable. Yet somehow it seems that the tech industry has developed a masochistic sense of honor about sleep deprivation. At times it sounds like bragging rights. People trying to top each other. For what? To seem so important, so in need, so desired that humanity requires you to sacrifice? Chances are you’re not that special, not that needed, and the job at hand not that urgent.
Software development is rarely a sprint, it’s a marathon. It’s multiple marathons, actually. So trying to extract 110% performance from today when it means having only 70% performance available tomorrow is a bad deal. You end up with just 77% of your available peak. What a bad trade.
This is why I’ve always tried to get about 8 1/2 hours of sleep. That seems to be the best way for me to get access to peak mental performance. You might well require less (or more), but to think you can do with 6 hours or less is probably an illusion. Worse, it’s an illusion you’ll have a hard time bursting. Sleep-deprived people often vastly underestimate the impact on their abilities, studies have shown.
So get more sleep. Stop bragging about how little you got. Make your peak mental capacity accessible.
The stereotypical startup dream hire is a 20-something with as little life as possible outside of computers. The one that’ll be happy working 14-hour crunch days for weeks on end sprinting for an ever-shifting target that keeps being 90% done for 90% of the time. The one you can make sleep under the table or please with a foosball table in the center of the room. The one where the company paying for dinner pizza is “awesome”.
I should know. I used to be that gullible and even take an odd pride in being up to the job. But it didn’t take long to catch on to the idea that packing a room full of these people was merely a crutch for shoddy management, lousy execution, and myths like “this is the only way we can compete against the big guys”. And you certainly need the latter if you’re trying to give turds wings, but how about just not trying to make crap fly in the first place?
That’s why I like working with the family man or woman. They come in as a cold bath of reality. When people have other obligations outside of work that they actually care more about than your probably-not-so-world-changing idea, the crutches are not available as an easy way out, and you’ll have to walk by the power of your good ideas and execution or you’ll fall fast and early. That’s a good thing!
From the experience I’ve had working with family people, I’ve found an amazing ability to get stuff done when the objectives are reasonably clear, the work appears to have meaning, and if it can be done within the scope of what should constitute a work week. When there are real constraints on your time, like you have to pickup the kids or make them dinner or put them to bed, it appears to bring a serenity of focus to the specific hours dedicated to work.
This is what companies need, startups or not. They need constraints and especially constraints on how often you can play the hero card to Get This Very Important Project Done. Most projects are just not that important and most things just shouldn’t be done anyway, despite how good of an idea you feel it is in the heat of the moment.
Update: Removed potential confusion around labor discrimination.
It seems to be a favorite pastime of the web to moan about the uptime of Twitter. In March of 2008, their uptime according to pingdom was a mere 99.57%. Wah, wah, wah. Sure it could be better. But I’ve felt more connection problems with AIM that I’ve had with Twitter. Even my Comcast network connection seem less reliable than Twitter at times.
That doesn’t exonerate them from building a more stable service. Especially not considering that they have five million dollars of other people’s money to do it with and a few years of practice.
But I for one am pretty damn impressed with what they’ve managed to accomplish so far. They’ve built a simple service that tons of people have become so dependent on that the slightest flicker of the light sends them into terminal withdrawal symptoms. Talk about building something people want!
Now the problem, of course, is that they have a hit on their hands, but there’s no obvious paths to turn that hit into dollar bills (short of waiting until someone offers that 10x+ that their investors probably are savaging for).
If the growth in Twitter usage was mirrored by an equal growth in Twitter profits, the necessary investments needed for infrastructure would be self-evident. But when the money pot is an ever-shrinking gift-with-strings-attached, you can’t just blow your way out of the issue with cash.
Regardless, this is in my opinion the best of what we get from the startup culture of the valley today. An awesome new way to communicate, built very quickly, and addictive enough that people get a little loopy in their expectations. I want my free beer cold, gawd dammit!
So cheers to the Twitter guys. You guys deserve a world of credit for making that Something Awesome. Now please figure out a way to make scaling problems a cause for celebration (more users = more money) rather than condolences (more users = less money).
Techies, VCs, and the press are always swooning over the glory of the Bay area. This is where all the excitement, the money, and the people are, they say. And that’s true to the extent that your great big idea fits the current cultural mold of that environment.
If you’re looking to build the next web 2.0 social media eyeball-collecting application, don’t want to worry about boring details like revenues, and hope to either flip to Google for an early $20 million or get that Facebook billion-dollar valuation, the Bay area is exactly where you want to be. No where else do you have the connections, the people, and the atmosphere available to make that dream happen.
But this strain of startups is a highly inbred line that holds more risks than most people realize. It’s not that they never work financially, enough people are sipping Margaritas on sunny beaches from towering buyouts to prove the contrary. And it’s not that they don’t work socially — I personally enjoy YouTube as much as the next guy. It’s that the Bay area pipeline for building web businesses isn’t optimized to carry much else than these stereotypes.
Update: Some folks are saying the video above isn’t playing correctly for them. If that’s the case, here’s an alternate version. It’s not as high res, but hopefully it will work.
It sucks. It blows. It’s useless. It’s too expensive. It feels too cheap. It doesn’t do enough. It’s too complex. They don’t care.
Bitching is such a succinct form of expression. It doesn’t require or usually entail deep analysis. It’s the easiest way to write something “interesting”. Readers flock to controversy, dissent, and drama. The words of bitching are short and carry plenty of punch for that drama.
This makes bitching a perfect fit for the 140 characters of Twitter.
It takes a lot less work than writing a blog entry, but gives you the same rush of making your voice heard. Telling it to The Man. Shout “so what are you gonna do about it?” (after the other guy left the bar). It opens up the process of wide-area bitching to a whole new group of people who otherwise wouldn’t have gone public with their opinion — or even realized they had one.
That’s not a slam on Twitter, by the way. I’ve been truly impressed with the other kinds of behavior and new forms of interaction that it is fostering. For the more creative outlets, the 140 character limit is a brilliant limitation.
Rather, I think it’s just a form fit for the human desire to find fellowship in dissent. Twitter made it as easy to post “it sucks” as it is to think it. And with no draft mode or no need to fill in paragraphs of thought before pressing publish, there’s little time for rewrites or regret.
That will undoubtedly lead to some very special, inciteful bite-size nuggets of opinion that would not otherwise be shared. But we’ll have to chew through a lot of fat to get to the meat.
You can just imagine the conversation. The Sprint executive screaming to the Samsung rep: “I don’t care how shitty you have to make it, just give me an iPhone knock-off in three months!!”.
And Samsung, who otherwise makes nice stuff (I loved the P-300), caved and delivered the Instinct:
Over the past couple of years, it seems that wifi networks are getting worse and worse where ever I go (slower, more packet loss, etc). No doubt related to the bazillion networks cluttering up urban airwaves. How is your wifi doing these days?
Programmers often have difficulty going back to older code bases because they don’t reflect the latest, greatest idioms. It can be hard to work with constructs that you know could be better, written with less code, stripped of even more duplication, beautified. But it’s important to realize that all code will eventually feel like this.
Even if you take that project from three years ago and scrub it clean as can be today, it’s still going to drift from the best practices of two years from now. That’s normal, it’s natural. You continue to get better, to learn, and the technology you’re using is hopefully progressing as well. Yet it can still seem like a hard hill to climb to get back in to yesterday.
Suck It Up
Here’s something I don’t say often: Suck It Up. If you work on more than a few projects, they can’t all smell like today’s fresh linens. It doesn’t mean you’re a bad programmer. It simply means that you’re prioritizing.
Yes, yes, you should clean up around you when you dive in to those older applications, but beware the lure of a full Spring cleaning. You’ll get pulled in and before you know it you’ve broken half the application and won’t know how to get back out with your ego or tests intact. Add your feature, fix your bug, and leave everything you touch in better condition than you found it, but that’s it. Move on from there.
This is not a license to be a slob. Whenever you’re starting something new, you should always try your best to infuse it with the top of your game. That way you can hopefully drown the feelings of disappointment with at least a dash of nostalgia: “Hey, when I worked on this I did the very best I could. How great to see the progress of my skills and sensibilities since then. Good job, me!”