Drupal Commerce Group-Buy. A Case Study Disaster. Intro. In brief what could have saved us:. Client expectation m anagement More careful evaluation of dev modules Project size estimation. Intro. Intro / Disclaimer. Please laugh, its all we could do in the end
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
Intro In briefwhat could have saved us: • Client expectation management • More careful evaluation of dev modules • Project size estimation
Intro Intro / Disclaimer • Please laugh, its all we could do in the end • Let me know if you hated it / loved it : john@evelops.com • Some project details are obscured
Intro On a dark and stormy night • When entities were at the bleeding edge of object oriented Drupal development • Drupal 7 had just gone gold • A tail of development woe begins • There were no winners • But I can tell you somewhat accurately how badly we lost
Intro Our Dues • 80 hours of project management • 160 hours of development time • 3 external developers managed • 4 months of heart ache • 2 heads banging repeatedly against a wall
Intro Today’s Mode • I hate hubris • I will try not to ‘teach’ • The way we learnt from this was to implement systems • So that is how I will explain our lessons • But I will try to keep to the story • If you kill 3 projects … Win.
Client Expectation Management Direct Client Communication • I will start with out biggest mistake • We never were in direct contact with our real client • I now understand what it is like to be an Indian developer • Out client was “The Sales Guy”
Client Expectation Management The Sales Guy • Well branded seemingly experienced design shop owner • Sharp, well dressed, well versed in tech speak • Found us on a php mailing list • Presented us with “an opportunity”
Client Expectation Management Our misconceptions • The sales guy was our technical communication buffer • The sales guy would be our ongoing development project faucet • The sales guy would care about our branding or reputation
Client Expectation Management The harsh reality • Two sets of client priorities, one delivered second hand • Duplication of our value proposition • Responsibility with no representation • Our brand took the blame • One massive ego with his client expectation management on backwards
The 4th Party • We contracted an Indian developer to do the PSD to theme development • We opened up our development process to The Sales Guy • In the first week they gave us a flat html template mockup which sat nicely on top of Drupal • Pixel perfect front page, but no blocks or regions
The 4th Party • This is a great way to start INTERNALLY • The Sales Guy showed this to the client… • The client was Ecstatic • SITE DONE • Only a couple of pages to go!!!
The Hosting Situation • The “Production Server” was: • A shared host • Had old versions of LAMP • Was in the US • Was slow • No Varnish • No Memcache • No APC
The Hosting situation • E-commerce Group Buy • Credit Card processing (PCI compliance) • 4000 projected sales in the first day • We recommended a new server
The Hosting Situation • The Sales Guy insisted on using a particular VPS solution • We offered our installation services “at our normal development rate” • The sales guy accepted via email
The Hosting Situation • We installed a complex LAMP setup on a RHEL 5 server • We set up bespoke access and security • We optimized for Drupal • We forgot about it.
The Hosting Solution • When we included it on an invoice he was outraged. • “You suggested it” “I thought you only meant a longer schedule” “It should be included in the project price” • Expectation management fail?
The Hosting Solution • At this point we were self doubting… • Does he live in a reality distortion field or did we not engage in adequate client expectation management? • We took this on the chin with these lessons: • Formal quotes for side projects • Invoice side projects early • Insist on production server specifications early
Not the dev code!? • Near the middle of the project The Sales Guy chose to get a third party developer to pronounce our code un-fit for production • He had the developer login to our testserver to look at the code • We could have told him it was un-fit! • In this case he was being vexatious and hinting at litigious to put us under pressure
Not the Dev code!? • At the time we laughed it off and set him straight • We know the developer and he didn’t get paid • It was at this point we should have switched from expectation management to a hospital pass
Better practice • Bad news delivery intensity should look like a nuclear decay curve
Early Bad News • Give them bad news early • We want money for that job • Its going to cost you more than you thought and here’s why • PS: Before we start we need that deposit in our account
Early Bad News The bad news is that it is going to cost more than you expected and a bunch of unexpected setbacks will occur because of scope mis-interpretation and expectation mis-matches, which will blow out the schedule. The good news is that we have created something we can both be proud of, which includes all the brilliant features.
Early Bad News • In the beginning the client usually is relaxed • It always seems a shame to spoil that, but: • They rarely have realistic expectations • They need to be tamed for trickier issues, which will come later • This is the time to sort the low hanging fruit from The Sales Guy
Early Bad News • If there is no bad news, Great! But check these: • Did they pay the deposit quickly? • Are they treating your technical suggestions with respect? • Are they quick to answer your questions? • Are any specification details given after the quote unrealistic? We will get back to this… • Can you think of other universal bad client indicators: john@evelops.com
Mid Project Bad News • If mid project you are not hitting your own development targets … tell your client • You will have a better idea of the realdevelopment time • If this is because of scope creep you will probably have enough evidence to re-quote • If you re-quote and they want to terminate, see our early termination clauses
End Project Bad News • This is the WORST! • The client remembers it bitterly • It makes you look the most unprofessional • It makes it tempting for the client to try to wriggle out of the final payment … goodbye profit margin
The Exceptions … Maybe • A project changes course/goal • A major change request • A project scope change • REQUOTE!
The Credit Card Solution • We thought we had learned our lesson • We were determined to handle any more change requests by the book • Re-quote / Re-schedule / Under-promise
The Credit Card Solution • Original spec called for a completely integrated SOAP solution • We had suggested a payment processor • They had decided on a different processor • There was no existing Drupal Commerce integration • Asking for testing access from a processor is tricky when the client doesn’t know your name. • Eventually we obtained a developer account from the processor
The Credit Card Solution • The integration was working brilliantly when their bank decided that they would only allow them a merchant account if they used a hosted solution… • This change request came in two weeks before delivery • The Sales Guy told us to put everything on hold to get this working
The Credit Card Solution • We re-quoted • We re-scheduled, blowing out our launch date • We clarified that they wanted a hosted solution based on a POST redirect • We clarified what “hosted”, “POST” and “redirect” meant • The Sales Guy agreed to the quote and assured us that this was what they needed
The Credit Card Solution • We completed the solution and proudly showed The Sales Guy within the beta site • He was pleased and took the solution to the invisible client • They were not pleased. • Once again reverse client expectation management was working against us.
The Credit Card Solution • The invisible client had never been told that there would be redirection • They wanted all the magic to happen within the bounds of their site and their branding… • At first The Sales Guy was apologetic • Then he insisted we should have implemented the hosted solution as a frame!?
The Credit Card Solution • At this point knew he lived in a reality distortion field • We are generally against frames, but it was late in the project and we wanted to get paid • So we implemented. • And invoiced • And waited
Drupal Commerce is Awesome! • Disclaimer: • This is not a dig a Drupal Commerce • I love those guys • We have implemented DC successfully since • This is a criticism of our evaluation of using particular dev modules • When Drupal Commerce got to 1.0 it still relied on dev versions of modules
Why Drupal Commerce? • DC seemed like the shortest way to OO Cart bliss • We had met the DC guys at Drupal Con and thought they were awesome • We were planning many ecommerce projects and wanted our developers and admin staff using the latest and greatest
The Plan • The cart was very interface heavy • Planned out our data model then handed over to the themers • Wescheduledthe business logic development later in the project to co-inside with the planned stable releases of DC
A Problem • DC relied on the dev version of views and lacked good reporting defaults. • Our more specific problem was tracking sales • Every group-buy site needs to show how many sales have been made for a particular deal on the front of the site
A Problem • The Views 3 interface changed three times during the project • Dev Views came with its own set of unreported bugs • The Rock: No obvious way to aggregate number of completed Orders for a particular Product • The Hard Place: Creating a custom reporting module might blow our budget
The Solution • We found a post on drupal.org describing exactly the same problem • Ryan had posted acknowledging the problem, but was not ready with an answer • We posted a possible solution • It turned out three other Drupal shops were having exactly the same problem who promptly contacted us • Our compromise was to create a very simple custom field which could be attached to the product entity
The Solution • We have published the module • This is not the definitive solution • The process which was most valuable was communicating with the other Drupal shops about requirements that should be considered and approaches that could be tried
The Lesson • We thought we could rely on a newly released stable version 1 module with dev dependencies to help speed up our cart development • We needed to more fully research the current weakness of DC
Decision Framework • We now use these questions to help make the decision to re-invent the wheel or to use an existing module: • Are we building for reproducibility? • Is the module a more general form of the functionality we need? • Do we need to build a sub-module? • Is it fully exposed to views with good defaults? • Is it entity driven?
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.