SlideShare a Scribd company logo
A new baseline
               for front-end developers
               Rebecca Murphey • April 2012 • BerlinJS

Friday, April 20, 12
rmurphey.com • @rmurphey • bocoup.com




Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
Our emphasis shifts from trivia to tools as we are
                   required to automate, streamline, and bullet-proof
                   our processes.




Friday, April 20, 12
bit.ly/front-end-dev-baseline




Friday, April 20, 12
javascript
Friday, April 20, 12
you already know:
                   jQuery, underscore, basic JavaScript


                   you should know:
                   jQuery-less JavaScript, prototypal inheritance,
                   Function.bind, basics of Backbone, Ember,
                   canJS or similar



Friday, April 20, 12
https://github.com/rmurphey/js-assessment




Friday, April 20, 12
4
                     5   beforeEach(function() {
                     6     a = [ 1, 2, 3, 4 ];
                     7     b = {
                     8        foo : 'bar',
                     9        baz : 'bim'
                   10      };
                   11
                   12      fn = function() { };
                   13    });
                   14
                   15    it("you should be able to determine the location of an item in an array", function() {
                   16      // define a function for fn so that the following will pass
                   17      expect(fn(a, 3)).to.be(2);
                   18    });
                   19
                   20    it("you should be able to add the values of an array", function() {
                   21      // define a function for fn so that the following will pass
                   22      expect(fn(a)).to.be(10);
                   23    });
                   24
                   25    it("you should be able to remove an item from an array", function() {
                   26      // define a function for fn so that the following will pass
                   27      var result = fn(a, 2);
                   28      expect(result).to.have.length(3);
                   29      expect(result.join(' ')).to.be('1 3 4');
                   30    });
                   31
                   32    it("you should be able to add an item to the end of an array", function() {
                   33      // define a function for fn so that the following will pass
                   34      var result = fn(a, 10);
                   35      expect(result).to.have.length(5);
                   36      expect(result[result.length - 1]).to.be(10);
                   37    });
                   38
                   39    it("you should be able to create an array from two arrays", function() {
                   40      // define a function for fn so that the following will pass
                   41      var c = [ 'a', 'b', 'c' ],
                   42          result = fn(a, c);
Friday, April 20, 12
                   43
eloquentjavascript.net



Friday, April 20, 12
git & github
Friday, April 20, 12
you already know:
                   creating a new repo, cloning a repo, branching
                   and merging locally


                   you should know:
                   collaboration workflow, pull requests, code
                   reviews



Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
modularity
                   & builds
Friday, April 20, 12
you already know:
                   to keep scripts out of your <head>,
                   to limit the number of http requests,
                   to reduce http overhead via minification


                   you should know:
                   AMD, RequireJS / Almond,
                   UglifyJS, Closure Compiler



Friday, April 20, 12
Friday, April 20, 12
1 ({
                    2 baseUrl : 'app',
                    3 dir : 'build',
                    4 paths : {
                    5    lib : '../lib',
                    6    plugins : '../lib/plugins',
                    7    app : '.',
                    8
                    9    jquery : '../lib/jquery',
                   10    underscore : '../lib/underscore',
                   11    backbone : '../lib/backbone',
                   12
                   13    use : '../lib/plugins/use',
                   14    text : '../lib/plugins/text'
                   15 },
                   16
                   17 use : {
                   18    underscore : {
                   19      attach : '_'
                   20    },
                   21    backbone : {
                   22      deps : [ 'use!underscore', 'jquery' ],
                   23      attach : [ 'Backbone' ]
                   24    }
                   25 },
                   26
                   27 modules : [
                   28    {
                   29      name : 'app/main'
                   30    }
                   31 ]
                   32 })




Friday, April 20, 12
r.js -o your.build.js




Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
dev tools
Friday, April 20, 12
you already know:
                   console.log, console.dir, editing CSS,
                   the network tab, Firebug or Chrome dev tools


                   you should know:
                   breakpoints & step debugging, $0,
                   timelines & profiles, other browsers



Friday, April 20, 12
Friday, April 20, 12
Friday, April 20, 12
command line
Friday, April 20, 12
Is it unreasonable to ask for a GUI so that
                   whatever I’m doing works like all the other
                   programs I use all day?
                                                Dark_Prism on Reddit




Friday, April 20, 12
Now you can berate me for not understanding
                       the Terminal if you like, but I’ll trade your
                       ruby gems for my under-colour removal and
                       dot gain, any day of the week. How hard
                       should this be?
                                 Andy Clarke, author of “Hardboiled Web Design”




Friday, April 20, 12
you already know:
                   either that the command line is amazing,
                   or the command line is terrifying


                   you should know:
                   ack, ssh, find, curl, git, npm; creating aliases
                   for commonly used commands



Friday, April 20, 12
Friday, April 20, 12
templates
Friday, April 20, 12
you already know:
                   to send data, not HTML, from the server; to
                   build HTML as a string & insert it into the
                   DOM all at once*


                   you should know:
                   various templating libraries & tradeoffs,
                   the RequireJS text! plugin



Friday, April 20, 12
Friday, April 20, 12
1 define([
                    2   'app/components/base',
                    3   'text!app/templates/searchForm.html'
                    4 ], function(C, tpl) {
                    5   return C({
                    6     template : tpl,
                    7
                    8     events : {
                    9        'submit .search-form' : '_onSearch'
                   10     },
                   11
                   12     _onSearch : function(e) {
                   13        e.preventDefault();
                   14        var term = $.trim(this.query('.js-input').val());
                   15        if (!term) { return; }
                   16        this.trigger('search', term);
                   17     }
                   18   });
                   19 });




Friday, April 20, 12
css
Friday, April 20, 12
you already know:
                   that CSS is difficult to maintain, that you
                   should be modularizing your CSS, that you
                   should combine & minify CSS for production


                   you should know:
                   SASS, Stylus, and/or LESS; RequireJS
                   for plain CSS optimization



Friday, April 20, 12
1 border-radius()
                    2   -webkit-border-radius arguments
                    3   -moz-border-radius arguments
                    4   border-radius arguments
                    5
                    6 body
                    7   font 12px Helvetica, Arial, sans-serif
                    8
                    9 a.button
                   10   border-radius 5px




Friday, April 20, 12
1   $blue: #3bbfce;
                    2   $margin: 16px;
                    3
                    4   .content-navigation {
                    5     border-color: $blue;
                    6     color:
                    7       darken($blue, 9%);
                    8   }
                    9
                   10   .border {
                   11     padding: $margin / 2;
                   12     margin: $margin / 2;
                   13     border-color: $blue;
                   14   }




Friday, April 20, 12
CAUTION: THIS IS A LIE




Friday, April 20, 12
testing
Friday, April 20, 12
you already know:
                   you should be testing your code, but it’s
                   hard to know where to start


                   you should know:
                   modularizing code makes testing easier;
                   baby steps are better than no steps at all



Friday, April 20, 12
Friday, April 20, 12
We desperately need more resources to teach
                   people how to get started with testing.




Friday, April 20, 12
automation
Friday, April 20, 12
Friday, April 20, 12
code quality
Friday, April 20, 12
you already know:
                   subtle flaws in code can ruin your day,
                   a project’s existing style


                   you should know:
                   JSHint, pre-commit hooks, editor plugins




Friday, April 20, 12
Friday, April 20, 12
docs
Friday, April 20, 12
you already know:
                   w3schools.com is abhorrent


                   you should know:
                   MDN, dochub.io; prefix all your JS searches
                   with “mdn” (or !js on duckduckgo)




Friday, April 20, 12
Friday, April 20, 12
A good programmer is a lazy programmer;
                   only lazy programmers will want to write the
                   kind of tools that might replace them in the
                   end. But for a lazy programmer to be a good
                   programmer, he or she must be incredibly
                   unlazy when it comes to learning how to
                   stay lazy.
                                         Paraphrased from Philipp Lenssen,
                                “Why Good Programmers are Lazy and Dumb”




Friday, April 20, 12
rmurphey.com • @rmurphey • bocoup.com

                            bit.ly/front-end-dev-baseline




Friday, April 20, 12

More Related Content

What's hot (20)

KEY
jQuery Namespace Pattern
Diego Fleury
 
PDF
Your Entity, Your Code
Marco Vito Moscaritolo
 
PDF
Design how your objects talk through mocking
Konstantin Kudryashov
 
PDF
Symfony & Javascript. Combining the best of two worlds
Ignacio Martín
 
PDF
jQuery: Events, Animation, Ajax
Constantin Titarenko
 
PPTX
jQuery Data Manipulate API - A source code dissecting journey
Huiyi Yan
 
PDF
How Kris Writes Symfony Apps
Kris Wallsmith
 
PDF
Matters of State
Kris Wallsmith
 
PDF
How Kris Writes Symfony Apps
Kris Wallsmith
 
PDF
05 JavaScript #burningkeyboards
Denis Ristic
 
PDF
Javascript essential-pattern
偉格 高
 
PDF
Functional programming using underscorejs
偉格 高
 
PDF
06 jQuery #burningkeyboards
Denis Ristic
 
PDF
this
偉格 高
 
PDF
Unittests für Dummies
Lars Jankowfsky
 
KEY
Backbone js
rstankov
 
PPTX
Taming that client side mess with Backbone.js
Jarod Ferguson
 
PDF
Как получить чёрный пояс по WordPress? v2.0
Yevhen Kotelnytskyi
 
PDF
Как получить чёрный пояс по WordPress?
Yevhen Kotelnytskyi
 
jQuery Namespace Pattern
Diego Fleury
 
Your Entity, Your Code
Marco Vito Moscaritolo
 
Design how your objects talk through mocking
Konstantin Kudryashov
 
Symfony & Javascript. Combining the best of two worlds
Ignacio Martín
 
jQuery: Events, Animation, Ajax
Constantin Titarenko
 
jQuery Data Manipulate API - A source code dissecting journey
Huiyi Yan
 
How Kris Writes Symfony Apps
Kris Wallsmith
 
Matters of State
Kris Wallsmith
 
How Kris Writes Symfony Apps
Kris Wallsmith
 
05 JavaScript #burningkeyboards
Denis Ristic
 
Javascript essential-pattern
偉格 高
 
Functional programming using underscorejs
偉格 高
 
06 jQuery #burningkeyboards
Denis Ristic
 
Unittests für Dummies
Lars Jankowfsky
 
Backbone js
rstankov
 
Taming that client side mess with Backbone.js
Jarod Ferguson
 
Как получить чёрный пояс по WordPress? v2.0
Yevhen Kotelnytskyi
 
Как получить чёрный пояс по WordPress?
Yevhen Kotelnytskyi
 

Viewers also liked (7)

PDF
DojoConf: Building Large Apps
Rebecca Murphey
 
PDF
Vision Pacific Group Ltd
sagarika24
 
PDF
Introducing Mulberry
Rebecca Murphey
 
PPTX
Rse sd oiseau dans pétrole
Jérôme Hoarau
 
PDF
Ticer - What Is Summa
Mads Villadsen
 
PDF
Summa/Summon: Something something
Mads Villadsen
 
PDF
Getting Started with Mulberry
Rebecca Murphey
 
DojoConf: Building Large Apps
Rebecca Murphey
 
Vision Pacific Group Ltd
sagarika24
 
Introducing Mulberry
Rebecca Murphey
 
Rse sd oiseau dans pétrole
Jérôme Hoarau
 
Ticer - What Is Summa
Mads Villadsen
 
Summa/Summon: Something something
Mads Villadsen
 
Getting Started with Mulberry
Rebecca Murphey
 
Ad

Similar to A New Baseline for Front-End Devs (20)

PDF
Pocket Knife JS
Diogo Antunes
 
PDF
A Re-Introduction to JavaScript
Simon Willison
 
KEY
Remix Your Language Tooling (JSConf.eu 2012)
lennartkats
 
PDF
JavaScript 101
ygv2000
 
PDF
Clojurescript slides
elliando dias
 
PDF
Responsible JavaScript
Michael Girouard
 
PDF
Js in the open
Victor Porof
 
PDF
CoffeeScript
Scott Leberknight
 
PDF
Practical pairing of generative programming with functional programming.
Eugene Lazutkin
 
PDF
lecture5
tutorialsruby
 
PDF
lecture5
tutorialsruby
 
PDF
JSLent: give it up for JavaScript
BigBlueHat
 
PDF
How we're building Wercker
Micha Hernandez van Leuffen
 
KEY
Exciting JavaScript - Part II
Eugene Lazutkin
 
PDF
CoffeeScript
Soren Harner
 
PDF
Javascript - How to avoid the bad parts
Mikko Ohtamaa
 
KEY
JavaScript Neednt Hurt - JavaBin talk
Thomas Kjeldahl Nilsson
 
PDF
The CoffeeScript Edge
TrevorBurnham
 
KEY
JavaScript Growing Up
David Padbury
 
PPTX
01 Introduction - JavaScript Development
Tommy Vercety
 
Pocket Knife JS
Diogo Antunes
 
A Re-Introduction to JavaScript
Simon Willison
 
Remix Your Language Tooling (JSConf.eu 2012)
lennartkats
 
JavaScript 101
ygv2000
 
Clojurescript slides
elliando dias
 
Responsible JavaScript
Michael Girouard
 
Js in the open
Victor Porof
 
CoffeeScript
Scott Leberknight
 
Practical pairing of generative programming with functional programming.
Eugene Lazutkin
 
lecture5
tutorialsruby
 
lecture5
tutorialsruby
 
JSLent: give it up for JavaScript
BigBlueHat
 
How we're building Wercker
Micha Hernandez van Leuffen
 
Exciting JavaScript - Part II
Eugene Lazutkin
 
CoffeeScript
Soren Harner
 
Javascript - How to avoid the bad parts
Mikko Ohtamaa
 
JavaScript Neednt Hurt - JavaBin talk
Thomas Kjeldahl Nilsson
 
The CoffeeScript Edge
TrevorBurnham
 
JavaScript Growing Up
David Padbury
 
01 Introduction - JavaScript Development
Tommy Vercety
 
Ad

More from Rebecca Murphey (6)

PDF
Lessons from-a-rewrite-gotham
Rebecca Murphey
 
PDF
Lessons from a Rewrite
Rebecca Murphey
 
PDF
Modern JavaScript
Rebecca Murphey
 
PDF
Cleaner, Leaner, Meaner: Refactoring your jQuery
Rebecca Murphey
 
PDF
The jQuery Divide
Rebecca Murphey
 
PDF
Delivering a Responsive UI
Rebecca Murphey
 
Lessons from-a-rewrite-gotham
Rebecca Murphey
 
Lessons from a Rewrite
Rebecca Murphey
 
Modern JavaScript
Rebecca Murphey
 
Cleaner, Leaner, Meaner: Refactoring your jQuery
Rebecca Murphey
 
The jQuery Divide
Rebecca Murphey
 
Delivering a Responsive UI
Rebecca Murphey
 

Recently uploaded (20)

PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 

A New Baseline for Front-End Devs

  • 1. A new baseline for front-end developers Rebecca Murphey • April 2012 • BerlinJS Friday, April 20, 12
  • 2. rmurphey.com • @rmurphey • bocoup.com Friday, April 20, 12
  • 15. Our emphasis shifts from trivia to tools as we are required to automate, streamline, and bullet-proof our processes. Friday, April 20, 12
  • 18. you already know: jQuery, underscore, basic JavaScript you should know: jQuery-less JavaScript, prototypal inheritance, Function.bind, basics of Backbone, Ember, canJS or similar Friday, April 20, 12
  • 20. 4 5 beforeEach(function() { 6 a = [ 1, 2, 3, 4 ]; 7 b = { 8 foo : 'bar', 9 baz : 'bim' 10 }; 11 12 fn = function() { }; 13 }); 14 15 it("you should be able to determine the location of an item in an array", function() { 16 // define a function for fn so that the following will pass 17 expect(fn(a, 3)).to.be(2); 18 }); 19 20 it("you should be able to add the values of an array", function() { 21 // define a function for fn so that the following will pass 22 expect(fn(a)).to.be(10); 23 }); 24 25 it("you should be able to remove an item from an array", function() { 26 // define a function for fn so that the following will pass 27 var result = fn(a, 2); 28 expect(result).to.have.length(3); 29 expect(result.join(' ')).to.be('1 3 4'); 30 }); 31 32 it("you should be able to add an item to the end of an array", function() { 33 // define a function for fn so that the following will pass 34 var result = fn(a, 10); 35 expect(result).to.have.length(5); 36 expect(result[result.length - 1]).to.be(10); 37 }); 38 39 it("you should be able to create an array from two arrays", function() { 40 // define a function for fn so that the following will pass 41 var c = [ 'a', 'b', 'c' ], 42 result = fn(a, c); Friday, April 20, 12 43
  • 22. git & github Friday, April 20, 12
  • 23. you already know: creating a new repo, cloning a repo, branching and merging locally you should know: collaboration workflow, pull requests, code reviews Friday, April 20, 12
  • 26. modularity & builds Friday, April 20, 12
  • 27. you already know: to keep scripts out of your <head>, to limit the number of http requests, to reduce http overhead via minification you should know: AMD, RequireJS / Almond, UglifyJS, Closure Compiler Friday, April 20, 12
  • 29. 1 ({ 2 baseUrl : 'app', 3 dir : 'build', 4 paths : { 5 lib : '../lib', 6 plugins : '../lib/plugins', 7 app : '.', 8 9 jquery : '../lib/jquery', 10 underscore : '../lib/underscore', 11 backbone : '../lib/backbone', 12 13 use : '../lib/plugins/use', 14 text : '../lib/plugins/text' 15 }, 16 17 use : { 18 underscore : { 19 attach : '_' 20 }, 21 backbone : { 22 deps : [ 'use!underscore', 'jquery' ], 23 attach : [ 'Backbone' ] 24 } 25 }, 26 27 modules : [ 28 { 29 name : 'app/main' 30 } 31 ] 32 }) Friday, April 20, 12
  • 34. you already know: console.log, console.dir, editing CSS, the network tab, Firebug or Chrome dev tools you should know: breakpoints & step debugging, $0, timelines & profiles, other browsers Friday, April 20, 12
  • 38. Is it unreasonable to ask for a GUI so that whatever I’m doing works like all the other programs I use all day? Dark_Prism on Reddit Friday, April 20, 12
  • 39. Now you can berate me for not understanding the Terminal if you like, but I’ll trade your ruby gems for my under-colour removal and dot gain, any day of the week. How hard should this be? Andy Clarke, author of “Hardboiled Web Design” Friday, April 20, 12
  • 40. you already know: either that the command line is amazing, or the command line is terrifying you should know: ack, ssh, find, curl, git, npm; creating aliases for commonly used commands Friday, April 20, 12
  • 43. you already know: to send data, not HTML, from the server; to build HTML as a string & insert it into the DOM all at once* you should know: various templating libraries & tradeoffs, the RequireJS text! plugin Friday, April 20, 12
  • 45. 1 define([ 2 'app/components/base', 3 'text!app/templates/searchForm.html' 4 ], function(C, tpl) { 5 return C({ 6 template : tpl, 7 8 events : { 9 'submit .search-form' : '_onSearch' 10 }, 11 12 _onSearch : function(e) { 13 e.preventDefault(); 14 var term = $.trim(this.query('.js-input').val()); 15 if (!term) { return; } 16 this.trigger('search', term); 17 } 18 }); 19 }); Friday, April 20, 12
  • 47. you already know: that CSS is difficult to maintain, that you should be modularizing your CSS, that you should combine & minify CSS for production you should know: SASS, Stylus, and/or LESS; RequireJS for plain CSS optimization Friday, April 20, 12
  • 48. 1 border-radius() 2 -webkit-border-radius arguments 3 -moz-border-radius arguments 4 border-radius arguments 5 6 body 7 font 12px Helvetica, Arial, sans-serif 8 9 a.button 10 border-radius 5px Friday, April 20, 12
  • 49. 1 $blue: #3bbfce; 2 $margin: 16px; 3 4 .content-navigation { 5 border-color: $blue; 6 color: 7 darken($blue, 9%); 8 } 9 10 .border { 11 padding: $margin / 2; 12 margin: $margin / 2; 13 border-color: $blue; 14 } Friday, April 20, 12
  • 50. CAUTION: THIS IS A LIE Friday, April 20, 12
  • 52. you already know: you should be testing your code, but it’s hard to know where to start you should know: modularizing code makes testing easier; baby steps are better than no steps at all Friday, April 20, 12
  • 54. We desperately need more resources to teach people how to get started with testing. Friday, April 20, 12
  • 58. you already know: subtle flaws in code can ruin your day, a project’s existing style you should know: JSHint, pre-commit hooks, editor plugins Friday, April 20, 12
  • 61. you already know: w3schools.com is abhorrent you should know: MDN, dochub.io; prefix all your JS searches with “mdn” (or !js on duckduckgo) Friday, April 20, 12
  • 63. A good programmer is a lazy programmer; only lazy programmers will want to write the kind of tools that might replace them in the end. But for a lazy programmer to be a good programmer, he or she must be incredibly unlazy when it comes to learning how to stay lazy. Paraphrased from Philipp Lenssen, “Why Good Programmers are Lazy and Dumb” Friday, April 20, 12
  • 64. rmurphey.com • @rmurphey • bocoup.com bit.ly/front-end-dev-baseline Friday, April 20, 12