andrew 05.08.09
Estimating time for tasks and generating an overall project schedule can be painful. I always feel like there are too many educated guesses that go into schedules and estimating time. Estimates range from very educated, to almost complete guesses. Sometimes the estimates are dead on, most of the time they are pretty close. However, there always seems to be a handful in every project that are really off. These bad estimates are what cause people to work 80 hour weeks. Below are some strategies that may make the process of estimating and scheduling more accurate and less painful.
Estimation/Scheduling
If you write software for someone else, chances are very good that you’ve had to guess how long a given activity will take. The only real advice I’ve ever received on the topic is probably similar to advice you’ve heard. “Take a guess, multiply by x, and that’s your estimate”. This is a really crappy way of generating estimates. The problem is mitigated a bit because most of the time estimation of a large project is made up of a ton of small pieces that are estimated separately. Hopefully under-estimation in some areas will be countered by over-estimation in others. However, this is still just wishful thinking. Sometimes it works, sometimes it does not. When it does not, the result can be painful.
more »
andrew 04.24.09
I design user interfaces for a living, it is a strange blend of code, art, and guesswork. I want my interfaces to be useful, visually appealing, and functional. I’m writing software that people are using to do their job. As such, I want to provide an interface that allows my users to do their jobs as easily as possible. What may seem useful for one group of users may not be useful for another group of users. Trying to guess what people want to do, how they want to do it, and what results they want can be very challenging. While there are definitely wrong choices, I don’t believe it’s possible to satisfy everyone. Some people prefer Gmail, others prefer Yahoo Mail. I don’t think Google or Yahoo made mistakes that drove people away I just think that users have different preferences. To develop effective interfaces, you have to figure out who your users are and provide them an interface they want to use. Putting a good set of UI mockups in front of your users, or proxies for your users, can help determine which designs will work, and which designs won’t.
Mockups
I’ve used two basic strategies for developing UI mockups. First is hand drawing/using some tool like visio. Hand drawing is fairly inflexible, and the tools I’ve used have been fairly clumsy. I’d love to use something that is as quick as hand drawing, that still has the flexibility of using software. A second method of generating mockups is to write user interaction code to drive the mockups. While this method is also time consuming, ideally you will end up with some usable code. When you show the design to the user, you can actually demonstrate how things will work in a live environment, this too is a good thing. If your initial design is too far away from what the user wants, you may end up having to throw away work you were hoping to use later. I know we don’t have time for this in our organization, I doubt others do either. I think it’s useful to develop a set of hand drawn/computer drawn mockups to help present different design options to your potential users. Once you have an idea of what they like/dislike, you can start working on the coded interaction. This way, you are helping to ensure that you are effectively using your time.
more »