Hi Guys,
While I was entertaining the relatives this weekend, I couldn't help thinking about Drupal. It's a sickness really. I need to seek help. Before I do though, I wrote this blog post on the key areas I feel need to be explored before taking on a Drupal project. As we all know, some projects are bad bad bad. Some projects are really good. Going through this long rant list that I've compiled should give the new folks the benefit of what some of us older guys have already suffered. It's on my blog here: http://www.drupalcreations.com/blog/drupal-specifications Please feel free to disagree and comment in sarcastic and critical tones. Ideally we get a thread going and share some of the wealth.
I'm off to seek help now :) ,

Comments
We understand
There's a support group meeting tonight at CSI. :-P
http://cleaver.ca
great
thanks !
project management process
Good info
Hopefully this'll give the new folk something to think about. While trial-by-fire gives great scars and war stories, it's not the best way to enter the consultancy world...
Protected Industries
Make decisions ahead of time
I read through your spec. I think, from a service provider / consultant point of view, lots of those items should not be up for discussion with the client. That is, you as a consultant / dev shop / whatever have already established best practices of how to do things. It is your job to explain that to clients, and to only work for clients that sign on to do it your way.
Specifically, let me take the hosting piece as an example. You should specify (and charge appropriately) the hosting solutions you recommend. That you will provide the development environment, and will be involved in selecting the production environment. Otherwise, some combination of cpanel / mysql / DNS and server monkeys WILL screw up your entire production environment, and will be more expensive than just having it done it right from the beginning. Specifically, have low, high, and custom hosting requirements, match them to clients, and select a hosting provider in each category.
Don't get me wrong -- it's a great list, but again, I just think as a consultant we should have our own process to guide clients to, and boil down some of those broad discussion points into option A or option B.
Everything is up for
Everything is up for discussion, IMHO. That should be implicit in the term "consult". The cookie-cutter approach is the way to higher profits and specialization has many advantages beyond reducing cost, but it needs to be balanced by choice.
The customer may not be a Drupal expert, but they are the experts in their own business area and quite possibly the experts in their own IT infrastructure. There can be very valid reasons why they would want to be involved in choices of hosting and other aspects of implementing the solution.
In fact, I've found that the more involved the customer is, the better the result. I like to see customers who are enthusiastic and willing to invest time and energy into a project. Those projects always have the best results and greatest positive impact on the organization.
http://cleaver.ca
Why hire experts?
This is a recipe for a horrendous client relationship. If you went to the doctor about a pain in your head, would everything be on the table for the diagnosis and treatment? If you demanded that the disease was actually a secret device planted by aliens, and your desired treatment was to have the doctor hit you on the head with a hammer, should he do it?
We don't work with clients who don't trust our experience or expertise on important issues revolving around technology and Drupal, and neither should you! Of course customers (often) know their "business case", but they haven't got a clue as to what it means to implement and support such a case (which is where we come in).
This reminds me of something we call the "how do I...?" phenomenon, which is when your client starts asking things like "you built me a site, now how do I make it do my homework for my son?" People have all sorts of misconceptions, misunderstandings, and generally odd beliefs about technology, and you shouldn't put your expertise at the mercy of their fickle and finite knowledge.
Alex Urevick-Ackelsberg
ZivTech: Illuminating Technology
I certainly don't recommend
I certainly don't recommend anyone just do what the client says. I don't think that is consulting either. I'm sure anyone with a bit of experience has passed up jobs that seemed doomed due to unrealistic client expectations.
Your example of a doctor is a good one. In fact, "consulting" is used in the field of medicine. I don't want my doctor to just say: "Here, take these pills... never mind, they're good for you". Maybe I ask about some form of treatment... I'd like an actual discussion, eg. "that treatment isn't recommended for patients with a history of xxx, so I'd recommend you try yyy."
Note that I'm not suggesting this is Boris is advocating not listening to the customer. I doubt that's the case. I just advocate staying away from too much of a cookie-cutter approach to the consulting process.
I find that the customers I work with do respect my knowledge, but there will always be those with a motive to challenge you on every decision. I've been mostly successful in avoiding those people.
http://cleaver.ca
How far do you let clients push?
In the case of doctors, it's clear that letting patients drive treatments is (to some degree) a terrible idea. For example, it helps lead to the over prescribing of antibiotics (for example: http://www.news.harvard.edu/gazette/2005/11.10/11-sore.html )
Our clients obviously determine the "what" of their sites, but as an expert firm we feel the need to have a significant say in the "how".
Alex Urevick-Ackelsberg
ZivTech: Illuminating Technology
Really?
I'm with Boris on this one at an abstract level. There are always limits about what's up for discussion, and when too many things are up for discussion, then the decisions that do need to be made will be made poorly. As a consultant, you have the responsibility to decide some things. Do you ask them whether they want a secure website or one that will be hacked? No. Do you ask them whether they want a site that will be impossible to maintain? No.
You should be clear about when you're not giving them choices, it's not about hiding them. And obviously, there are many choices they should make. They're paying you to know the difference.
Pick your clients
Boris has a point - when you engage with a potential client and are going through these options, if the experienced developer is recommending option A and the client keeps demanding B...move on or you're going to get burned. Robert mentions walking away during early discussions, but it should be clarified that you are the "expert" and the client should be trusting your recommendations and decisions.
One of my drupal devs was recently telling me a story where a client she signed up demanded a wordpress plugin be "copied" over to the new Drupal site - he thought (for very strong values of "thought") it was just a copy/paste thing. When she informed him this wasn't the case and development work would be involved, he canceled the contract, gave her a bad review, and went looking for a more agreeable provider.
John
Protected Industries
You Guys Rock!
Hi Guys,
While it warms my heart to see all this participation about a boring topic like spec'ing a Drupal job, I fear that our thread may be spinning off on a bit of a tangent about the pros and cons of Conservatism vs Liberalism. At the end of the day, they are philosophies of doing business/politics. My personal choice is the path of common sensism. :) In all seriousness, the client environment speaks volumes about your choices, which is where the common sense comes in.
In many instances, big clients will have full blown Unix departments. Many of the people in these Unix departments will smile at you, when you finally get around to them, as if you're some kind of Saint come to save them from their corporate pain. Universities often fall into this category to name just one example. In this case, all you need to do is ask: "what's your default Unix web server config?" Usually, all you'll have to do next is ask, can I have a sudo account please. They'll say: "Yeah man, on dev." The spec is now defined as: Internal Unix department is responsible for Dev environment. All you have to do is validate that it meets Drupal requirements. It's not quite that simple, but you get the general idea. When you're spec'ing the host piece it's largely about common sense.
What's common sense to us veterans is a foreign language to our new Consulting brothers and sisters. This is why the blog. It's up to you guys to share how you deal with key items that ultimately make up a trustworthy Drupal Spec. This way new Consultants can confidently say whether or not it's good or run for the hills.
Do me and the new kids the kindness of going back and commenting, ideally on the blog so that we can contain the rant in one location. The kind of comments I'm looking for are: "Hey Rob, you forgot to put in a section on migrating old sites, functionality, files, and databases into Drupal. That's a critical element you left out that can sting the new guys. Put that in there for goodness sakes." Another example would be: "For those clients who haven't got a clue about hosting, you need to present them with the most responsible solution, at low, medium, and high quality price ranges."
Who knows, if we can build a mutually agreed upon mature spec'ing document, we might even help ourselves. I mean, if we're comparing our jobs to romantic careers like Doctors, even Pilots have check lists. They get lots of dates I'm told. :)
PS Whether you involve Aliens in your brain surgery is less important than whether or not you live to tell about it. I suspect brain surgeons have heard some crazier things than Aliens needing to be involved in treatment plans. We Drupal consultants have heard some pretty crazy things too. I remember a client asking me on a Wednesday for a fully deployed e commerce streaming video solution by that Friday for the thousands of tapes in his library of video. Does this mean I sent him to another Drupal Doctor. I wanted to, but I didn't. I gave him a one page synopsis of his 3 options with approximate costs and time to complete. He decided the price tag was too high and I never heard another thing about it. I suspect this is how Brain Surgeons deal with the lucid family members. Here's your options....
Robbie Jackson
www.drupalcreations.com
robbiejackson@drupalcreations.com
Exactly...
This is precisely what I'm saying: as an expert you should be able to give your client an honest appraisal of both the current situation and the prescribed solution to whatever issues they have, as well as some choices (with price tags attached) as to which way to proceed. But... the point is that you are "bounding" their choices to one of a number of recommended solutions.
Alex Urevick-Ackelsberg
ZivTech: Illuminating Technology
My path would be
My path would be Pastafarianism...
The thought that came from this was to what degree could someone new really learn from guidelines such as you have written. Maybe you're a bit more optimistic than I am. I see people making the same mistakes enough that I wonder if you have to make those mistakes.
Pain is the best teacher... mom told you not to touch the hot stove, but you just have to find out yourself. If you were going to try to communicate these lessons, I'd say: "start with the pain". Robert, your little anecdote of the problem (ie. client with unrealistic expectations) and your response would be far more instructive than merely listing what you should do.
I'd suggest that if you write more, put it in a storytelling format... the problem faced, mistakes made and lessons learned.
http://cleaver.ca
Project check off lists are useful
I am working on a high level project check off list for a barn-raising + dojo project. We, SeaDUG, are attempting to capture the barn raising experience for future Drupal developers.
SeaDUG discussions: http://groups.drupal.org/node/120879 http://groups.drupal.org/node/121559 http://groups.drupal.org/node/121624
Drupal Kata: http://drupalkata.com/sgs/ (Client: Seattle Genealogical Society)
My ideal check off list would be interactive. A project planner could go thru a master list and activate/inactivate/modify items and add new items. The list would be expandable for details like a Work Breakdown Structure.
My first draft for the list is here:
- http://typewith.me/fA8bMuNalQ (available for editing)
- http://typewith.me/ep/pad/view/fA8bMuNalQ/latest (time slider and downloads)
The list is not a task list. It's more like things to account for before taxiing the airplane or cutting open the patient. The client items are passive voice and the developer items are active voice.
Definitely a good approach...
Definitely a good approach... especially having the list be customizable. I once played around with automating something like it. And while it is not a task list, I see it as potentially intersecting with task management. Personally, I found it got to be a bit over complex if I took that idea too far--at least for managing a small team.
http://cleaver.ca
Managing complexity
I have this notion stuck in the back of mind: The Rule of 7 plus or minus 2. If concepts are in groups of 5-9, readers can scan for comprehension. WBS lets you hide unwanted detail. (I was once infatuated with Yourdon/DeMarco data flow diagrams, where bubbles begat bubbles.) I broke my rule under 'Requirements analysis'. My bad. ;-)
Re: Project check off lists are useful
John,
Very nicely done. This is exactly what I had in mind. I'll reference your group in my blog and encourage people to join you. I'll also go through your list and see if there's anything I'd add.
Thanks a lot for commenting,
Robbie Jackson
www.drupalcreations.com
robbiejackson@drupalcreations.com
Business Analysis and Project Management
Of the comments I've read most seem to highlight "finite" things like hosting strategies and application server install and setup strategies. What I see missing is discussions about requirements gathering for business needs in addition to technology needs. Sure check off lists help provide some consistency for tasks which may have require "time" but little thought or problem solving. But I've found what a client really needs is "consulting" and guidance on how to solve a business need or a logistical/work flow problem. I go about supporting my clients not by throwing technology as the answer, rather it is just a tool to support the real problem.
When specing out the scope of an effort for a client I may conduct function point analysis by identifying every feature (such as contact form, event registration, content moderation, automated webform submission syncs to salesforce) and also line item every tactic (such as setting up the server, installing and configuring apache, etc). In some cases I define service packages such as performance and stability consulting, on-going maintenance and support agreements, etc.
To me, consulting is helping a client solve a problem it isn't just installing modules and building themes. As a few have posted it is your experience, education, and knowledge that is of value and client's should respect and desire that value. Anyone can install a module, but only experienced "gurus" can solve a business problem.
Robert Foley Jr
Solutions Architect
http://www.robertfoleyjr.com
Re: Business Analysis and Project Management
Dear Robert Foley Jr,
The focus of this discussion is for Guru's and veteran consultants to guide new Drupal consultants/developers/project managers/solution providers in scoping a project, so as not to get burned or deliver sub-standard solutions. The first part of the job is researching the needs of the client. There are common general areas that need research. This is what we're trying to compile. Ideally, we encourage new consultants to reach out to people like yourself more often. My apologies for not making this clear earlier.
Please read through http://www.drupalcreations.com/blog/drupal-specifications with this in mind. Please add whatever you feel is missing. There are many areas that need to be explored when spec'ing a new project so as to ensure the greatest possible chance of accomplishing the clients goals, including modifying those goals. If you would rather join group http://groups.drupal.org/node/120879 , I'm sure they would welcome your input there too.
To quote Whitney Houston:
Teach them well and let them lead the way
Show them all the beauty they possess inside
Give them a sense of pride to make it easier...
In all seriousness, I look forward to your input, and hope you enjoy my silly way of making a point...
Robbie Jackson
www.drupalcreations.com
robbiejackson@drupalcreations.com
Updating project check list with BA
RE: Project check list http://typewith.me/fA8bMuNalQ
My thoughts on scope:
I had SWOT on the project check list and I expanded it to include Business Analysis under Business case, which is a client responsibility. I see a natural division between BA and Requirements Analysis (RA), i.e., those 2 responsibilities can be divided for the purpose of a project. BA is the whole pie and RA is a slice of the pie. BA should be ongoing for many purposes whereas a project has a beginning and an end. BA has many ramifications beyond building a website and the BA process should be owned by the client. Typically, it takes an IT project to get the BA ball rolling.
Can someone wear both hats: One for BA and one for responding to an RFP? Yes, but I think there are ethical issues that should be made clear to the client. For one, the BA provider has an advantage over potential RFP responders.
Postscript
Another tool for thinking about scope is the Zachman Framework
* http://en.wikipedia.org/wiki/Zachman_Framework
It tends to scare people, but it can help some people to understand where they fit in the Big Picture.
Zachman Framework
I won't say that there necessarily anything wrong with the Zachman framework, but as it tends to be implemented it is pretty much the antithesis of "agile".
I could see the framework's usefulness in scoping a problem. In a way by using Zachman, you are saying "everything is up for discussion".
Disclaimer: I took the 1-week course with John Zachman a few years back.
http://cleaver.ca
Agile methods overcome limited initial information
'Agile' describes management styles and project management methods. Zachman Framework and Business Analysis are ways to describe 'essential' business/technical processes and information flows. I think 'agile' is one way to overcome the absence of 'essential' information caused by limited business resources and rapidly evolving conditions. Organizational risks from 'agile' projects are proliferation of 'information silos' and 'paving the cow paths'.
What about collaboration on document development
It would be nice to turn on a module that would allow specified folk to wiki their way through the development of the requirements, the FRD, the deliverables, etc. (Or use file posting and replacement) These documents are never done in a vacuum of a single persons thoughts. So while zooming down the checklist...perhaps some help gathering the needed information
And don't undervalue risk assessment and management strategies, hummm another great collaboration opportunity. There are risks to completing any project on time and in budget, failing to acknowledge and manage those risks potentially fatal. And the risks are present whether you are Agile or Waterfall.
What about quality assurance? How will you control the source? How will it be tested and verified to ensure it meets the customer requirements?
What about handling scope changes? Especially if you are using a waterfall method, the customer will eventually see something that is flashier or cooler that what was agreed to in the Design and FRD. A good project plan should recognize this is coming and plan for handling it, or make the customer aware that scope changes willnot be addressed.