Slide 1

Slide 1 text

Full Stack Fest The business of front-end development "This is for Everyone" by Nick Webb - Flickr: DSC_3232. Licensed under CC BY 2.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:This_is_for_Everyone.jpg#mediaviewer/File:This_is_for_Everyone.jpg

Slide 2

Slide 2 text

Rachel Andrew Co-founder of Perch CMS: http://grabaperch.com and founder of edgeofmyseat.com Web developer, writer and speaker Find me at rachelandrew.co.uk On Twitter: @rachelandrew

Slide 3

Slide 3 text

grabaperch.com

Slide 4

Slide 4 text

The web is an accessible medium. We can protect that, or we can break it. I choose to protect it.

Slide 5

Slide 5 text

My tasks include … • bookkeeping • completing baffling forms from the government • writing Puppet Manifests • coding PHP • writing documentation • writing and giving presentations & workshops • front-end development

Slide 6

Slide 6 text

I ship.

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

http://www.ironspider.ca/adv/basic_css/whyusecss.htm

Slide 9

Slide 9 text

The “Netscape Resize Fix” <!-- function MM_reloadPage(init) { if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(ap pVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth! =document.MM_pgW || innerHeight! =document.MM_pgH) location.reload(); } MM_reloadPage(true); //-->

Slide 10

Slide 10 text

Front-end developer circa 2005? Browser bugs expert.

Slide 11

Slide 11 text

http://archive.webstandards.org/mission.html

Slide 12

Slide 12 text

http://www.webstandards.org/2013/03/01/our-work-here-is-done/ “Thanks to the hard work of countless WaSP members and supporters (like you), Tim Berners- Lee’s vision of the web as an open, accessible, and universal community is largely the reality. While there is still work to be done, the sting of the WaSP is no longer necessary. And so it is time for us to close down The Web Standards Project.”

Slide 13

Slide 13 text

Browser vendors are implementing standard things in a standard way.

Slide 14

Slide 14 text

Innovation happens through the standards process.

Slide 15

Slide 15 text

Showstopping browser bugs when doing straightforward things in modern browsers are rare.

Slide 16

Slide 16 text

http://www.allenpike.com/2015/javascript-framework-fatigue/ “Studies show that a todo list is the most complex JavaScript app you can build before a newer, better framework is invented.”

Slide 17

Slide 17 text

We’re creating complexity.

Slide 18

Slide 18 text

Hiding the simple languages of the web behind tooling and process.

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Replacing divs …

My website

Slide 21

Slide 21 text

… with new semantic elements.

My website

Slide 22

Slide 22 text

Web Video Text Tracks Format (WebVTT) WEBVTT 1 00:00:22.230 --> 00:00:24.606 This is the first subtitle. 2 00:00:30.739 --> 00:00:34.074 This is the second. 3 00:00:34.159 --> 00:00:35.743 Third https://developer.mozilla.org/en/docs/ Web/API/Web_Video_Text_Tracks_Format

Slide 23

Slide 23 text

http://robertnyman.com/html5/forms/input-types.html

Slide 24

Slide 24 text

http://caniuse.com/#feat=css-sel3

Slide 25

Slide 25 text

