Monday, March 2, 2009

Initial Thoughts

As an engineer, I'm always tempted jump right into the code. I generally first see how far I can get in actually implementing the solution, and code until I get stuck and have to re-evaluate. This generally works really well in catching any gotchas that could kill the concept really early, and in giving me a quick impression of what I'm getting myself into. In this case, the technology will be very simple, and there are very few unknowns. So my concern turned to...what's the easiest and cheapest way for me to implement this without having to reinvent the wheel?

The Wheel

There are a number of levels of wheel here I'm trying to not re-inventing:
  1. The international calling code data
  2. The users natural tendency to look up this information
  3. The web service framework
  4. The hardware platform
  5. The online experience
Let's go through each one and how I plan to attack them.

1. The international calling code data

To solve #1, I basically needed the data that I could use to determine what calling codes and prefixes were necessary to call from any country to any other country. A few quick Google's found a few basic lists of calling codes to get started with. I knew I'd need the data in a more structured format, so I signed up for a trial account on dabbledb.com. This service is great at taking some semi-structured data online, and turning into a high structured database you can export to any number of formats. I can attest to this process being extremely easy, taking me from this to this:


Having the data in a simple Dabble DB database I was able to export it to a CSV file that I could do something with down the road.

2. The users natural tendency to look up this information

I'm going with the assumption that when users need to figure out what the international calling codes to use, they simple Google for it. I plan to go into more detail on this later, but I'm going with this as the core user story that describes the behavior I want to focus on:
I rarely make international calls and I forgot how to call a certain country. I'm going to google for something like 'how do I dial internationally' and want a quick answer to get me on my way.
My efforts will be centered around capturing the traffic that comes from queries like this, along with hopefully getting into the back of people's minds when they need this info that will lead them to the site directly. I'm going to focus on SEO here mostly, which will include a lot of analysis on what kind of search queries people use most when looking for this information.

3. The web service framework + 4. The hardware platform

A big concern at this time is cost. Going back to my keys for success, low overhead is going to be very important. Thinking through the above list, and my desire to keep things cheap, I decided to go with Google AppEngine as the hosting platform. This solves both #3 and #4 above, all for the awesome price of free! I don't anticipate going beyond the free quota anytime soon, and in the meantime I get free hosting plus an extremely powerful development platform. No better way to learn Python then to just use it (or so I hope).

5. The online experience

Online users are used to common design patterns and behaviors. I plan to focus a lot on optimizing the user experience. Making the experience "fun" is going to be key in sustaining any kind of word of mouth marketing. My plan is to focus on simplicity and "obviousness", while resisting the urge to overengineer and overthink.

Now that I've chosen my platform, I'm going to move on to a prototype.

No comments:

Post a Comment