Like the sky or the horizon?

Is your knowledge as a programmer tall like they sky or broad like the horizon?

Greg Knauss says the programmer is like the sky, the manager is like the horizon. From Wide vs. Deep:

So here’s my theory: Managers must work shallow and wide, while programmers must work narrow and deep. People who are naturally tuned to one particular method of work will not only enjoy their jobs a lot more, but be better at them. I’m a deep guy, I should be doing deep work.

I didn’t say it was a particularly insightful theory.

Counter-point: your must prune your knowledge so that it is deep and broad. I spoke to this in my OSCON presentation The Holistic Programmer. From my description:

The Holistic Programmer is about how programmers should approach take a global view on the stack of abstractions in which they work and also in the spectrum of communications between people and machines.

In it I talk of my approach to problem solving. My method is largely predicated on knowing a little bit about a whole lot. Given that, I can usually frame a problem pretty quickly and get on to making the first attempt at solving it. I might get lucky and actually frame the problem correctly. Even if I don’t, at least now I’ve got an idea of what the problem really is and I can take another, more informed stab. So on this, Greg Knauss and I disagree.

My main point is that programmers need to take a holistic approach these days, knowing things above and below them in the application or system stack in which they are expert. This is the deep part that Greg mentions. Its not enough to just speak Rails, Django, Linux or Flash. You have to understand the bits that are higher level and the bits that are lower level than what you are working on. Otherwise you’re looking at an incomplete picture.

There’s a notion going around of the “specializing generalists” or some such. I think its a great way to go. Given the rapid rate of change software development sees, you have to stay nimble. The ability to quickly adapt to new technologies and approaches separates the mediocre programmers from the great programmers.

I’ll leave the penultimate word to The Dude:

The Dude encourages you to think holisticically

If you’re yearning for more, check out the above presentation for a deeper dive and some book recommendations.

Epic songs, pick a favorite

Prepare to be polled.

For the purposes of this survey, we’ll take an “epic song” as one with musically distinct beginnings and ends. Said song shall not be a grouping of songs, like on Abbey Road or Born to Run. In other words, its only one song on the track listing. Here’s some of the best epic songs that popped into my head:

  • “Bohemian Rhapsody”
  • “Hey Jude”
  • “Stairway to Heaven”
  • “November Rain”

Your mission is to choose one of the above, or write in with your own favorite. If you write in, please do try and provide a link so that we can listen in.

Now, get those opinions flowing. Here, I’ll start. “Bohemian Rhapsody” takes the cake.

The rise of the micro-app

A few weeks ago, Dan Cederholm, of Simple Bits fame, launched Foamee. Foamee lets you track who you owe beers to. The twist? You manage your beer debt via Twitter. Its a small little app. It only does one thing. Its got a fantastic entry-point. In other words, its really cool.

Erik Kastner reminded me of his app Band Named this week. It finally clicked why its cool this time. Games like Guitar Hero III and Rock Band want you to name your ethereal band. Band Named is a great place to post ideas for said names. The neat thing about Erik’s app is that you can sign in via OpenID (+1) and then fetch your avatar from Flickr or Twitter (FTW). The entry of new band names is easy. And its fun!

I hope this turns into a trend-buzz-meme thing. The world needs more apps that aim to just help you out now and then, not ones that want to become your task management, knowledge capture workflow mega-gizmo-jobby. Better yet, apps that are loosely coupled via infrastructure you’re already using (Flickr, Twitter, OpenID, etc.) taste great.

Plus, these little efforts needn’t result in all-pain, no gain. Dan probably can’t support himself on it, but I bet any money made from Foamee merch will come in handy. Likewise, there are lots of things you could do with something like Band Named, though I don’t know if Erik’s going to take it that direction.

A call to action

So, call to action: hatch up some idea. Make sure its a little crazy. If pitching it to a VC would get you laughed out of the room, you’re on the right track. If you think the commenters on TechCrunch would skewer you, you’re getting even warmer. Think Uncov would just laugh and point? You’ve probably hit the jackpot. Now: go out, build the sucker and figure out how to have fun with it.

I’ll leave you with this: its all about getting to the point where you’re making dough and having fun.

Anthropomorphized Gems

OK, I couldn’t make it to RubyConf this year. Big frownie face. But, I’m not letting that stop me from imposing my sense of humor on the world. I present to you this year’s helping of absurdity, “Anthropomorphized Gems”!

Gems Anthropomorphized from Adam Keys on Vimeo

