Friday, January 22, 2010

Setting Expectations

I am finishing my masters degree in software engineering at Carroll University.  My last two classes are this spring and one of them is, "Software Project Management".  We had the initial class last night, and the instructor asked the students to write down 10 words that describe software project management.  We then went around the room and read off our lists.  Guess what?  Most of the students had relatively negative words, including: "Too Many Meetings" and Stress.

Another common theme was Expectations.  When I was asked why I thought the comments were so largely negative, I had to respond that I felt it is difficult to meet user expectations in the workplace today.  Since I work for a small company and we are always on tight deadlines, we often leave out the 'fit and finish' that users are used to in commercial software like Excel or Word.  Given our staff and the expected time to deliver the functionality we are writing, we simply cannot add those niceties, and they are often expected.

What niceties are we talking about?  Here's an example.  On an application at my workplace where field staff can enter data into forms, they expect to have all the features that Word would have like document recovery, rollback, etc.  Those are all important, but they were not in the application spec (It does have a wonderful 'auto save' feature, but if your laptop loses battery and dies, you lose everything after the auto save). Another example is a group that felt that 'clicking a button' for workflow was too inefficient and that the web app they were using needed hot keys, how hard could that be?  Of course, adding these features is possible, but management typically decides that they are not valuable enough to add, and we move on to other tasks.

My professor pointed out that users have ALWAYS had higher expectations of technology than what developers can typically deliver (and he's been doing this for a long time - think punch cards).  So the question is:

Is the trick to successful software projects setting low user expectations?  

If the users don't EXPECT hot keys or document recovery they won't be disappointed when they are not there.  Of course how do you anticipate all of the expectations that you don't know?  Communication and common sense will help, but those will only take us so far.  User Interface testing and reviews will also help, but even those don't really unveil every expectation and I have found it difficult to get time for those tasks approved.  So, I ask, How do we set proper expectations on software development projects?