Quite some time ago, someone designed a Venn diagram to help answer the question: ‘what kind of nerd are you?’. I won’t tell you where I landed, but you might be able to guess in a few minutes. I thought about that diagram this week, as I was reading an article on the differences between ‘nerds’ and ‘geeks’. I guess it’s in our (nerds and geeks) nature to obsess over this minutia, but since I’m long beyond Junior High School, I no longer care. However, as my coworker and I were finishing up the Time Tracking “system” I’ve been writing about, we kept running into walls – places where we said some form of “we can do this but it’s just not worth it.” Despite the fact that I planned to talk about the final phase of this project, I became obsessed with creating a Venn diagram for SharePoint development.
Please note that the diagram is a first draft, and may certainly need to be tweaked. I did the diagram partially for fun, but also to illustrate the ongoing struggle with SharePoint between “how far do we go to make it easy to use?” and “at what point do we simply ask our users to understand it better?” The answer to those questions may be related to what type of nerd you are; I mean it might be easier for some of us to write code than to train (talk to) people. Let me also point out to my fellow geeks, that I know my diagram isn’t a true Venn diagram. But since I don’t think we need to define the intersection of only form and control, or only ease-of-use and function, I am good with the simple version. If you want to perfect it, be my guest.
As you can see below, I defined a SharePoint project in terms of Form, how it appears; Function, what it does; Ease-of-Use and Control. As we try to go beyond mere appearance, we have to start thinking about ‘design’. A functional site has to satisfy requirements; a site that is easy to use, has to follow or improve upon a business process. When we want to meld form, function and ease of use, we have to start doing some real work. This work may take the form of query parts, filtered lists, calculated columns, conditional formatting and so on. When we introduce an element of control, things start to get complicated.
To understand what I am trying to illustrate, consider a simple control over access. If all I want to do is control the function, i.e. allow you to access something or prevent you from accessing it, I am fine with simply having you get an error when you click on a link to something you can’t see. If I want to introduce ‘form’ into the mix, I need to make sure I am only using elements that are permission-trimmed. That way, you don’t see what you can’t do. To get controlled functionality working easily, I need to start automating the process with workflows. In our very little time tracking system, we have several workflows operating between multiple lists, and the lists have permissions that vary among the users.
The final task we wanted to accomplish on our Time Tracking system was to create some dynamically filtered views. Since we have a list that tells us what the current accounting period is, we should be able to have a View called ‘Prior Month’ that always filters on time entries from the month before the month specified in that list. I can build query parts that I can filter the View on, I can fake a workflow into iterating over the list and update a status column that I can filter on, or, I can have the user filter the view herself. Hmmm, since I think I could show her how to do that with a minimum of human interaction, and since she is really a very nice lady; I’ll go with that.