So this is a little tribute to the gems I frequently use and enjoy. Thanks to the authors of the featured Gems and to all those who have released a Gem of any sort. Ruby has gone from a great language with a so-so library to a great language with a great library in relatively short order. Those making their Gems available deserve applause for making that happen.

h3. Administrivia

* In HD, where available! This is my first foray into uploading video in HD. It takes a while, but the results are pretty nice to look at. On the other hand, none of my G4s seem to handle HD that well.
* I’m trying Vimeo even though I can’t really make heads or tails of their TOS. If you can read TOS-ese, let me know if it allows them to sell my stuff to NBC, Fox, etc. without me getting a penny. That would be unfortunate.
* For the record, I did go eat pizza after I finished putting this together.

Your target feature

Many a moon ago I twittered:

Just had the surreal idea of a “Celebrity Fit Club” for little projects. “Your target feature for next week is tagging.”

Courtney’s affection for VH1’s celeb-sploitation isn’t without its perks. Before Celebrity Fit Club went all sensational, it had some really optimistic moments. Seeing a person, celebrity or not, start to conquer their struggles with exercise and/or eating is really inspirational.

After each person weighs in to see how much they lost in a given week, the panel of judges gives them a weight-loss goal. Usually they are pretty small numbers, fairly easily achieved. Every once in a while they stretch it and challenge the contestant. Its never an unhealthy goal.

I think every project could benefit from this sort of goal setting. In particular, the part about stringing together some small achievable goals and bridging them with larger, riskier goals sounds particularly helpful. See also what the WuFoo guys said about The Importance of Deadlines:

We’ve recently gone back to a system with long-term and short-term deadlines, and we’ve already seen improvements in both focus and productivity.

I’ve yet to intentionally practice this. But, looking back at what I’ve accomplished over the past few months, I think some of the times I felt “in the groove” were after putting together a few small releases following a much bigger one. Any pithy phrase that gets me closer to said groove is one I’m willing to take to heart.

Rejiggering meets build versus buy

You’re here! That means I’ve managed to convert my site (back) over to WordPress. In the interest of making progress, I had to cut some corners. Currently, that manifests itself as taking my old weblogs Man vs. Machine and Punchline Labs offline while I figure out how to rejigger the content into WordPress. But if I’ve broken something, please tell me!

Wait, don’t stop reading! This isn’t “Yet Another Boy-Have-I-Been-Busy But Now I Promise To Post More” post!

The decision to switch (back) to WordPress is a somewhat bittersweet one. I’d originally switched away to Typo, but that didn’t work out too well. On the one hand, Typo went a little sideways on me, requiring me to poke the database a little before I could post. On the other hand, running a big Rails app like Typo on shared hosting like TextDrive isn’t a recipe for reliability. So a change was necessary.

Application Design with Garrett Dimon

Did you see Garrett Dimon’s slides from WebJam Session ’07? ZOMG you should!

What impresses me most is how much Garrett’s accomplished in designing his issue tracker without much use of intense graphics. He’s got a few icons here and there, but most of his design is based on color and typography. As someone who is horrible at drawing, it gives me hope that I could some day build cool UIs.

"Rap" the white guy can "dance" to

The Top 10 Rap Songs White People Love |

When these songs come on, White People look at each other and say “Awwww yeah” or “Hell yeah” and are compelled to sing along. Sometimes there’s also a corresponding stupid dance move.

Well I have to admit, at number 9, “The Humpty Dance” is one of my favorites (and a karaoke staple). The author is right too — Humpty Hump/Shock G is a great MC and its too bad people don’t get into the _whole_ album. Number one on the list is “Baby Got Back”, which I will again plead guilty to. I can’t extend as much love to the entire album on which it resides, though.

Further down there’s a write in vote for DJ Kool’s “Let me clear my throat”. Definitely seems to be a favorite of your average Dallas frat boy, though I have to say its really a quite good cut on a not-horrible album. “Getting Jiggy Wit It” is also a write-in, which I feel totally guilty for owning. I keep it on my iPod as penance.

This memory isn't going to manage itself

On a whim, I took a shallow dive into the world of C this weekend. Its been a long time since I delved into C. I ended up spending nearly as much time tweaking a build script with the ever-amusing Rake as I did remembering my C skillz[1]. In the end, my goal was to write a simple program that just reads a file and writes it back out. Nothing @cat@ couldn’t handle, sure, but you gotta start somewhere.