Project Discover for Drupal

Larry Walangitan

@larrywalangitan

Project Discovery

Why project discovery matters.

1. Software development is difficult

2. Software development is relationship development.

  • Clients

  • Users

  • Data

3. People matter when building software.

4. Clients are paying you (hopefully)

5. We are an open source community.

Credit: Drupal Association

Why does software development lend itself to runaway projects?

  • Methodology?
     
  • Wrong Tools?
     
  • Lack of discipline?
     
  • Wrong personnel?

 

The answer is YES.

The real reasons why your project ran away.

Poor Estimation 
&
Unstable Requirements

 

Poor Estimation
vs Optimistic Estimation

They're the same thing.

Estimating Projects

// How to Estimate Projects.

function estimateProject($new_project, $new_budget) {
  $project = "been there done that";
  $budget = 10000;
  if ($new_project == $project) {
    $new_budget = $budget;
  } else {
    $new_budget = $budget * $budget;
  }
  return $new_budget;
}

Alternative management methodologies

  • Product
  • Issues
  • Risks
  • Business objectives
  • Quality

 

Yeah, if you could just give me an estimate that'd be great.

Project discovery helps to mitigate unstable requirements. 

Requirement errors are much more costly to fix in production than during development.

Missing requirements are the most expensive error to fix.

Missing requirements are omitted logic.

There is no silver bullet.

Project Discovery

Onsite meetings matter (a lot).

Project Discovery for Drupal

  • Goals

  • Process

  • Data

  • Design and Development

Goals

Goals - Overview

  • Why will the project exist?
  • What are the business goals of the project?
  • How will success be measured?
  • What problem does this solve for the client?

Goals - Deadlines

  • What are the deadlines on the project?
  • How and why were those deadlines chosen?
  • When and how is progress shared with others? Who?
  • Does there need to be milestone along the way to serve as checkpoints?

Goals - Personnel

  • Who is on the team/team background?
  • Who are the stakeholders?
  • What is each team member responsible for?
  • Where can contact information for the team be found?
  • What tools does the team use to communicate?
  • What tools does a team member need access to?
  • How should a team member set up a local environment?
  • What in-house knowledge would contracted team members not know?
  • Who, at the client end, is/are the decision-maker(s)?
  • Who, at the client end, is our contact?

 

Process

Process - Management

  • What project management methodology will be used?
  • Does the team already have a work process in place?
  • How will requirements and other information be documented?
  • What ticketing system will be used? Workflow?
  • What meetings will there be? Who will be in them?
  • Who is controlling scope of the project to avoid creep?
  • What technology will be used for a meeting?

 

Process - Testing, performance and security

  • What forms of functional testing will be done? (Written/automated? QA team?)
  • When will functional testing happen?
  • Will there be user testing? How and when?
  • What are the performance goals? Is there a performance budget?
  • How and when will back-end performance be tested? Measured?
  • How and when will front-end performance be tested? Measured?
  • Is there a security policy that must be followed? Where can it be found?
  • Is it there a legal requirement behind the security policy?
  • How will security be tested?

Process - Testing, performance and security (continued)

  • What browsers and devices will be supported and tested against?
  • Is the client required by law to meet specific accessibility requirements? (WCAG? 508c?)

Process - Infrastructure and deployment

  • What domain(s) will the project live on? How will they be managed?
  • What servers will the project live on? How are they managed?
  • What technologies will power the project? (Apache? PHP? MySQL?)
  • Who will have access to those servers? How is this managed?
  • What environments will there be? (Prod? Test? Dev?)
  • Is there a strategy for local environments to match them?
  • At the very least, what versions of PHP, MySQL, etc.?
  • What is the deployment strategy? Tools?
  • What caching technologies will be used at the server level?
  • Will ESI, mobile detection, etc. complicate the caching technologies?

Data

Data - Content Model

  • What are the content types?
  • What are the taxonomy vocabularies?
  • Any other custom entity types?
  • What are the relationships between these entity types?
  • What fields do these entity types and bundles have?
  • Which entity/content types will have a visible page callback? Which shouldn’t?
  • Which languages will be supported?

 

Data - Content source and migrations

  • Will this project use existing data?
  • Where will the existing data come from?
  • What format is the existing data in?
  • What is the migration strategy?
  • Will migrations happen once or continuously?
  • What are the migration deadlines?

 

