Core Conversation – DrupalCon Los Angeles – Focus



Core Conversation – DrupalCon Los Angeles – Focus

0 0


slides-no


On Github Crell / slides-no

Core Conversation

DrupalCon Los Angeles

Presented by Larry Garfield (@Crell)

The most powerful word in the English language...

  • Create or destroy
  • Focus.
  • Optimize/Prioritize.
  • Lead.

Focus

People think focus means saying yes to the thing you've got to focus on. But that's not what it em at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I'm actually as proud of the things we haven't done as the things I have done. Innovation is saying no to 1,000 things.

—Steve Jobs

  • iPhone 1 had no copy/paste. Or apps.
  • Still haven't released a TV.
  • If you have 10,000 features, you'll do them all badly.
As a tech lead I see my primary contribution as saying "no" to features that co-workers think are important but can’t justify. The real trick is knowing when a new feature adds linear complexity (its own weight only) or geometric complexity (interacts with other features). Both should be avoided, but the latter requires extra-convincing justification.

Lawrence Kesteloot

  • Context: Avoiding scaling code bases to unmanageable complexity
How do you make a statue of an elephant? Get the biggest granite block you can find and chip away everything that doesn’t look like an elephant.
  • Say "no" to non-elephant parts.

Bejeweled

  • Only ONE game move
  • Focused on simple game play

F-35

  • One multi-mode fighter
  • VSTOL + Stealth = Do both badly, and everything else
  • Only $1 trillion over budget

The Homer-mobile

  • Add every feature
  • The result is... predictable

No one told Homer…

Optimize/Prioritize

In case of conflict, consider users over authors over implementers over specifiers over theoretical purity.

—HTML5 Working Group

(Drupal's audience priorities, 2010)

  • Framework for saying "No"
  • Prioritization
  • "We're going to make someone unhappy; let's at least be consistent."

Laptops

  • No to CD drive, SD card, VGA...
  • Only 2 USB ports
  • But much lighter!

Laptops

  • No to all the things!
  • Not optimized for any use case
  • Too big for the hand
  • Does one thing: Apply lots of force.
  • Optimized for applying force

Databases

  • Consistency
  • Availability
  • Partition Tolerance

Pick 2

Drupal theming

  • Theme an object (via preprocess)
  • Theme some variables (via template)
  • Haven't said "no" to either approach
  • Both coexist implicitly = bad DX

Drupal look-and-feel

Who choses the markup?

  • Template author?
  • Module developer?
  • Site builder?
  • Section vs Aside for blocks, DC Copenhagen
  • Twig incompatible with Semantic Views
  • Break the UI
  • "You can choose" == "you have to know/support all"
  • Render API complexity exists for this reason
Do you want a comprehensible output system?…
  • And documenters
  • And trainers
  • And maintainers
  • And users

Lead

  • Just because something sounds cool doesn't mean it will work out well.
  • Most projects do not involve velociraptors.
Leading means saying No to velociraptors.

Bad behavior

“The culture of any organization is shaped by the worst behavior the leader is willing to tolerate." @ToddWhitaker #hcps450

— David Jones (@dljHCPS) February 14, 2015

No!

Deletion API, 2007

  • Chad Phillips (hunmonk)
  • Collect deletion queries, batch, save
  • Committed!... For 10 minutes

Didn't say No soon enough

  • Committed by Steven Wittens, Rolled back by Dries
  • The Right Call technically!
  • Lost a contributor, didn't say No early enough
  • See also: Druplicon revamp

Sometimes we can say no...

  • Backward compatibility
  • OOP Procedural
  • $5 hosting
  • Code style violations (too much?)
  • If you don't have an opcode cache, don't even ask
  • PHP 5.4 => minority of the market

Not Invented Here

Proudly Invented Elsewhere

Functional programming/Dependency Injection

  • No to state
  • No to implicit dependencies
  • No to "quick and easy"

But YES to testing/maintainability

Who is Drupal for?

"Everybody" is a coward's answer

Who is Drupal not for?

Saying No should always be a deliberate, explicit action.

No is dangerous weapon. Use it wisely.
  • If Steve Jobs can say No, so can you.

Discuss

And say no...

  • What should Drupal say No to?
  • Give user, use case, feature, etc. to say No to.