Tuesday, January 8, 2008

Reinventing the Wheel

In college, I met several friends who had built their own PCs. I had never so much as opened the case of mine. As a graduation present to myself, having both a little time and a little money on hand, I decided to finally build my own machine.

It was a frustrating experience at times. Not everything went smoothly, but in the end I had **my** machine. I built it, I customized it, and I was very proud of it.

Of course, that was several machines ago. I have not bothered to build another one. My time is too precious, and it is not something I particularly enjoy doing. Let Dell do it for me. Nonetheless, I'm glad to have done it once. I'm not afraid to work on my machines anymore, and I've upgraded them frequently. More importantly, I know a lot more about what is happening under the hood.

Recently I've been cleaning up a PHP project. It was the first time that I put together a site without using a framework of some kind. I did just about everything wrong. I ignored the MVC pattern, and the code I put together is a total mess. (Well.... Maybe not total. My database setup is actually passable. It still shows a lack of understanding of PHP, but the organization there is clean -- swapping out MySQL for another DB should be a snap).

Frameworks are good. If done right, they remove the drudgery from your work. You can just focus on the creative parts. Not that this ever really happens, but it is a wonderful ideal. I will never build a site without one again.

But I'm glad I did this one. Before, I could speak at least semi-intelligently on the pluses and minuses of a few different frameworks, but I only understood them at a superficial level. Now I've gotten my hands dirty in the guts of a web application, and I'm a better web developer for the experience.

Right now, I'm working on my own framework, extending Rhino JavaScript and JavaServer Faces. It may never hit prime-time, but I've managed to get an even deeper understanding through this project. Reinventing the wheel is a hell of a way to learn about wheels.

No comments: