As I was working on a web site, one of the beta testers responded saying they didn’t like the default sorting (vertical) of the CheckBoxList elements used on a ASP.NET web form.
The CheckBoxList web control has a property called RepeatDirection which can be either Vertical (default) or Horizontal. Below shows two examples of how the data items will be rendered using each of the two RepeatDirection options.
4Guys From Rolla wrote a nice article titled "Helping Visitors Search Your Site By Creating an OpenSearch Provider". Scott Hanselman of Computer Zen also blogged about this a few days ago on his post named "Adding OpenSearch to your website and getting in the Browser's Search Box".
One of the nicest features of modern browsers like Mozilla Firefox and Microsoft Internet Explorer is the search bar in the upper right corner. With this tool you can quickly search any number of websites without having to first visit their search page.
-- Scott Mitchell, 4 Guys From Rolla .com
Having the benefit of writing lots of code over the last decade or so, I quickly came to realize that the best written function/application doesn't mean it will be accepted by the client.
I've had some awfully written applications that were loved and my best written applications (using the correct design patterns along with new methologies and techniques) were disliked.
I was even thinking about blogging about this before Jeff Atwood of Coding horror posted the article titled "Nobody Cares What Your Code Looks Like". Jeff concludes stating:
remember this: nobody cares what your code looks like. Except for us programmers. Yes, well-factored code written in a modern language is a laudable goal. But perhaps we should also focus a bit more on things the customer will see and care about, and less on the things they never will.
This has been my philosophy over the last few years. It doesn't mean that I need to write poor code - especially since I'm usually the one who needs to maintain the code base. It does mean that nobody really cares how it is written as long as it works the way the client wants it to work.
This is especially true on web development projects. I've studied web design trends, usability, navigability, and all those other user experience categories of web design. However, in web development everyone who uses an Internet browser believes themselves to be a certified web designer and can (and does) comment on the page presentation.
So just like in code, clients usually won't care about your best web design, web standards, or even a standard presentation schema (layout, colors, fonts, etc. across every page of a web site). Just remember, it's their product and you're just a vehicle to get there.
I've dubbed this egoless programming - putting aside the way you want things to be done in order for your clients to get their product. The clients will ask for things that will result in a sub-par product from your own viewpoint and standards.
But the client doesn't want your product, they want their product. Even if their product looks like someone used Front Page (or MS Word) to design it. The best we can hope for, is that the product is accepted and used and -maybe- we'll get another shot at fixing it later...
Unfortunately, these applications usually become showcases and are forever associated with you as the developer. Even if you disagree with how the client wanted it implemented, you're now stuck with it for better or worse.
I also discovered the Ten Commandments of Egoless Programming as written about in Jerry Weinberg's book The Psychology of Computer Programming. Commandment number two fits in nicely with this article and should be repeated to yourself on a daily basis. Here's a few other commandments to keep in mind.
- You are not your code.
- Treat people who know less than you with respect, deference, and patience.
- The only constant in the world is change.
- Fight for what you believe, but gracefully accept defeat.
Repeat the mantra: you are not your code