SlideShare a Scribd company logo
1 of 64
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

jQuery Namespace Pattern
jQuery Namespace PatternjQuery Namespace Pattern
jQuery Namespace PatternDiego Fleury
 
Design how your objects talk through mocking
Design how your objects talk through mockingDesign how your objects talk through mocking
Design how your objects talk through mockingKonstantin Kudryashov
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsIgnacio Martín
 
jQuery Data Manipulate API - A source code dissecting journey
jQuery Data Manipulate API - A source code dissecting journeyjQuery Data Manipulate API - A source code dissecting journey
jQuery Data Manipulate API - A source code dissecting journeyHuiyi Yan
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony AppsKris Wallsmith
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony AppsKris Wallsmith
 
05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboards05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboardsDenis Ristic
 
Javascript essential-pattern
Javascript essential-patternJavascript essential-pattern
Javascript essential-pattern偉格 高
 
Functional programming using underscorejs
Functional programming using underscorejsFunctional programming using underscorejs
Functional programming using underscorejs偉格 高
 
06 jQuery #burningkeyboards
06 jQuery  #burningkeyboards06 jQuery  #burningkeyboards
06 jQuery #burningkeyboardsDenis Ristic
 
Backbone js
Backbone jsBackbone js
Backbone jsrstankov
 
Taming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsJarod Ferguson
 
Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Yevhen Kotelnytskyi
 
Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Yevhen Kotelnytskyi
 

What's hot (20)

BVJS
BVJSBVJS
BVJS
 
jQuery Namespace Pattern
jQuery Namespace PatternjQuery Namespace Pattern
jQuery Namespace Pattern
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
 
Design how your objects talk through mocking
Design how your objects talk through mockingDesign how your objects talk through mocking
Design how your objects talk through mocking
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worlds
 
jQuery: Events, Animation, Ajax
jQuery: Events, Animation, AjaxjQuery: Events, Animation, Ajax
jQuery: Events, Animation, Ajax
 
jQuery Data Manipulate API - A source code dissecting journey
jQuery Data Manipulate API - A source code dissecting journeyjQuery Data Manipulate API - A source code dissecting journey
jQuery Data Manipulate API - A source code dissecting journey
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
 
Matters of State
Matters of StateMatters of State
Matters of State
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
 
05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboards05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboards
 
Javascript essential-pattern
Javascript essential-patternJavascript essential-pattern
Javascript essential-pattern
 
Functional programming using underscorejs
Functional programming using underscorejsFunctional programming using underscorejs
Functional programming using underscorejs
 
06 jQuery #burningkeyboards
06 jQuery  #burningkeyboards06 jQuery  #burningkeyboards
06 jQuery #burningkeyboards
 
this
thisthis
this
 
Unittests für Dummies
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Taming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.js
 
Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0
 
Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?
 

Viewers also liked

DojoConf: Building Large Apps
DojoConf: Building Large AppsDojoConf: Building Large Apps
DojoConf: Building Large AppsRebecca Murphey
 
Vision Pacific Group Ltd
Vision Pacific Group LtdVision Pacific Group Ltd
Vision Pacific Group Ltdsagarika24
 
Rse sd oiseau dans pétrole
Rse sd oiseau dans pétroleRse sd oiseau dans pétrole
Rse sd oiseau dans pétroleJérôme Hoarau
 
Summa/Summon: Something something
Summa/Summon: Something somethingSumma/Summon: Something something
Summa/Summon: Something somethingMads Villadsen
 
Getting Started with Mulberry
Getting Started with MulberryGetting Started with Mulberry
Getting Started with MulberryRebecca Murphey
 

Viewers also liked (7)

DojoConf: Building Large Apps
DojoConf: Building Large AppsDojoConf: Building Large Apps
DojoConf: Building Large Apps
 
Vision Pacific Group Ltd
Vision Pacific Group LtdVision Pacific Group Ltd
Vision Pacific Group Ltd
 
Introducing Mulberry
Introducing MulberryIntroducing Mulberry
Introducing Mulberry
 
Rse sd oiseau dans pétrole
Rse sd oiseau dans pétroleRse sd oiseau dans pétrole
Rse sd oiseau dans pétrole
 
Ticer - What Is Summa
Ticer - What Is SummaTicer - What Is Summa
Ticer - What Is Summa
 
Summa/Summon: Something something
Summa/Summon: Something somethingSumma/Summon: Something something
Summa/Summon: Something something
 
Getting Started with Mulberry
Getting Started with MulberryGetting Started with Mulberry
Getting Started with Mulberry
 

Similar to A New Baseline for Front-End Devs

JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing UpDavid Padbury
 
Hacking with ruby2ruby
Hacking with ruby2rubyHacking with ruby2ruby
Hacking with ruby2rubyMarc Chung
 
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011Nick Sieger
 
A tour on ruby and friends
A tour on ruby and friendsA tour on ruby and friends
A tour on ruby and friends旻琦 潘
 
A jar-nORM-ous Task
A jar-nORM-ous TaskA jar-nORM-ous Task
A jar-nORM-ous TaskErin Dees
 
JRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the CloudJRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the CloudHiro Asari
 
How and why i roll my own node.js framework
How and why i roll my own node.js frameworkHow and why i roll my own node.js framework
How and why i roll my own node.js frameworkBen Lin
 
Building web framework with Rack
Building web framework with RackBuilding web framework with Rack
Building web framework with Racksickill
 
