Complexity vs. Simplicity
Why can't some developers code something to be plain and simple?
When you are given a project by a client, do you think of a web site or application that does just about everything or do you break it down to what's functional and feasible for a web site that does the job?
Let me try a different approach.
Every programmer would LOVE to balance the latter and think "that's the right answer," but we can't do that, can we?
In case you haven't noticed, I'm starting a rant.
Over the years, I've worked on a number of projects, but one project that I keep coming back to is a simple one. All the company wanted was a screen where the user would type in a search term, return the results, click on an entry, and view the details of that particular record.
I was asked to look over the code that some developers wrote in the past. Once I started looking over the project and the code, I noticed something that almost turned my hair white (whiter still).
The entire project had multiple solutions...for the client side. I thought, "Ok, this isn't so bad, I've worked with multiple solutions before.
Then the developer said, "now, let's look at the server part."
The server part was also in multiple solutions. However, all of the solutions made up a "server" model. When I mean server model, I mean the server was handling all incoming requests, creating customized messages sent to and from the client, and would run as a background Windows service.
I felt like I was witnessing the reinvention of the wheel.
After waking up and recovering from my twitch, a couple of things entered my mind:
- Couldn't the architect of this system use a web server as opposed to creating a brand new "application" server from scratch? I'm going to go out on a limb here and say that EVERY company should now have an Intranet web server, so why not make it a web app?
- Is this an ego thing? Even though I'm a developer/programmer, I'm humble enough to know when enough is enough. :-)
- Does the developer think he has job security in these troubled economic times? Is management scared of firing him? ("If he goes, the system won't be supported anymore. No one knows how to maintain it!")
- NO documentation is even remotely visible inside (or outside) the code.
Of course, there is something to be said for scalable applications, but where do you draw the line? It seems like using a shotgun to kill a housefly. Definitely overkill.
I guess my question to the audience is two-fold:
- How do you gauge the granularity of a system?
- Has anyone ever experienced a developer who creates complicated solutions when a simple solution is all that's necessary?