Thu, 10 Sep 2009 20:29:00 GMT

Where to Start?

When you run a race the rules are simple. You start at the start line and you finish at the finish line. Your only goal is to get from one point to the other. Software development is nowhere near as simple.

Yesterday an underclassmen friend of mine asked, "I want to build an application, where do I start?" Being in his position at one time, I can see where he's coming from. You have no defined start line or finish line and there are an innumerable amount of paths you could take. Schools do a very excellent job of showing you how to get between two points that they specify, but in the real world those points aren't nearly as well defined. That is why software development is more than just coding. Software development is about defining the constraints of the race and then, running the race.

Every project starts with a problem that needs to be solved. It is necessary to translate that problem into a set of goals. Once you have defined what your goals are, you have established a finish line. To pick your start line, select the most important goal that is the core of your project. For example, if you're creating a to-do list application, the most important feature is obviously the ability to create a list. Something like search may be nice, but it isn't critical. To build the path between start and finish, keep selecting a new start line after each goal is completed. Every goal is in essence its own race. Each race can be broken down into smaller goals. By breaking a project down into its most basic elements, it becomes much simpler to build than when thinking of the project as a whole.