133
Making the Web Fireproof: A Building Code for Websites Dylan Wilbanks MinneWebCon 2015 Web: dylanwilbanks.com Twitter: @dylanw

Making the Web Fireproof: A Building Code for Websites

Embed Size (px)

Citation preview

Page 1: Making the Web Fireproof: A Building Code for Websites

Making the Web Fireproof: A Building Code for Websites

Dylan Wilbanks MinneWebCon 2015

Web: dylanwilbanks.com Twitter: @dylanw

Page 2: Making the Web Fireproof: A Building Code for Websites

One caveat: I can’t promise great insight.

Page 3: Making the Web Fireproof: A Building Code for Websites

Philadelphia.

Page 4: Making the Web Fireproof: A Building Code for Websites
Page 5: Making the Web Fireproof: A Building Code for Websites
Page 6: Making the Web Fireproof: A Building Code for Websites

William Penn

Page 7: Making the Web Fireproof: A Building Code for Websites
Page 8: Making the Web Fireproof: A Building Code for Websites
Page 9: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/britishlibrary/11242996635

Page 10: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/valkrye131/3240437070/

Page 11: Making the Web Fireproof: A Building Code for Websites
Page 12: Making the Web Fireproof: A Building Code for Websites

http://upload.wikimedia.org/wikipedia/commons/3/32/Fire-Forest.jpg

Page 13: Making the Web Fireproof: A Building Code for Websites

But is it fireproof?http://upload.wikimedia.org/wikipedia/commons/3/32/Fire-Forest.jpg

Page 14: Making the Web Fireproof: A Building Code for Websites
Page 15: Making the Web Fireproof: A Building Code for Websites
Page 16: Making the Web Fireproof: A Building Code for Websites
Page 17: Making the Web Fireproof: A Building Code for Websites
Page 18: Making the Web Fireproof: A Building Code for Websites
Page 19: Making the Web Fireproof: A Building Code for Websites

Standard sizes, standard practice.

Page 20: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/duiceburger/3312213574/

Page 21: Making the Web Fireproof: A Building Code for Websites
Page 22: Making the Web Fireproof: A Building Code for Websites

http://idighardware.com/2010/01/survey-q3-how-can-you-tell-a-fire-door-from-a-regular-door/

Page 23: Making the Web Fireproof: A Building Code for Websites
Page 24: Making the Web Fireproof: A Building Code for Websites

Clear rules on what goes into a new building

Page 25: Making the Web Fireproof: A Building Code for Websites

http://council.seattle.gov/2013/02/11/new-funds-for-preservation/

Page 26: Making the Web Fireproof: A Building Code for Websites

http://www.districtenergy.org/blog/wp-content/uploads/2013/10/Seattle-SouthLakeUnionAerial_big.jpg

Page 27: Making the Web Fireproof: A Building Code for Websites

Clear rules on when to retrofit or replace

Page 28: Making the Web Fireproof: A Building Code for Websites
Page 29: Making the Web Fireproof: A Building Code for Websites

http://upload.wikimedia.org/wikipedia/commons/a/a3/New_and_Old_Bay_Bridge_(8859593785).jpg

Page 30: Making the Web Fireproof: A Building Code for Websites
Page 31: Making the Web Fireproof: A Building Code for Websites

We need a building code for the web.

Page 32: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/tambako/14065508649/

Page 33: Making the Web Fireproof: A Building Code for Websites

WRONG!https://www.flickr.com/photos/tambako/14065508649/

Page 34: Making the Web Fireproof: A Building Code for Websites

“Building codes would never work for building code.”

https://www.flickr.com/photos/tambako/14065508649/

Page 35: Making the Web Fireproof: A Building Code for Websites

“It stifles innovation!”

https://www.flickr.com/photos/tambako/14065508649/

Page 36: Making the Web Fireproof: A Building Code for Websites
Page 37: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/bnels/16959358026/

Page 38: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/myhsu/15094965442/

Page 39: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/tambako/14065508649/

Page 40: Making the Web Fireproof: A Building Code for Websites

BUT!https://www.flickr.com/photos/tambako/14065508649/

Page 41: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/christinyca/15875497176/

“The built environment must be planned in advance!”

Page 42: Making the Web Fireproof: A Building Code for Websites

“Web development is not pre-planned!”

Page 43: Making the Web Fireproof: A Building Code for Websites

“Web development is not pre-planned!”

(Usually)

Page 44: Making the Web Fireproof: A Building Code for Websites
Page 45: Making the Web Fireproof: A Building Code for Websites

Winchester Mystery House

Page 46: Making the Web Fireproof: A Building Code for Websites
Page 47: Making the Web Fireproof: A Building Code for Websites

Every website, every product, every codebase is littered with Doors to Nowhere.

(Yes, even yours.)

Page 48: Making the Web Fireproof: A Building Code for Websites
Page 49: Making the Web Fireproof: A Building Code for Websites

Why?

Page 50: Making the Web Fireproof: A Building Code for Websites