Time-dimensional Pseudo-classes :current :past :future :current(p, li, dt, dd) { background: yellow; } :past(p, li, dt, dd) { background: transparent; color: #999999; }

Slide 26

Slide 26 text

http://philipwalton.github.io/solved-by-flexbox/

Slide 27

Slide 27 text

gridbyexample.com

Slide 28

Slide 28 text

CSS Grid Layout
Header
Content

Slide 29

Slide 29 text

CSS Grid Layout .sidebar { grid-area: sidebar; } .content { grid-area: content; } .header { grid-area: header; } .wrapper { display: grid; grid-template-columns: 100px 10px 100px 10px 100px; grid-template-rows: auto; grid-template-areas: "header header header header header" "sidebar . content content content"; }

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

gridbyexample.com

Slide 32

Slide 32 text

via my inbox. “I’ll take a look if you create a Sass Mixin …”

Slide 33

Slide 33 text

Emerging specifications like Grid remove the need for some of the pre-processing

Slide 34

Slide 34 text

http://susy.oddbird.net/

Slide 35

Slide 35 text

http://www.zell-weekeat.com/susy2-tutorial/

Slide 36

Slide 36 text

Using the Susy Mixins. .ag1 { @include span(2 of 10); } .ag2 { @include span(6 of 10); @include clearfix; } .ag3 { @include span(2 of 10 last); }

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

Grid Layout lets you place elements on the Grid without calculations. /* declare a grid and set up a 10 column grid with gutters */ .container { width: 90%; margin: 0 auto 0 auto; display: grid; grid-template-columns: [col] 4.25fr repeat(9, [gutter] 1fr [col] 4.25fr ) [gutter]; grid-template-rows: auto repeat(5, 100px); } /* boxes positioned like so */ /* heading in row 1 full width */ h1 { grid-column: col / span col 10; grid-row: 1 / 2; } /* left hand sidebar */ .ag1 { grid-column: col / span gutter 2; grid-row: 2 / 3; }

Slide 39

Slide 39 text

Web designers and developers should be excited by specifications like grid. This is the future.

Slide 40

Slide 40 text

By leaning on frameworks, are we masking the issues?

Slide 41

Slide 41 text

Working with the specifications we can contribute to improving them

Slide 42

Slide 42 text

Sheer frustration drove much of the Web Standards movement.

Slide 43

Slide 43 text

My fear is that due to our reliance on frameworks we will stop pushing for better solutions.

Slide 44

Slide 44 text

https://twitter.com/codepo8/status/572783496550359040

Slide 45

Slide 45 text

There are always compromises. They shouldn’t be the same for every project.

Slide 46

Slide 46 text

Standardising on tools should not be at the expense of learning HTML, CSS and JavaScript.

Slide 47

Slide 47 text

Use your tools and frameworks lightly. Be ready to put them aside when they don’t suit a project.

Slide 48

Slide 48 text

Don’t become an expert in one brand of hammer. Become a master carpenter. Develop timeless skills.

Slide 49

Slide 49 text

Considerations when choosing tools and processes.

Slide 50

Slide 50 text

https://css-tricks.com

Slide 51

Slide 51 text

Is it responsible to use a brand new framework on a site you will complete then hand over?

Slide 52

Slide 52 text

Large teams and in-house projects often require more process than projects built by one or two people.

Slide 53

Slide 53 text

Who is the audience? • Internal or External? • Can we make any assumptions about technology used to access?

Slide 54

Slide 54 text

What browsers and devices are currently used to access the site?

Slide 55

Slide 55 text

What time do we have available?

Slide 56

Slide 56 text

Whose time are we saving?

Slide 57

Slide 57 text

http://aaron-gustafson.com/notebook/who-should-pay/ “When I look around, I see our community spending a lot of time coming up with new tools and techniques to make our jobs easier. To ship faster. And it’s not that I’m against efficiency, but I think we need to consider the implications of our decisions. And if one of those implications is making our users suffer—or potentially suffer—in order to make our lives easier, I think we need to consider their needs above our own.”

Slide 58

Slide 58 text

We Are Social: http://wearesocial.net/blog/2015/01/digital-social-mobile-worldwide-2015/

Slide 59

Slide 59 text

Will this tool … • Save me time? • Cause accessibility issues? • Slow the site down on mobile? • Limit the user agents that will be able to use the core experience?

Slide 60

Slide 60 text

It’s only temporary …

Slide 61

Slide 61 text

This is for everyone "This is for Everyone" by Nick Webb - Flickr: DSC_3232. Licensed under CC BY 2.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:This_is_for_Everyone.jpg#mediaviewer/File:This_is_for_Everyone.jpg

Slide 62

Slide 62 text

Progressive enhancement

Slide 63

Slide 63 text

http://www.bbc.co.uk/guidelines/futuremedia/accessibility/ html/progressive-enhancement.shtml “a robust site or application in the more traditional sense minimises its dependencies. The minimum dependency for a web site should be an internet connection and the ability to parse HTML.”

Slide 64

Slide 64 text

Start with the core experience

Slide 65

Slide 65 text

What is the minimum that I need to ship? How can I ensure that minimum protects the core experience for everyone?

Slide 66

Slide 66 text

We ship. We iterate.

Slide 67

Slide 67 text

grabaperch.com

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

How to integrate third party code

Slide 70

Slide 70 text

Not Invented Here

Slide 71

Slide 71 text

http://mortoray.com/2015/02/25/invented-here-syndrome/ “Are you afraid to write code? Does the thought linger in your brain that somewhere out there somebody has already done this? Do you find yourself trapped in an analysis cycle where nothing is getting done? Is your product mutating to accommodate third party components? If yes, then perhaps you are suffering from invented-here syndrome.”

Slide 72

Slide 72 text

Avoid turning shortcuts and third party code into dependencies.

Slide 73

Slide 73 text

Dependency Inversion

Slide 74

Slide 74 text

http://www.objectmentor.com/resources/articles/dip.pdf “High level modules should not depend upon low-level modules. Both should depend upon abstractions. Abstractions should never depend upon details. Details should depend upon abstractions.”

Slide 75

Slide 75 text

http://susy.oddbird.net/

Slide 76

Slide 76 text

Progressively enhanced UI • JavaScript implementation based on the regular HTML5 Video element • Static maps that become draggable and zoomable - avoiding creating a dependency on one maps provider or library • Ordering items via a form input - that become drag and drop if the user has JavaScript

Slide 77

Slide 77 text

You can’t do everything. 
 You can do something.

Slide 78

Slide 78 text

http://sixtwothree.org/posts/the-practical-case-for- progressive-enhancement “A 100% pure progressively-enhanced website may not be practical on every single project you will ever encounter. While that sort of purity can exist, it’s unlikely in many business scenarios. Budgets, timelines: these things exist. Progressive enhancement isn’t a zero sum game; it’s a continuum, just like the Web.”

Slide 79

Slide 79 text

• Learn (and teach!) core skills. HTML, CSS, JavaScript • Maintain an interest in emerging specifications • Take care that you are not clinging to outdated or unhelpful abstractions • We are no longer browser bug wranglers, instead we should be experts in performance especially as the web becomes ever more mobile

Slide 80

Slide 80 text

• Choose your tools and frameworks on a case by case basis • Understand the compromises • Don’t reinvent wheels … • … but beware “invented here syndrome” • Use progressive enhancement to protect the core experience while shipping quickly, build from there.

Slide 81

Slide 81 text

We get to create products that people see, touch & interact with.

Slide 82

Slide 82 text

George Bernard Shaw “We don’t stop playing because we grow old; we grow old because we stop playing”

Slide 83

Slide 83 text

Thank you! Rachel Andrew @rachelandrew http://rachelandrew.co.uk/presentations/business-of-front-end