Brent Simmons’ weblog. I write NetNewsWire, a free RSS reader for Mac and iPhone.

How I get started on a new app
I’ve been working on small-ish apps lately. Web apps and Cocoa apps. Here’s how I get started on a new app.

1. Define precisely what it does. I may or may not write it down—the goal is the feature list should be so small that I can keep it in my head without even trying. Also, the app should be describable in one sentence, even if that one sentence doesn’t cover all the features.

2. Sketch out the user interface. I use actual pen and paper. I may make several sketches until it’s right. A few days may pass between sketches as it gels in the back of my mind. The final sketch has labels and arrows so there’s no question of what does what.

3. Layout the interface in Interface Builder (if a desktop app) or with BBEdit and a web browser (if a web app). There may be iteration here, and I may have to go back to step 2.

4. Write a list of milestones. They should be simple, very fine-grained. The first milestone is usually just a do-nothing app that builds and displays the interface. The second milestone will do some small thing with hard-coded data. I’ll usually write down the first five or so milestones. I do not do a milestone list that takes me to the final product. Why not? Because I know to expect the unexpected. So what I do is add to the milestone list as I go along. I won’t know what milestone 10 is until I do milestone 5, for example.

I do fine-grained milestones because otherwise I get discouraged. I like crossing items off lists, and the more often I get to do that, the happier a developer I am.

I also use pen and paper for lists instead of a computer so I don’t have to switch out of my development environment to look at my list.

5. Now vee may perhaps to begin... In other words, get to milestone 1 and keep going.

I don’t necessarily advocate this process, by the way, I’m just describing how I personally get started on a new app. Note that I’m not working on a team or doing apps to someone else’s specs, both of which would require different processes.
12:05 pm #

New feeds added to the Mac News aggregator
Yesterday I added a bunch of feeds to the Mac News aggregator. Up to 15 feeds now.

I confess: I’m a news junkie.
10:35 am #

Cocoa reminds me of Frontier
In some ways Cocoa reminds me of Frontier in that there’s (usually) an easy way to do something and then lots of hard ways to do something.

The problem is that the easy way is not always obvious. The other problem is that I forget the rule that says, “If you’re standing on your head to do something, look for the easy way.”

So I was looking all over for how to set up an NSSplitView—a split window, like that used by most email apps. I couldn’t find anything. There’s no NSSplitView in Interface Builder’s widget pallete.

Then finally I noticed that I could do it via the “Make Subviews of” submenu of the Layout menu. It was so easy. And of course it just plain works.
10:32 am #

News archive...

 

Software

NetNewsWire for Mac
NetNewsWire for iPhone

Me on

Twitter
Flickr

About me

I learned programming way back in 1980 on an Apple II Plus, and have been an Apple fan ever since.

I work for NewsGator Technologies, Inc.

I like cats and spaghetti and swimming in the ocean.

My favorite post

It’s so hard to teach squirrels to play baseball...

© Copyright 1999-2008 Brent Simmons.
Seattle, WA (Ballard)
All trademarks are property of their respective owners.