Data - Users and editorial workflow

  • Who is the audience for this project?
  • What will the various types of authenticated users be?
  • What roles are needed?
  • What permissions should these roles have?
  • What does the editorial workflow look like?
  • How are users created and managed?
  • Will user profiles be made visible?
  • Does user information need to be kept private (usernames, emails, etc.)?

 

Data - Search engine optimization

  • What tools will be used to gather analytics?
  • Will there be any configuration that needs to remain consistent with a legacy site?
  • Who is responsible for ensuring the content is optimized? How will they test it?
  • Is it acceptable for new aliases and redirects to be created when a content title changes?

 

Design and Development

Design & Development:
Design and User Experience

 

  • Where will the designs be coming from?
  • When will designs be delivered?
  • What form and file format will the designs be delivered in?
  • How will graphic assets, fonts, and icons be prepared? 
  • What is the responsive strategy? What are the major breakpoints?
  • What are the major sections of the project?
  • What is the navigational structure of the project?
  • What are the various personas of those expected to use the project?
  • What is the desired flow these personas experience during their visit?
  • What are the expected sources of traffic for the project?
  • What will be on the homepage?

Design & Development - Assets

 

  • What types of embedded media will live within the content?
  • What is the strategy for embedding media within content?
  • Will an embedded image become its own entity?
  • Will a CDN serve assets like images and CSS/JS?
  • What image styles are needed?

 

Design & Development:
Ads and third party services

 

  • What types of ads will be served? Where?
  • What analytics tools need to be installed and configured?
  • What other third party services will be used? Where?
  • Will any third party services need a “shell” of the project we’re building?

 

Design & Development - Backend

  • Which version of Drupal will be used?
  • Will any other significant technologies be used alongside Drupal?
  • Does this project live within a multi-site installation?
  • How will modules be organized in the code base?
  • What are the contrib modules we expect to rely heavily upon?
  • How will features be organized? Custom code within them?
  • What is the naming standard for custom modules?
  • What coding standards will be enforced?
  • How much documentation is expected? Comments?
  • How will Drupal’s caching work alongside server-level caching technologies?
  • How will patches be managed on the project?

Design & Development - Backend (continued)

  • What non-standard functionality will be needed?
  • How will components be built? (Contrib? Custom?)
  • How will components be placed on the page? (Panels? Context? DS? Custom?)
  • What view modes are needed?

Design & Development - Front-end 

  • Does a decoupled approach make sense for this project?
  • If at all decoupled, what framework/library will be used?
  • If not decoupled, will a base theme be used?
  • What front-end tools will be used? (Grunt? Bower? Sass?)
  • Will compiled/built files be committed to the repository?
  • How will CSS and JS be organized?
  • Will core and/or contrib modules be adding their own CSS/JS to the page?
  • Will Drupal’s CSS/JS aggregation be used or will it be done with another tool?
  • What fonts will be used? How are they served?
  • What is the strategy for icons?

Design & Development - Front-end (continued)

  • How will preprocess functions and templates be organized?
  • What JS frameworks/libraries/plugins are needed? What for?
  • How will JS frameworks/libraries/plugins be organized in the code base?
  • How and when are JS frameworks/libraries/plugins added to the page?
  • What is the responsive implementation strategy? How are the breakpoints handled?
  • What is the responsive image strategy?
  • Will there need to be any client-side mobile/browser/feature detection? What for?
  • Will Critical CSS be implemented?
  • What administration theme will be used?

Design & Development - Documentation

  • Where will project documentation live? 
  • Who will have access to this documentation? How will this be managed?
  • Who is in charge of maintaining the documentation?
  • How will documentation be verified?

 

Design & Development - Version Control

  • What version control system will be used?
  • Where will the repository be hosted?
  • What are the branching strategies?
  • What branch is deployed to each environment?
  • Are there any branch naming and/or commit standards among the team?
  • How will a pull request workflow be managed?

 

Project Discovered.

MidCamp Sprint

Sunday, March 20 at 10 am

UIC COMRB 909 S. Wolcott St
(across the street from the venue)

Contributors of all skill sets and levels are welcome and encouraged to join us!

Questions & Answers

Feedback

https://joind.in/talk/d2dd7

Follow @larrywalangitan

Follow @ChromaticHQ

ChromaticHQ.com

Project Discovery for Drupal

By Chromatic

Private

Project Discovery for Drupal

Larry - MidCamp 2016

More from Chromatic