August 2009 Archives

A Happy Life Without the Whining

is-there-a-word-for-the-feeling-you-get-when-you-realize-three-quarters-of-your-twitter-followers-are-spammers.gif
There's no better way to waste your time than to talk about politics.  For as good as educated people are at acting intellectual, we love to bitch and moan about one side versus the other.

Politics are potato chips for the enlightened mind.

I grew up in Connecticut. New Englanders are generally pretty educated people. We keep to ourselves. We vote. We donate money to causes, and for the most part, we shut the fuck up.  Personally, I'm registered to one of the two major parties in the US. (If you tried to guess, you'd probably guess wrong.)  I don't get into political arguments because I've got better shit to do. I don't blog about politics because I know that nobody cares what I think. You know what? It's a good life.

Lately, I've been hearing a lot about this Glenn Beck fellow. I don't know who he is or what he said to get everyone so sore-assed, but I sure as shit don't care. I don't watch CNN or Fox News. I don't have cable TV. I get all my news from my local news channel over the air. No talking heads, no shouting matches, no six-second-attention-span scrolling tickers on the bottom of the screen. In 30 morning minutes, I get a brief summary of what the president said at such and such a meeting the other day, a look at the traffic and weather for the day, and some feel-good community segment.

The last thing I need on a 40 mile motorcycle ride to work is a head full of piss, thanks to Bill O'Reilly or Keith Olbermann.

But I can tell you that from the inside, generating butthurt is big business. Every time I've knocked an article out of the park for The Register, there's been a decent troll element to it. Not all trolls succeed, but the ones that hit a nerve really bring in the page views and comments. That's just the IT world. If I could get a job trolling politics, I'd be damn sure to demand a page view bonus. I can't knock the hustle.

The news networks aren't stupid. They know that viewership increases when people are pissed off.  Walter Cronkite delivered facts, but was a crusty old book report of a man for it.  I'm sure that all else equal, if national media never figured out how much fucking money there is to be made in keeping people salty, the news would still be a puff of dry air.

So I don't watch network TV. I don't blog about politics. It's a calm life. I have informed opinions on most issues, but I know that nobody cares what I think, so I keep to myself.  Maybe that's why I still have trouble "getting" Twitter.

Stop Using the Word 'We'

theres-something-about-lane-splitting-through-marijuana-smoke-on-a-motorcycle-thats-so-unsettling.jpg
Yesterday, I spearheaded a new movement at the office. I stopped using the word "we", and started to say what I really meant to say.  For example, instead of "We should fix that bug", I say, "You should fix that bug", and good God is it satisfying.

There are a couple of motivations for this. Firstly, one of the key things I've learned being a for-pay writer is to show some conviction. Secondly, the passive discussions about defects and delegation and responsibility really started to irritate me. Why not just tell it like it is?

When I worked at Google, I picked up on a really annoying trend in the software industry (or maybe just in Silicon Valley) that I call "fuck-you with a smile".  You never want to outright blame somebody or something, rather, it's best to state the existence of an issue and then ask "the team" to fix it.  We should really move that icon ten pixels to the left. We definitely need to fix that concurrency bug. We should probably have that all done before lunch.

Well then, Mr. Manager, you had better get cracking, because I've got some YouTube videos to watch.

I learned that the goal of institutional business is to keep from angrying up the blood at all costs.  A productive employee is one whose personality has been bleached out to a yellow tinge.  Always non-confrontational, never suggesting that any one person fucked up.

The best part about working at a startup is that I'm free to suggest that yes, you fucked this up. Yes, it's your fault, and yes, you need to fix it. Delegate! Don't waste time listing out action items, spend time telling people what to do. Everyone you work with should be a grown up, and can handle it. The other side of that is owning up to your mistakes. Instead of "There is memory leak in the code, we should prioritize it over other defects", say, "I introduced a memory leak in the code. I am going to fix it as soon as possible."

Anyway, I'm going to keep this up until somebody openly calls me an asshole. You should try it too.  You don't have to be a prick about it, just be assertive. Your co-workers will be impressed at your new found confidence. It might even get you laid. 

Well, probably not, but you won't be wondering when a meeting is going to end if you grab it by the balls.

Context Switches are Bad, but Stack Traces are Worse

never-trust-a-person-who-wears-a-tie-who-asks-you-how-to-query-the-database.png
Every programmer works in silent fear of a manager sneaking up on him and asking him to drop everything he is doing and work on an unrelated task. Context switches like this cost us time and energy, but managers are beginning to figure out that a programmer isn't a machine that can be switched on and off, no, they're understanding that a programmer is a machine that needs a warm up phase.

I guess you could call that progress.

I'm fortunate enough to work with a company that understands engineering, but I have worked with my fair share of nontechnical managers, and I have to say that categorically that the most expensive question a manager can ask is "What are you working on?"

The danger here is when you're six or seven levels deep into yak-shaving, and your manager wants to know what you're doing and why. You need to give the manager a complete stack trace from your current frame all the way up to the original task. Each jump up the call stack is a context switch of its own, where you need to remember exactly why you made the decision that you did, and justify it as the best course of action.

"I'm compiling a new version of libxml, so I can get the Python parser working.  I need to do that because LXML, the Python binding, would crash under heavy load when I used the system default version of libxml. I am using LXML because BeautifulSoup doesn't have support for XPath. I need to do XPath transforms against the input because the legacy system we interact with doesn't send well-formed XML. We tried to get the vendor to fix it but they said 6 to 8 weeks for a patch, and our project deadline is sooner than that. I need to interface with the legacy system because even though the DBAs have ported things over to Oracle, they're still sorting things out and it's not reliable enough for me to make any meaningful progress. Fortunately, I've thought this through and abstracted the data subsystem well enough that I can drop-in replace Oracle when it's ready, so long as the database sends some decent form of XML. Once I get this data subsystem done, I can finish the business logic, which attaches to the nonfunctional demo you love so much.

So yeah, I'm working on the new asset tracking system."

Stack trace, all the way up to the main method.  It's not always that simple. I know I have trouble keeping that many stack frames in my head. I can't remember why I chose to go down the path that I did, other than "there was a good reason for it". After all, I'm not slogging my way though compilation bullshit for my health. When a manager demands a full stack trace like this, it sets your progress back, because you need to go over decisions that you already made, examine the circumstances, and make the same decisions again. You lose your original frame of reference, and your manager thinks you're just fiddledicking around instead of doing work.

So what's there to do? If you're awesome like me and work for a manager who understands why programming is hard, chances are you can just leave the answer to "what are you doing?" at the innermost stack frame.  Everybody wins. However, if your manager is nontechnical, your goal is to get him off your ass as soon as possible, because you want to minimize the damage he does to your productivity. My recommended course of action, when asked "What are you working on?" is to slap the manager in the face and yell "YOU DON'T END A SENTENCE WITH A PREPOSITION UP IN THIS BITCH. THIS IS MY HOUSE." Thump your chest with a clenched fist and say "yeah what's now, fool" under your breath.

Failing the battery charge, the key phrase is "I explored every option".  Beyond this, there's really no way out, because your manager doesn't trust you. You're basically fucked. Quit your job and come work with me.