Reinvent the wheel

Everyone always says that you shouldn’t reinvent the wheel. I don’t necessarily believe this to be a concrete statement, although in some instances it works. I didn’t feel like spending the time/effort to create a blog and knew that people had already gone through the trouble, exo facto I used WordPress (sidenote: I’m not sure if “exo facto” is an actual phrase or not, I just like using it). However, in other instances I think it is absolutely crucial to reinvent the wheel to a certain level, usually when the preexisting wheel, for lack of a better word, sucks.

An interesting aspect involves not reinventing the wheel while reinventing the bigger wheel. By this I mean focus should be placed on making your code (or whatever) reusable, so that when you’re doing something very similar a short while down the time line you can speed up the process a little bit. In addition to the time benefit, you will also significantly cut down on stupid errors (ie: typos) that will keep you up a little later into the night.

My usual rule of thumb for turning a small piece of code into a function happens when I begin to type that code (or something very similar) in a different location for the second time. At this point I take a few moments, turn the code into a function, update the original location to use the function, and add the function call to where I’m currently working. Tada. Suddenly I never have to worry about implementing that functionality again. If something is similar but different enough that you can’t do this (as is the case with iBatis SQL maps), I avoid reinventing the wheel by copying a similar SQL map, and changing just what I need to change in order to work with my new object. If I were to try and retype the entire map from memory I would surely fail at it; firstly, because I have no idea what the exact syntax for the entire map is, and, secondly, I’m notorious for making a typo in a location that isn’t completely destructive but will prevent something from working in precisely three days time.

Because of these reasons I am definitely a fan of reinventing the wheel when the time calls for it. If noone ever invented the wheel because they thought the current process was good enough, we would be at a lack for several important aspects of our society. I would give some examples here, but I don’t want to. So just believe me. Thanks.

I suppose that in the final moments of my first post I should explain a little bit about myself. I am a Computer Science student at the University of Kansas. I’m currently six hours from graduating, at which point I’ll transition to the life of a Graduate student. I recently quit my job creating web applications for a local power company and took up a job creating web applications for a website that provides education and tools to secondary education teachers (www.transitioncoalition.org).

In addition to my day job (that pays the bills), I work as a co-developer on a start-up called Foodpatio.com. Foodpatio more-or-less provides its users with the ability to order food from local restaurants with a level of simplicity and ease that should be required. If you think the idea sounds familiar, you’re semi-right (I suppose that’s why I started this post on why you *should* reinvent the wheel). Foodpatio has a couple of selling points that make it unique and worthwhile. First of all, you can order from multiple restaurants on the same order, and we take care of splitting it up for you. Secondly, we’re working to provide countless ways to access and order food so that it is always a convenient process. Thirdly, specials are entirely integrated into the normal ordering process so that you will always receive the best price for what you want. Foodpatio is the product of close to a year of late nights and countless design changes and is nearing its release into the world debutante style. I’m pretty excited about it.

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s