HTML5 for the Silverlight Guy
HTML5 for the Silverlight GuyHTML5 for the Silverlight Guy
HTML5 for the Silverlight GuyDavid Padbury
 
Ruby on Rails 3.1: Let's bring the fun back into web programing
Ruby on Rails 3.1: Let's bring the fun back into web programingRuby on Rails 3.1: Let's bring the fun back into web programing
Ruby on Rails 3.1: Let's bring the fun back into web programingBozhidar Batsov
 
Integrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby AmfIntegrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby Amfrailsconf
 
All I Need to Know I Learned by Writing My Own Web Framework
All I Need to Know I Learned by Writing My Own Web FrameworkAll I Need to Know I Learned by Writing My Own Web Framework
All I Need to Know I Learned by Writing My Own Web FrameworkBen Scofield
 
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012rivierarb
 
Building Testable PHP Applications
Building Testable PHP ApplicationsBuilding Testable PHP Applications
Building Testable PHP Applicationschartjes
 
Puppet at Pinterest
Puppet at PinterestPuppet at Pinterest
Puppet at PinterestPuppet
 
Top 10 bugs in C++ open source projects, checked in 2016
Top 10 bugs in C++ open source projects, checked in 2016Top 10 bugs in C++ open source projects, checked in 2016
Top 10 bugs in C++ open source projects, checked in 2016PVS-Studio
 

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

JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing Up
 
Hacking with ruby2ruby
Hacking with ruby2rubyHacking with ruby2ruby
Hacking with ruby2ruby
 
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
 
A tour on ruby and friends
A tour on ruby and friendsA tour on ruby and friends
A tour on ruby and friends
 
A jar-nORM-ous Task
A jar-nORM-ous TaskA jar-nORM-ous Task
A jar-nORM-ous Task
 
JRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the CloudJRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the Cloud
 
How and why i roll my own node.js framework
How and why i roll my own node.js frameworkHow and why i roll my own node.js framework
How and why i roll my own node.js framework
 
Building web framework with Rack
Building web framework with RackBuilding web framework with Rack
Building web framework with Rack
 
HTML5 for the Silverlight Guy
HTML5 for the Silverlight GuyHTML5 for the Silverlight Guy
HTML5 for the Silverlight Guy
 
Ruby on Rails 3.1: Let's bring the fun back into web programing
Ruby on Rails 3.1: Let's bring the fun back into web programingRuby on Rails 3.1: Let's bring the fun back into web programing
Ruby on Rails 3.1: Let's bring the fun back into web programing
 
Integrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby AmfIntegrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby Amf
 
Flex With Rubyamf
Flex With RubyamfFlex With Rubyamf
Flex With Rubyamf
 
All I Need to Know I Learned by Writing My Own Web Framework
All I Need to Know I Learned by Writing My Own Web FrameworkAll I Need to Know I Learned by Writing My Own Web Framework
All I Need to Know I Learned by Writing My Own Web Framework
 
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
 
ES6: The Awesome Parts
ES6: The Awesome PartsES6: The Awesome Parts
ES6: The Awesome Parts
 
Building Testable PHP Applications
Building Testable PHP ApplicationsBuilding Testable PHP Applications
Building Testable PHP Applications
 
Having Fun with Play
Having Fun with PlayHaving Fun with Play
Having Fun with Play
 
Puppet at Pinterest
Puppet at PinterestPuppet at Pinterest
Puppet at Pinterest
 
UNO based ODF Toolkit API
UNO based ODF Toolkit APIUNO based ODF Toolkit API
UNO based ODF Toolkit API
 
Top 10 bugs in C++ open source projects, checked in 2016
Top 10 bugs in C++ open source projects, checked in 2016Top 10 bugs in C++ open source projects, checked in 2016
Top 10 bugs in C++ open source projects, checked in 2016
 

More from Rebecca Murphey

Lessons from-a-rewrite-gotham
Lessons from-a-rewrite-gothamLessons from-a-rewrite-gotham
Lessons from-a-rewrite-gothamRebecca Murphey
 
Cleaner, Leaner, Meaner: Refactoring your jQuery
Cleaner, Leaner, Meaner: Refactoring your jQueryCleaner, Leaner, Meaner: Refactoring your jQuery
Cleaner, Leaner, Meaner: Refactoring your jQueryRebecca Murphey
 
Delivering a Responsive UI
Delivering a Responsive UIDelivering a Responsive UI
Delivering a Responsive UIRebecca Murphey
 

More from Rebecca Murphey (6)

Lessons from-a-rewrite-gotham
Lessons from-a-rewrite-gothamLessons from-a-rewrite-gotham
Lessons from-a-rewrite-gotham
 
Lessons from a Rewrite
Lessons from a RewriteLessons from a Rewrite
Lessons from a Rewrite
 
Modern JavaScript
Modern JavaScriptModern JavaScript
Modern JavaScript
 
Cleaner, Leaner, Meaner: Refactoring your jQuery
Cleaner, Leaner, Meaner: Refactoring your jQueryCleaner, Leaner, Meaner: Refactoring your jQuery
Cleaner, Leaner, Meaner: Refactoring your jQuery
 
The jQuery Divide
The jQuery DivideThe jQuery Divide
The jQuery Divide
 
Delivering a Responsive UI
Delivering a Responsive UIDelivering a Responsive UI
Delivering a Responsive UI
 

Recently uploaded

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 

Recently uploaded (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 

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