Projects vary in scope and size, and the challenges they entail vary likewise. As a lone web designer, the biggest job I am responsible for is FlashDen. Along with thousands of active members all chatting, uploading and buying, the site processes large amounts of money and large amounts of traffic.
Designing, redesigning, maintaining and working with developer team has given me some useful insights and tips for making life easier. And since today we've launched my latest redesign of the site, it seems like a good time to write up my top 7 tips!
1. Design and Code for Maintainability
The first and biggest tip I can give, is to design the site so that it's easy to maintain. Often times when designing a site you might sacrifice things for aesthetics. For example you might use images where text or styles would suffice. Or you might deliberately choose a menu structure that has no room to grow. When the site is large, this becomes a really bad idea.
When I built the very first version of FlashDen almost two years ago, I used images for buttons. They looked really nice, but I wound up with a library of 100 different button images, not to mention rollovers. Then in the next couple of months every time a developer needed a new button they had to ask me to create an image. Needless to say I learnt that lesson pretty quick and we switched to a single button class that maybe doesn't look as good, but is much better for peace of mind.
Another aspect of maintainability is thinking about how the site is going to grow and change. For example, as new pages get added on, where do they go? Early on I wanted to have a horizontal navigation, but this is really limited After some experimenting, we wound up using a vertical nav, allowing for submenu items, and then on top of that, added a tab structure into pages to allow for related pages to be grouped together. I'm not saying it's the best navigation in the world, but it certainly means we're not redesigning every time a new section is added to the site!
So in designing for a large site, look for ways to make life simpler later, because you'll be glad you did!
2. Figure out your User Groups and Tasks
One of the biggest differences between a large site and a small one, is the number of different user types who might be using the site. For example on FlashDen, there are buyers, authors, visitors, admins, and members. Each group has a different set of aims and tasks they have to carry out. Sometimes these tasks overlap, but sometime they are quite different.
The best example of a place where user tasks are at odds with each other is on a homepage. Nowhere else on a site does every user group converge, and nowhere else is it so vital to make sure everyone gets what they want. And of course you have to be careful that in serving one user group you aren't ignoring another.
In this latest redesign of FlashDen, the biggest area that I worked on was the homepage. The first thing I did was list out to myself all the things that each user group needs to do:
- Buyers - People who are on FlashDen to purchase files
Start browsing items, start searching, access their personal homepage, deposit money, learn how the site works (for newer buyers)
- Authors - People who are selling goods on FlashDen
Chat with other members, get featured on the homepage to push their items, find out about site news, quickly get to their portfolio & earnings
- New Visitors - Potential Buyers/Authors/Members, who have just arrived
Learn what the site is/does very quickly, get started, find out types of files and prices
- Members - People who aren't really buyers or authors, but just participate in the community
Chat with other members, see site news, browse files
- Admins / Reviewers - Our staff who manage file approvals, moderate forums, and generally participate
Get quickly to file approvals, see the latest forum threads, hear site news
When you know what different user groups want to do, then you can design a page that solves all their needs. Needless to say this is a task that gets exponentially harder the more groups and tasks there are. On other pages in the site, you will often get a subset of user groups to worry about, but on the homepage they all converge. Not coincidentally, the homepage is the most important bit of design work you have to do on a site.
Before you can solve the different needs though, you need to prioritize the user groups, and in order to do that, you'll need to understand what the site is trying to achieve.
3. Understand the Site Goals
Although every user group naturally feels they are the most important, it is up to you to prioritize them according to what the site itself is trying to achieve. For example on FlashDen after sitting down with the team we drew a few conclusions as follows:
- The top priority for the site is to serve buyers. When buyers are served well they keep buying bringing income and simultaneously serving the authors.
- It's vital to get new visitors to quickly learn about the site and hopefully become members. FlashDen is still in a relatively new market, and new competitors are still appearing, so that makes it more important to capture visitors and convert them to buyers or authors or members.
- Authors are important because at its heart FlashDen is really about her authors, but out of all the user groups they are the most committed to the site.
- Members are not as important as Authors and Buyers, but do contribute to the community surrounding the site.
- Admins / Reviewers are the least important as they are a paid group.
So following from this, it's possible to conclude that the homepage needs to server users in this order: Visitors > Buyers > Authors > Members > Admins.
Understanding what your site is trying to achieve is the final thread that sews your user tasks together and tells you what you should be trying to put on the page. Ideally on every key page you should identify the user groups, tasks and priorities. For a vital page like the homepage I do this formally on paper, and for lesser pages I will often just do it in my head while designing.
4. Design, Refine, Refine, Refine ...
It's only after you've figured out user groups, tasks, site goals, priorities and so on, that it's time to design! It is really vital that you do this first, because on a practical level, it dramatically lowers the odds that you are going to have go back and redo your design. Whenever I have just started designing a big site, without really analysing first, I have inevitably had to rework lots of screens or even whole interfaces.
Lots of designers like to use wireframes at this point - that is to simply lay out a bunch of lines and boxes indicating roughly where things should go. Personally I prefer to work in Photoshop from the start because I'm quick enough and it lets me really see what's going to happen. I also think that there is more to information design than where something appears on a page. Simply altering colours and background colours can make a page element further down the page suddenly seem more important.
Once you do have a rough idea of how the information needs to work together, you should come up with a working design that is generally OK, and then refine, refine, refine. I often will wind up with 5 or 6 versions of the same look, where I've tried varying different things like type sizes, images, layout alterations, backgrounds, and so on, to see how it affects the information you're presenting.
No matter how good you think the first layout is, I can guarantee that after spending more time and coming up with more versions you'll have discovered that your original wasn't quite as good as you first thought. Sometimes you wind up throwing out the whole design and starting again, but if you do have a good base, then refining should get you to a great finish.
5. Get Others' Opinions, but Make the Final Calls
In any large job you are going to have a lot of other opinions involved. In most cases these will be the opinions of your client. Prior to starting FlashDen, I used to work with all sorts of companies building websites. Among them I did have the misfortune to design for several large insurance companies and a few governmental organisations. I say misfortune because when you get to that size of client you are dealing with a lot of stakeholders, and in many situations it isn't clear where the real power to make decisions lies. This can result in endless meetings, endless changes and a high degree of difficulty for carrying through your vision.
Whatever the client, it's really important to get their opinions. Aside from anything else in most cases they know a lot more about the business than you do. Hopefully they also know more about the users than you do, and with this knowledge will be able to give constructive advice.
It's also important to get the opinion of the development team you are working with. At FlashDen we're fortunate to have two devs who have a lot of skill in user interface design and usability. And their input, along with the rest of the team, made a lot of difference to the end product.
But in the end, it's up to you as the expert designer to come up with the final call. If you have a tough client this can be tricky, because a client often believes they should make the final calls. If that is the case, you need to (a) find ways to explain, educate and show the client that your choices are for their benefit; and (b) sometimes bite the bullet and accept the client's directives as a further constraint in your project, and find ways to make it work.
6. Organise for the Future
When you are coding up a design for a big site, it's really important to again think about the future. How you manage your files and folders will impact you greatly later. For example recently we have decided to build a sister site to FlashDen that focuses on audio only called AudioJungle. To make things simpler the site is going to run the same HTML, with just stylesheets to make it look like a different site. A development like that throws up all sorts of new challenges to my file and folder structures, my stylesheets and my HTML. Here are some things to keep in mind:
- Organise yourself into a good folder structure
Scripts, stylesheets, interface images, content images, and so on, all need to be kept separately. With a small site you might be able to just dump things together, but the bigger you get the more important it is to be able to find what you need.
- Use a coherent and intelligent naming system for your files
There's nothing worse than looking at a pile of images with names like "gd_l3.jpg". How you do it is largely a personal matter, but I find naming using common prefixes and descriptive file names helps a lot. So for example I might start every image going in the header with the word 'header_', every background with 'bg_' and then a menu background from the header would be called 'header_bg_menu.jpg'. Prefixes have the advantage that when your files are sorted by name, they all appear together.
- Use Subversion
This was forced on me by our developers, but thank goodness it was! Subversion tracks files and file changes and stops you from overwriting other designers/deveopers working on the same project. Also importantly it helps you roll back to old versions of things. It takes some getting used to, but even minus all the reasons developers use it, it's worthwhile for HTML/CSS designers. Don't know about Subversion? Check out Subversion for Designers
- Be thoughtful about how you write your HTML and CSS
It's really easy to make a mess with your HTML and CSS files, and it's really hard to clean them back up. After four redesigns, I'm still using many of the same CSS files and it is a mission cleaning up classes that aren't used any more or finding obscure definitions wrapped in lots of layers. Use lots of comments, possibly even multiple stylesheets, and make sure you name your styles well!
- Get Browser Compatibility working EARLY
This is an area I went really wrong with FlashDen and we've been paying for it ever since. My initial layout worked in IE7 and I ignored IE6 until after we'd finished building the whole site. Ever since we've been adding IE conditionals, and hacks and workarounds. It's much easier to make something compatible when there are only a few elements on the page than when you've built a massive site, so don't follow my foolishness!
7. Make it Easy to Develop With Your Stylesheet
The bigger the site, the less likely a designer will get to see or modify every single page. If you're a single designer on a big site - like me - then you also might not want to be called in for every thing. So it pays to make a stylesheet that can almost by default makes things look nice. For example:
- Make sure you style default elements like <input>, <strong>, and so on.
That way the page will automatically present well. If you rely on people doing things like <strong class="my_bold"> then inevitably you'll wind up with variance on pages.
- Create reusable elements that developers can use.
For example on FlashDen we have a table class called "general_table", that makes a good fall-back style for data. When I have a chance to style a page I can do more specific types of tables and data highlighting, but at the very least a developer putting together a page has a good all-round table style to use.
- Make sure your page layout has a structure that looks nice even when it's just got text in it.
Inevitably there will be pages which you haven't had a chance to add images to, and which may look a little boring. By using things like heading styles, sidebars, and so on, you can make sure that they still look pleasant and have some visual style. For example on FlashDen we wrap most text blocks in:
And this by default wraps the text up with a nice little border around it and a heading. It's easy for a developer to work with and does a good job of separating text up and making it look more readable. We also have a sidebar component which is just another package for extra text content, but that again makes the page look more visual.
Naturally it's optimal if every page does go through a designer, but it's also much less stressful knowing that even if they don't, it'll still look professional and uniform.
What's your opinion?
So those are my tips, if you have some of your own from working on bigger sites, leave a comment!