Monthly Archives: March 2008

Fancy-pants productivity

There are a few things in this post by “Ryan Norbauer”: (via 37signals) that bother me. One is this idea that “code is meant to be read by humans first and computers only secondarily”. I understand what he is getting at, but even though I respect new advances in productivity, we have to be very careful to keep our core priorities. There’s a word for when the balance shifts away from the user and more to us as programmers: selfishness.

Imagine two programs: one is ugly and hard to read, but it compiles and is bug-free; the other is beautiful and readable, and it also compiles and is bug-free. To the user they are identical. They both succeed.

Now take those two and give them both identical beauty and readability, but accidentally break one so that it either does not compile or runs so horribly buggy and slow that it is useless to everyone. Writing code for other programmers to read isn’t enough. You have to start with code that works before you get all fancy-pants.

This growing trend to raise beautiful code and programmer productivity above the performance or functionality of the final product is dangerous. The final product is what counts. Not how you build it, but what you’ve built: how it scales, how it performs, how it solves a particular problem.

And sure, there are many times when I write slow, lazy code that doesn’t work well. But that’s a compromise you make when you have to meet a deadline, or because you aren’t sure how to optimize yet, not because you start out by deprecating user experience. If you believe Ryan, it sounds like there is a whole “movement” of programmers who toss any potential performance achievements out the window before they even get started.

You can say that great products are complex, and so you need to focus attention on how the software is built and maintained. That is true. When I ported a large application from Carbon to Cocoa a few years ago I made the decision to do so because of future productivity.

You can say that happy programmers create high-quality products. That is also true. When I am feeling most productive I am usually enjoying myself because the work environment I’m in is encouraging.

But don’t put the practice of software development above the actual result, because to do so means you care more about writing code than solving problems.

iPhone SDK and NDAs

“Craig Hockenberry half-joked on Twitter”: about the iPhone SDK non-disclosure agreement and it reminded me of one of my personal annoyances in the development community: we tend to take NDAs very seriously. I’ve always been impressed by how Scott Stevenson in particular can write thoughtful articles about Mac software development that go out of their way to tiptoe around unannounced APIs. In his “latest excellent introduction”: to the iPhone SDK, there are no less than 3 mentions of the NDA in the original post and comments:

“Until that time, the SDK is under NDA and the apps cannot be distributed to the general public.” (Scott Stevenson)

“The iPhone SDK is very well done (can’t say more because of the NDA)” (Florent Pillet)

“To answer without getting into NDA stuff, let’s talk about Mac OS X in general.” (Scott Stevenson)

I’ve also been hit by this community-killer. At WWDC last year I posted to Twitter about new .Mac features and it remains the only tweet I have ever deleted. I had this sudden paranoia that conference staff would kick me out of Moscone and revoke my ADC account. Silly.

But let’s look at reality. Over 100,000 people have downloaded the SDK. This couldn’t be more different than WWDC, which effectively encourages discussion only while in San Francisco by requiring an investment of at minimum $2-3k between conference, hotels, food, and travel. The SDK by comparison is totally free to download.

Put simply, how can Apple expect us to take an NDA seriously while at the same time they spread the applications and documentation covered under this NDA to every corner of the Mac universe?

I’m not a lawyer, but this one seems legally ridiculous. There are a few issues handled by the license:

  • Don’t distribute apps created with the beta SDK. That’s fine, because there’s no good way to do that anyway and giving everyone a level “June launch” playing field makes sense for both Apple and developers.

  • Don’t rip-off Apple’s ideas and use them in your own phone before the SDK ships. That’s also fine, because I don’t care about other phones and generally think Apple already has a insurmountable development platform advantage.

  • Don’t talk about confidential capabilities of the SDK. This is the one I have problems with, because I question if something can be considered confidential if it is shared with 100,000 people.

For years Mac developers have asked Apple for an official, closed mailing list to discuss APIs still under NDA. Maybe things would be different now if Apple hadn’t refused that request, but with a release as mainstream as the iPhone SDK it’s too late to try to control the conversation. I expect a healthy discussion of APIs and business practices to happen on blogs and Twitter and IRC and email, and that’s how it should be.

STAPLE! in Austin today (year 4)

Like independent comics and art? “STAPLE! is in Austin today”: at the Monarch Event Center, off I-35 and 2222. I’ve been on the STAPLE! planning committee for four years now and have enjoyed watching our little show grow from its humble beginnings, but it’s still a completely non-profit, volunteer-led endeavor and we need your support to make it a success. Come join us anytime between 11am and 7pm (or “check the schedule”: for our featured session times), and then come back downtown later tonight for the after-party and live-art show at Red’s Scoot Inn (“flyer”: