November 12, 2008 1 Comment
It’s interesting to note that many web developers go through a similar process over the course of their careers. One of those rights of passage is the building of a particular application type. Cutting your teeth on building a larger scale application (at least, larger than a contact form that emails somebody and larger than hacking up an install of WordPress) seems to inevitably involve developing a custom application, either as a personal project or as some client deliverable.
Most importantly, I believe that a tried and true web developer should go through this process to understand the pain points of developing larger applications. There are three different types of applications that are certainly great exercises using any language of choice:
- The forum
- The blogging engine
- The content management system
Each of these often has a number of concerns that are always pertinent — such as user experience design and workflow, authentication, spam handling, email management and certainly database design.
Over the months, I built a small forum which could definitely pass for a forum anyway (simple and does its work). Forums can be simple or they can be complex. Software like vBulletin or phpBB have grown to include a massive number of features, most of which are overkill for the average forum. There are certainly some critical design decisions that have to be made such as threaded or inline thread replies, thread notification, thread stickies, and user registration.
The Blogging Engine
Forums are probably the least popular application type these days as most people seem to prefer building a blog engine instead—the similarities of which are interesting. Both have a main topic with the ability for people to respond. The main differences are in who’s allowed to post (everybody vs admin) and who’s allowed to reply (registered vs anonymous).
Over the last few years, the blogging engine has certainly become one of those things a web developer just does—usually as a result of outgrowing whatever engine they were using before.
Blogging engines can be much more complex than a forum, though, including trackbacks and RSS generation. (Not to say that RSS couldn’t be in a forum; in fact, it probably should. It’s just more prevalent in blogging.)
The Content Management System
The pinnacle project of a web application developer is the custom content management system. Born from the frustrations of trying to wield open source or commercial applications, it seems to be every developer’s duty to try and build a custom CMS though it could take a very long time to build one from scratch without using any framework. How do you manage different object types? Templating, authentication, workflow, internationalization and localization are just a few of the issues you have to contend with in building a CMS. Do you go simple or do you go complex? How does the average user, with little web experience, find their way around the application? How easy is will it be for another developer to build a module or plugin for your CMS.
Building a custom CMS is a fantastic excercise on so many levels — well beyond what you run into with a blog or forum. Above and beyond forum design and blog design, CMS design really requires you to step outside of yourself and understand what the pain points are and how to solve them. This might also explain why most of them seem to suck and why developers around the globe continue to feel the need to reinvent the wheel (like my chief will say)but the fact remains that at a point in time when u really have the time…reinventing the bumpy wheel is juts ok.
But it’s also the avenue with seemingly endless possibilities. Is it hosted, is it custom, is it for the designer, is it for enterprises, and so on and so forth.
What type of project do you feel is a great way to grow as a developer? As always, comments are open and my mind remains open as well….cheers.
PS. If u are in Nigeria and u feel we need to organize some sort of a developers conference like we have in other parts of the world..pls get in touch and let’s do something…..