http://upload.wikimedia.org/wikipedia/commons/3/32/Fire-Forest.jpg

Page 51: Making the Web Fireproof: A Building Code for Websites

Let’s talk debt.http://upload.wikimedia.org/wikipedia/commons/3/32/Fire-Forest.jpg

Page 52: Making the Web Fireproof: A Building Code for Websites

http://commons.wikimedia.org/wiki/File:Ward_Cunningham_at_Wikimania_2006.jpg

Ward Cunningham

Page 53: Making the Web Fireproof: A Building Code for Websites

Kinds of debt• Tech debt

• Design debt

• Accessibility debt

• I18N debt

• Security debt

• DevOps debt

Page 54: Making the Web Fireproof: A Building Code for Websites

Tech debt

• Code upgrades

• Refactoring

• “Temporary” hacks

• TODO

• Not staying up to date

Page 55: Making the Web Fireproof: A Building Code for Websites

<br />

Page 56: Making the Web Fireproof: A Building Code for Websites

Why a space?

<br />

Page 57: Making the Web Fireproof: A Building Code for Websites
Page 58: Making the Web Fireproof: A Building Code for Websites

Design debt• Usability compromised by lack of testing or cut scope

• Sub-optimal user flows

• Unfinished features

• Mobile Last, Mobile Not, What’s Mobile?

• “Experience rot”

• “Patch and paint” UX solutions instead of “replacing the wall”

Page 59: Making the Web Fireproof: A Building Code for Websites
Page 60: Making the Web Fireproof: A Building Code for Websites

Accessibility debt

• Doesn’t work with screen reader

• ARIA hooks not used or set up properly

• Accessibility never tested, never a priority

• “Yes, but are they the 80% case?”

Page 61: Making the Web Fireproof: A Building Code for Websites
Page 62: Making the Web Fireproof: A Building Code for Websites

–Developer, (company redacted)

“Six years ago I was asked how long it’d take for me to

internationalize our code base. I said two weeks. But we didn’t have time. Now, it would take

months of work — with multiple developers.”

Page 63: Making the Web Fireproof: A Building Code for Websites

You will never not have debt.

Page 64: Making the Web Fireproof: A Building Code for Websites

http://upload.wikimedia.org/wikipedia/commons/3/32/Fire-Forest.jpg

Page 65: Making the Web Fireproof: A Building Code for Websites

What’s on fire today?http://upload.wikimedia.org/wikipedia/commons/3/32/Fire-Forest.jpg

Page 66: Making the Web Fireproof: A Building Code for Websites

The Hierarchy of Needs

Page 67: Making the Web Fireproof: A Building Code for Websites

The Hierarchy of Needs

Shipping working code

Page 68: Making the Web Fireproof: A Building Code for Websites

The Hierarchy of Needs

Fixing bugs in working code

Shipping working code

Page 69: Making the Web Fireproof: A Building Code for Websites

The Hierarchy of Needs

New features

Fixing bugs in working code

Shipping working code

Page 70: Making the Web Fireproof: A Building Code for Websites

The Hierarchy of Needs

Technical debt

New features

Fixing bugs in working code

Shipping working code

Page 71: Making the Web Fireproof: A Building Code for Websites

The Hierarchy of Needs

Technical debt

New features

Fixing bugs in working code

Shipping working code

Page 72: Making the Web Fireproof: A Building Code for Websites

The Hierarchy of Needs

Technical debt

New features

Fixing bugs in working code

Shipping working codeMONEY

Page 73: Making the Web Fireproof: A Building Code for Websites

The Hierarchy of Needs

Technical debt

New features

Fixing bugs in working code

Shipping working code

MOAR MONEY!

MONEY

Page 74: Making the Web Fireproof: A Building Code for Websites

The Hierarchy of Needs

Technical debt

New features

Fixing bugs in working code

Shipping working code

MAKE IT RAAAAAAAAIN

MOAR MONEY!

MONEY

Page 75: Making the Web Fireproof: A Building Code for Websites

The Hierarchy of Needs

Technical debt

New features

Fixing bugs in working code

Shipping working code

No Money, Many Problems

MAKE IT RAAAAAAAAIN

MOAR MONEY!

MONEY

Page 76: Making the Web Fireproof: A Building Code for Websites

Resources vs. Revenue

Page 77: Making the Web Fireproof: A Building Code for Websites

Worst of all, it’s not just your debt.

Page 78: Making the Web Fireproof: A Building Code for Websites

Worst of all, it’s not just your debt.

Page 79: Making the Web Fireproof: A Building Code for Websites

To sum up…• Poor architecture kills velocity and sales

• We always have to keep up with change in market, device, user

• Not planning for internationalization is costly

• Security mistakes cost us money (and face)

• Bad accessibility costs us face (and money)

• You take on the debt of everyone else’s code you use

Page 80: Making the Web Fireproof: A Building Code for Websites
Page 81: Making the Web Fireproof: A Building Code for Websites
Page 82: Making the Web Fireproof: A Building Code for Websites

We need a building code for the web.

