DIY or DIFM?
By Nicholas Rougeux, posted on September 6, 2005 in Web
Almost everything happens in cycles and I've been noticing the mindset towards web development going through its own cycles lately. Most, who care about the future of the web agree that web standards are crucial and can ultimately make our lives easier when it comes to maintaining code, saving money, etc.; but what about the tools we use to create our sites? This is what has me excited but pretty worried and a bit cheesed off as well.
Anyone who's read a book or seen a presentation on the importance of web standards within the last few years will already be familiar with all of their advantages. If you want more info on that, you can go elsewhere. What I'm concerned about is the tools we use to generate all those great websites.
In the early days, all coding was done by hand in programs similar to Notepad. It was probably a little hard to read after several hours, but it worked. There simply weren't many tools in the beginning. Since the web was young, so was the support for a lot of features so the programmers did what they could with what they could use. Soon, programs like Microsoft FrontPage and Dreamweaver came about which made all of our lives easier by generating all the code. We could churn out web pages in no time flat and they had all the blinking text, scrolling marquees, and animated GIFs that our hearts desired. Sure, there were still a fair number of people coding by hand but the tools were the big game and schools were starting to use them to teach students how to make their very own sites.
Eventually, a group of people got the great idea to start pushing for a standard way of coding and the push for web standards began. The biggest problem was that while it was easy to adhere to these standards when coding by hand, the programs that made our lives easier were spitting out code that was far from standards-compliant.
"Who cares? My site works just fine!" 90% of the developers all shouted.
Slowly but surely, they started to care quite a bit and ended up shelving those handy programs for the old do-it-yourself method of coding by hand. They quickly realized that there was more freedom to be had by doing it this way and more control over the smaller nuances that were previously untouchable by the fancy interfaces.
All of this brings us to present time. We went from DIY to DIFM back to DIY. (The acronyms might not be catchy like XML or WaSP but they work for the purposes of this article.) We seem to be heading right back to the DIFM way these days albeit fairly slowly. Those who are interested in helping further standards are working with the makers of those site-builder tools to improve the type of code they churn out and the improvement is noticeable already. This is great news but the programs aren't the only areas for improvement. One area that sticks out like a sore thumb is .NET technologies.
Now, I'll be the first one to admit, I don't know a great deal about developing sites with .NET but I've dabbled in it here and there. It seems to be a framework that does a lot for you so all you have to type is something like
<asp:calendar> and you've got a fully functional calendar. Sure, that's easy but if you look at the code it creates for that control, you quickly realize that working with it and especially styling it is a pain. I should also admit that I believe .NET was created before the big push for standards got its footing so while the code it produces is ugly, it's expected. I also know that there are numerous ways documented by sites to help improve its code and ASP.NET 2.0 is supposed to fix a great deal of these issues. For now though, we're stuck with what we have and it's not pretty. What's troubling me is that the idea of .NET's ability to do a lot for you is very appealing to many developers and as a result, its been adopted quite a bit. I know it is entirely possible to create your own controls to do exactly what you want but there are still the sneaky areas that spit out unmanageable code here and there. From what little I've seen, I half expect there to be a
<asp:createWebSite> control in 2.0 which is even more troubling but I'm exaggerating here (right?).
Not all packages are bad though. From what I've seen, blogging systems like Movable Type, Textpattern, and WordPress do a fairly nice job creating clean code and giving developers a great deal of freedom to create their own templates. I haven't had much opportunity to use these tools but I've played around with the demos and have seen the sites that have been created with them. The catch is, the big companies and corporations don't always want blogs for their sites. They want e-commerce sites, content management systems (that's an article for a later date…), and other various high-end business solutions. For those, they often turn to the .NET or equivalent technologies.
I think it's great to have tools that help the developers do their job but I have yet to find one that does it perfectly and adheres to sensible practices like obeying standards while still giving developers a lot of freedom. Until that day comes when such a program/platform/framework/entity presents itself, I'll be doing it the DIY way.