50 Axioms of Web Application Development
This is from my friend Cale Peeples. It's been passed around via email, so I decided to publish it. Looks like Cale did too. I've added to the list on the bottom. I didn't want to spoil Cale's prose.
- If you choose your technology before your application you'll need to re-invent some wheels.
- If you decide how your application will look before you decide what it will do you're not building an application for users.
- You need Personas, Workflows and Use-Cases.
- Don't let your engineering team define the features.
- Framework and Feature set can be different.
- Hire a real project manager.
- When real users can't be found, talk to Professional Services or Sales. Not marketing or Engineering.
- Nobody thinks like users - except users.
- Extra clicks aren't bad if the path is helpful.
- Wizards are good once - make sure you build a tool that can use them and turn them off.
- People like MS Office, and it works.
- Write proper contextual error messages.
- Build multiple messaging systems.
- Sometimes webapps need a training system.
- AJAX won't save you.
- AJAX won't scale.
- Hire a proper DBA.
- Fully addressable apps are better than not. (Multiple access points)
- Make sure you have someone on your team that knows about session management.
- Single Sign-on.
- If your search is broken, fix that first. Then your filtering. Then your navigation.
- Data grids are a pain in the ass. Everyone wants one and none of the pre-built ones are any good.
- Nobody wants to Drag-and-fucking-Drop except for sales guys.
- Spend as much time as you can with the team that is building you app - they will make it or break it
- Group consensus will kill you and the project.
- If anyone tells you they need an icon for something and they can't tell you what that something is - punch them in the eye.
- Feature creep will happen - this is why you need to have a good relationship with the people building your app. (see #24)
- Don't ignore your Log-in page, error pages, 404's or anything else.
- If your app takes more then 2 seconds to do something and you can't make it faster, you need to add a status message, bar, throbber etc.
- Separate From from Function in the beginning and you can work on them in parallel the whole time.
- Keyboard controls are sweet as.
- Users will want to print complex pages - let them and provide them with the right tools to do so. (I like pdfs)
- If you're going to let your users customize you app, you have to provide support to them.
- Inline help is awesome, but if you can't support it fully you're better off not having it.
- Images will need to be localized - make sure your designers have done this before. You do not want to make a "submit" button for every language.
- German has some very very long words and will ruin your carefully constructed layout.
- Vertical scrolling isn't bad - Horizontal scrolling looks like a mistake. Always.
- Your app should use the same language and abbreviations as your users.
- Business logic doesn't always make sense, but it's what your users are accustomed too.
- Don't put the "United States" at the bottom of the damn drop down list just to keep it in alphabetical order if 95% of your users will select it.
- Auto format my telephone numbers, dates and zip/province codes for me. I don't care what the database looks like.
- Metadata.
- Prototype everything you can every-time you can.
- Internal surveys will tell you nothing.
- Jacob Nielsen and the "Tog" are tools but they are occasionally correct. Although frankly, they've done more harm than good.
- The Five Hat Racks will save your ass. (Category, Time, Location, Alphabet and Continuum)
- If you can't draw it on the whiteboard then write it down. If you can't do either you're a manager not a do-er.
- You need to have a multiple phase and release plan.
- Testing in the real world is time consuming, expensive and frustrating, but ignore it at your own risk. If you're committed to doing it, hire a professional.
- Agile development is cool but it runs the risk of becoming too focused too fast and losing sight of the larger picture.
- Don't read lists. Write your own.
Here are my additions...
- Focus on one thing; the right thing, then kick that one thing's ass
- Design for the worst case scenario. This means do everything possible to break the design, then design around that.
- Bucket tests are great when you're trying to improve a feature, but for gods sake, know what you're trying to get out of it
- Take risks
- When in doubt, WWFD (What Would Flickr Do?) except when it comes to drop down navigation
- Usabilty tests can scare the shit out of you, do them early and often
- Test it on anyone you can find... even one person is better than nothing
- Not every bug is a P1
- User experience first, monetization second
- Work with as small a team as you can possibly get away with
- Don't sleep under your desk, nothing is worth not having a life

May I add?
Always verify, validate, and format user input. Always. And if you do it on the client, do it on the server as well, just in case someone has scripting disabled, or decides to build something to jam stuff into your server side.
Posted by: Eric Blade | September 26, 2006 at 03:49 PM
May I add as well?
If your development team is greater then or equal to 1 make sure that you know who's doing frontend and who's doing backend.. even if some of the frontend guys are great backend coders (and vice verse)
Posted by: David Stone | September 27, 2006 at 12:57 PM
Another add...
Always prepare for the l4m3r. 16 year olds around the world need to make a buck. Never expose user-specific information in parameters, urls, or redirects.
Posted by: Ryan | September 27, 2006 at 11:31 PM
Fantastic stuff
Posted by: Alex Rudloff | September 28, 2006 at 08:28 AM
"AJAX won't scale."
Yet, "When in doubt, WWFD (What Would Flickr Do?) except when it comes to drop down navigation".
I think Flickr's success disproves the former statement. Flickr's user experience is one of the best I've seen and they also do more Ajax than any other site I frequent.
Posted by: josephgrossberg | September 28, 2006 at 09:49 AM
"AJAX won't scale" is Cale's. I don't totally agree with it. But I think he's mostly thinking about enterprise applications.
WWFD is related to user experience and community development. Though i'm not going to doubt their technology. I love Flickr, it inspired the shit out of me in 2004. It woke me up from a creative fog.
Posted by: Beach | September 28, 2006 at 10:38 AM
and yet another: ;)
Document your work in some form or you will become "support" shortly after you "release."
Posted by: Ryan | September 28, 2006 at 12:42 PM
Don't let bright shiny objects draw you too far from your path.
Conversely, don't stay on your path too long.
Most of your users will hate every change, at first.
Posted by: Cheralyn | September 29, 2006 at 02:36 PM
Congrats to the author of the "50..." I would like to add one more: save in your security vault all kind of written information related with flaws about your work. you won't like someone non-related to your team, to check on it.
Posted by: Cordero | November 01, 2006 at 10:52 AM
I don’t want to wait till the end of Summer :( , I want it now. Who with me?
save your time and join me. ;)
Posted by: BustyBoots | May 31, 2007 at 04:00 PM
Offers ASP/PHP Programmers hiring,SQL/MySQL development,software outsourcing, Offshore software development,PAYPAL Integration, Joomla Customization, Shopping Cart Customization, Script Instalation,Web Development and Web Design etc.
http://www.asiawebmedia.com
Posted by: asiawebmedia | June 13, 2007 at 12:53 AM
I agreeits very imporant to make sure validate and format user input and its really important to make sure forntend is supporting backend and vice verse.
http://www.website-design.com.au
Posted by: steve M | September 11, 2007 at 03:52 AM
I agree its very imporant to make sure validate and format user input and its really important to make sure forntend is supporting backend and vice verse.web application Development a>
Posted by: Mac Steve | September 28, 2007 at 10:54 PM
A website design is more than just assorting few good looking images with HTML pages. A professional website design process can influence ones’ web presence in a great deal and detail.
Posted by: Website design | March 20, 2008 at 04:05 AM
A website design is more than just assorting few good looking images with HTML pages. A professional website design process can influence ones’ web presence in a great deal and detail.
Posted by: Website design | March 20, 2008 at 04:10 AM
"
Website design services providers across the globe soon need to make themselves educated (if not exactly to stay ahead) about the Search Engine (did somebody say Google?) mandates. Customers today want their sites look good and sell well!
"
Posted by: Website design | April 08, 2008 at 03:01 AM
Nice article!
Regards
SBL Web Development Solutions
http://www.sblsoftware.com/web-development.aspx
Posted by: SBL Software Development | March 02, 2009 at 10:54 PM
Good informative post.
Posted by: Business Process Outsourcing | June 26, 2009 at 05:46 AM