Disclaimer: i am not pretending to be someone very special, in fact i know that i am not. I am not a kind of specialist like Eric Meyer or Jeffrey Zeldman or Molly Holzshlag nor even Jacob Nielsen nor Guy Kawasaki. No. I am just a web-designer with relatively few years of the experience, nevertheless i would like to share it with those, who might be needing it (everyone once was a beginner). =O)
Design is a great and powerfull instrument. It can be used as to create a masterpiece as a destroy a good piece of work. I have some good examples of both of them. Lately i have been doing some web-related projects with a professional designer, who was creating the visual definition of the websites. I had no possibilities to influence a lot of the design related decisions, so if you can imagine my role was merely a web-implementation of those projects.
Those designers did very nice stuff – the final result was an eye-pleasing content. It was a very masterfully done piece of the art, from my personal point of view, and in no way i could achieve such results alone. My problem was the fact that i had some different thoughts about the sites usabilities. As a matter of fact, i think that there are a lot of designers, who are more painters then designers. Design as a matter of fact should be usable. It means that we are working on providing something that the others are going to use, somethung usefull (at least we hope so).
In one of the projects, the biggest problem that we have faced upon some time, was that the space given for a lot of functionalities was too small to handle any reasonable amount of the information. Imagine a space for the news article with the capacity for only 5 small words. You are going to spend a much more time, rethinking your articles, then at fact were spent while designing. Or imagine a brilliant interface, where the big form occupies only 15% of the page space( the rest are nice images and usefull information). In the last case we came needing to add several big( and i mean really big ) fields to this form, and let me tell you, that we have spent some amount of time, trying to find “the right” words to describe the situation. I am sure, and i can see it all over the net, that such situations are more then common in each and every country as well as in each and every big firm.
We meet usability(“design”) decisions in almost every aspect of our lifes – buying clothes, cars, selecting the “optimal pathes” to our destination points, dressing up, and of course in each and every work, the usability decisions are affecting our productivity, self-confidence and so on. Even not being a specialist in languages, i would say that “the decision” is a matter of a fact an “usability issue”.
My first programming professor at the university, who was not a very nice person to the most of the students, once told us, grunts, one thing, that only a lot of years later i have started to understand and to adapt to my daily job. He said “A good programmer spends about 80% of his time on design decisions and only 20% on the programming.” When i heard that, i spent the rest of the day joking with my friends about “80% sitting in the front of the paper, and 20% writing an excuse for that”. Man, i was so wrong. I wont tell you that this proportion 80-20 is right for the most cases, but there are a lot of cases, when you spent a big amount of time just preparing and planning your work:
- how are you going to do this project ? (modules separation)
- is it possible and reasonable to implement the desired way ?
- what are all the requirements to do the job ?
- will it work with the other parts of your “construction” ? (outside module connections)
- how are you going to extend this functionality in the future versions ?
- how the biggest modifcations are going to affect your work ?
- what is the escape plan ? (plan b)
I would say that for the most of the time, i am trying to follow the principle: “divide & conquer, while uniting”. Whats does it mean ? It means a creation of the independant modules structure, where each module is (in theory) more or less self sufficient, and capable of executing the desired task. Library – is the best word which i can find to describe this type of the structure. One of the best “software architects” i have meet in my life, was capable to say, in a few hours, which modules he needed to create to complete project, and which existing modules (in the most cases open source projects) he is going to use to achieve the final result. To achieve the same result, i believe, that all you need is a good practical knowledge and a good, secure planning.
The compensation for the well thought planning, can be even a bigger amount of time, which you wont have to spent by redesigning your work. Think about your job, as if you are a general in the front of the battlefield, preparing the major offenive. I am confident, that Alexander the Great, or Rommel could have been good software developers and project leaders. Or taking it from another angle – have you ever heard about an architect who has changed the number of the floors during the construction, without recalculating all the needs almost from the beginning ? Something like – “Oh, lets add 2 more floors here and on the right side we will add some pool, it would be nice ! Problems, no, this building wont fall !”. When we do something we have to have a plan for it, otherwise – we dont know what we are doing, and this is a first step to the disaster.
There a lot of tools to increase the productivity at your workplace. If you are thinking about an utility that would help you doing something, then take a look at the net, in 99% of the cases somebody allready thought about this before, and in about 95% of the cases you will find an utility in the internet for your need.
p.s. I am still trying to convince a lot of the people around me of not doing their daly stuff by copying, pasting, writing the same link, opening their favourite ftp program and their favourite archiver but instead of using such tools like the Ant and or the others. =O)