Saturday, September 22, 2012

Software project estimation: A little hands-on experience goes a long way

Earlier this month I attended a one-day Agile software development class at The Forge by Pillar in Ann Arbor.  A few of my teammates from work attended the class with me; the class ended up having around 25 attendees total, with maybe a third of those being developers.

On the morning of the class, we learned that as part of the activities of the day, we would be implementing a functional clone of a classic arcade game of our choice (Pac-Man, Space Invaders, Centipede, etc.), using a tool called Scratch, in 3 20-minute development sprints.

This initially struck me as aggressive -- a new game, complete with graphics, written starting from scratch, done in not a day, but in 60 minutes?  I suggested to my team that we do an implementation of Frogger, as that struck me as being relatively straightforward to implement.

The instructor then went on to ask if we had any "spikes" (unknowns that would merit taking time to do a proof-of-concept, if this were a real project) regarding the Scratch tool that we'd be using for development that he could answer for us prior to the first development sprint.  Not having been familiar with Scratch prior to taking this class, I found it difficult to come up with any questions more specific than "Um, what exactly is Scratch, and how does it work?"  (I did come up with some better questions such as "How does sprite collision detection work in Scratch?" but the point here is that it was hard to even ask questions about a framework that I wasn't familiar with.)

After writing up user stories (requirements) with my team, the class instructor did a quick demo of the Scratch tool; then, the first development sprint started, and I was able to get hands-on with the Scratch tool for the first time.  Within just the first couple of minutes of that first development sprint, I had a far better idea of what Scratch was, what it could do, and how long it would take to do things with it.  In short, Scratch allows you to set up sprites (characters, objects) on a playing field, and then manipulate them via a simple "drag-and-drop" event-driven programing framework.

AgileFrog-Scratch

This experience was striking as an illustration of the additional accuracy with which a project can be estimated, and how much better specific "unknowns" about an implementation can be identified, after there has been an opportunity for the development team to get some hands-on engagement on the project – particularly in projects involving a language or framework that is new to the development team prior to the project.

Wednesday, September 12, 2012

Loving my iPad Pocket / $0-Monthly-Fee iPhone

What’s my favorite technology purchase that I’ve made in the past 2 years?  It’s my iPad Pocket Edition; I also like to call it my $0-monthly-fee iPhone.

That is, my iPod Touch.

ipod_touch_4th_gen

My iPod Touch (or “iTouch” for 33% less syllables) has become one of the items that are always in my pants pockets when I leave the house in the morning, along with my keys, wallet, and phone. 

Why do I like the iTouch so much?  When I’m in a wi-fi zone – which in a typical day for me, I am in much more often than not – it can do essentially everything an iPhone can do except make phone calls.  It’s amazing to have the following readily available from a device I carry my pocket, almost all of which are free or very inexpensive:

  • Web browser
  • Calendar with cloud sync
  • Music (mp3 player, Pandora), Podcasts
  • To-do list with cloud sync (Appigo Todo)
  • Clock / stopwatch /countdown timer
  • Games (tons of great, inexpensive options)
  • Physical game aids like 7 Wonders Scorer
  • Support for 99% of iPhone apps in the App Store

Insofar as they affect me, there are only three real major “missing features” affecting the iPod Touch as compared to an iPhone:

Can’t make or receive phone calls.  I work around this by carrying, in addition to the iTouch, a nice compact “dumbphone,” the Samsung Hue, for which I have a prepaid plan with Verizon that gets me phone service for a grand total of $7.50/month.  I get very few minutes for that price, but since I only use this phone for quick calls to home and for emergency purposes, I’ve never come close to running out of minutes.

No Internet access outside of wi-fi zones.  This is occasionally bothersome, but only very occasionally; typically a couple of times per month when waiting to pick up a pizza or to get a haircut.  For the significant cost savings vs. a full phone and data plan – more on that below – it’s certainly something that I can live with.  And many apps have good “offline mode” support – implemented mostly to cater to iPhone users on airplanes, but working just fine for iPod Touch owners too.

No GPS.  When I take an occasional long trip alone to an unfamiliar place, I do notice the lack of GPS capability, but it’s nothing that can’t be worked around “the old fashioned way” by just printing directions off the Internet before leaving.  (How did people find their way around before the Internet?)  On vacations, I’m pretty much always travelling with my wife, and we do spring for a smartphone for her – as a so-called “stay at home mom” she’s actually out and about on a daily basis far more than I am – so we just use her phone’s GPS.  If I travelled alone more often, I’d make a one-time purchase of a standalone GPS device for the car.

The cost savings vs. an iPhone are, to me, well worth the minor drawbacks:

  iPod Touch 4th Gen (32 GB) + Prepaid dumbphone iPhone 4S (32 GB)
Up-front hardware cost $275 + $50 = $325 $300
Monthly fee $0 + $7.50 = $7.50 $70
Total over 2 years $325 + ($7.50 * 24) = $505 $300 + ($70 * 24) = $1980

About $1500 to spend however I like, in return for a couple of (for me) minor drawbacks?  Yep. I’m in.

I like the iPod Touch enough that even though I’ve had my current 4th Gen iTouch for only about a year and a half, I’m also in for another $300 on the new iPod Touch 5th Gen that was announced earlier today.  To paraphrase a tip from @shanselman, it’s worth spending money on something that you’re going to get heavy use out of every day – and for me, the iPod Touch is that.  And at an amortized cost of under $13/month over the next two years, I consider it a bargain.