Page 83: Making the Web Fireproof: A Building Code for Websites
Page 84: Making the Web Fireproof: A Building Code for Websites

Not web standards, web practice.

Page 85: Making the Web Fireproof: A Building Code for Websites
Page 86: Making the Web Fireproof: A Building Code for Websites

What would it look like?• Design first, prototype second

• Best practices for security, accessibility, internationalization

• Have a rigorous plan for refactoring and paying down tech debt

• “Build to last, build to destroy”

Page 87: Making the Web Fireproof: A Building Code for Websites

So why aren’t we doing it?

Page 88: Making the Web Fireproof: A Building Code for Websites
Page 89: Making the Web Fireproof: A Building Code for Websites
Page 90: Making the Web Fireproof: A Building Code for Websites

There’s no such thing as a local fire on the Internet.

Page 91: Making the Web Fireproof: A Building Code for Websites

Who should do it?

Page 92: Making the Web Fireproof: A Building Code for Websites

Who should do it?

Yeah, I don’t know either.

Page 93: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/tambako/14065508649/

Page 94: Making the Web Fireproof: A Building Code for Websites

I WIN!https://www.flickr.com/photos/tambako/14065508649/

Page 95: Making the Web Fireproof: A Building Code for Websites

What can you do?

Page 96: Making the Web Fireproof: A Building Code for Websites

1. Plan, plan, plan.

Page 97: Making the Web Fireproof: A Building Code for Websites
Page 98: Making the Web Fireproof: A Building Code for Websites

The Spreadsheet

Page 99: Making the Web Fireproof: A Building Code for Websites
Page 100: Making the Web Fireproof: A Building Code for Websites
Page 101: Making the Web Fireproof: A Building Code for Websites

https://github.com/wnalyd/DT2

Page 102: Making the Web Fireproof: A Building Code for Websites

Defining the damn thing saves us headaches every time.

Page 103: Making the Web Fireproof: A Building Code for Websites

2. Codify.

Page 104: Making the Web Fireproof: A Building Code for Websites

StoryCore

Page 105: Making the Web Fireproof: A Building Code for Websites
Page 106: Making the Web Fireproof: A Building Code for Websites
Page 107: Making the Web Fireproof: A Building Code for Websites

StoryCore• Bootstrap for applications

• Sets the nuts and bolts pieces in place for a basic web application

• Import stories into your bug tracker of choice

• Build in key user experience requirements

• Accessibility and security acceptance criteria

Page 108: Making the Web Fireproof: A Building Code for Websites

Organizational Buy-In

Page 109: Making the Web Fireproof: A Building Code for Websites

Diplomacy (That’s another talk)

Page 110: Making the Web Fireproof: A Building Code for Websites

3. Think small.

Page 111: Making the Web Fireproof: A Building Code for Websites

http://patternlab.io/

Page 112: Making the Web Fireproof: A Building Code for Websites

4. Embrace impermanence through prototyping.

Page 113: Making the Web Fireproof: A Building Code for Websites
Page 114: Making the Web Fireproof: A Building Code for Websites
Page 115: Making the Web Fireproof: A Building Code for Websites

Prototyping != Building

Page 116: Making the Web Fireproof: A Building Code for Websites
Page 117: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/seattlemunicipalarchives/3809445908/

Page 118: Making the Web Fireproof: A Building Code for Websites

Build to destroy.

https://www.flickr.com/photos/seattlemunicipalarchives/3809445908/

Page 119: Making the Web Fireproof: A Building Code for Websites

5. Demand better frameworks, not more frameworks

Page 120: Making the Web Fireproof: A Building Code for Websites

https://xkcd.com/927/

(and frameworks)

Page 121: Making the Web Fireproof: A Building Code for Websites
Page 122: Making the Web Fireproof: A Building Code for Websites
Page 123: Making the Web Fireproof: A Building Code for Websites

We must hold frameworks makers accountable.

Page 124: Making the Web Fireproof: A Building Code for Websites

http://upload.wikimedia.org/wikipedia/commons/3/32/Fire-Forest.jpg

Page 125: Making the Web Fireproof: A Building Code for Websites

But… fireproof?http://upload.wikimedia.org/wikipedia/commons/3/32/Fire-Forest.jpg

Page 126: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/myhsu/15094965442/

Page 127: Making the Web Fireproof: A Building Code for Websites

https://www.flickr.com/photos/brewbooks/259421447/

Page 128: Making the Web Fireproof: A Building Code for Websites

Building codes do not save us from bad design.

Page 129: Making the Web Fireproof: A Building Code for Websites
Page 130: Making the Web Fireproof: A Building Code for Websites

With a code, you can choose the right doors to nowhere

Page 131: Making the Web Fireproof: A Building Code for Websites
Page 132: Making the Web Fireproof: A Building Code for Websites
Page 133: Making the Web Fireproof: A Building Code for Websites

Thank you.Dylan Wilbanks

Web: dylanwilbanks.com Twitter: @dylanw

And other fine social media networks