productive javascript workflow

43
Productive JavaScript workflow Krzysztof Szafranek

Post on 20-Oct-2014

2.132 views

Category:

Technology


0 download

DESCRIPTION

Presentation about best development practices for JavaScript teams.

TRANSCRIPT

Page 1: Productive JavaScript Workflow

Productive JavaScript workflow

Krzysztof Szafranek

Page 2: Productive JavaScript Workflow

Happy beginnings

Page 3: Productive JavaScript Workflow

Happy beginnings

Page 4: Productive JavaScript Workflow

11 years later...

Page 5: Productive JavaScript Workflow

2 years> 80 000 lines of JavaScript4 major redesigns15 front-end developers

Page 6: Productive JavaScript Workflow

× ×

Do you test every change in each browser?Before each commit?

Page 7: Productive JavaScript Workflow

Are you sure you didn’t break any page in the application?

Page 8: Productive JavaScript Workflow

Do you know if you didn’t break somebody else’s code?

Page 9: Productive JavaScript Workflow

You don’t know

Page 10: Productive JavaScript Workflow

Krzysztof Szafranek

How to stay sane while working on a large JS project?

Page 11: Productive JavaScript Workflow

e basics

Part I

Page 12: Productive JavaScript Workflow
Page 13: Productive JavaScript Workflow

jslint will hurt your feelingsEarly

Page 14: Productive JavaScript Workflow
Page 15: Productive JavaScript Workflow

Unit testing

Page 16: Productive JavaScript Workflow

“But we don’t have time to write tests!”

“My manager didn’t want unit tests”

Page 17: Productive JavaScript Workflow

How do you know your code works, when you don’t have a

test for it?

Page 18: Productive JavaScript Workflow

How do you know your code still works aer each commit, when you don’t have a test for

it?

Page 19: Productive JavaScript Workflow

You don’t know

Page 20: Productive JavaScript Workflow

Refactorings are a breeze

Added bonus:

Page 21: Productive JavaScript Workflow

Refactoring without tests

Page 22: Productive JavaScript Workflow

Which framework?

DOHJSUnitQUnitCrosscheckJ3Unit JSNUnitYUITest JSSpecUnitTesting JSpec

Jasminescrew-unit Test.SimpleTest.MoreTestCase TestItjsUnitTest JSTestJSTest.NET jsUnity

RhinoUnitJasUnitFireUnitJs-test-driverSinon.jsSOAtestVowsNodeunitTyrtle

Page 23: Productive JavaScript Workflow

Doesn’t matter(As long as you use it)

(And is easy to automate)

Page 24: Productive JavaScript Workflow

JS Test Driver

Page 25: Productive JavaScript Workflow

How about testing layouts?

Page 26: Productive JavaScript Workflow

Putting it all together

Part II

Page 27: Productive JavaScript Workflow

People make mistakes

Running tests in every browser takes time

Page 28: Productive JavaScript Workflow

Automation to the rescue!

Page 29: Productive JavaScript Workflow

Martin Fowler

Continuous Integration is a soware development practice where members of a team integrate their work frequently . . . leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.

Page 30: Productive JavaScript Workflow

jslint

CI for front-endpush

tests

deploy

Page 31: Productive JavaScript Workflow
Page 32: Productive JavaScript Workflow

Early bug detectionEarly fixesNo more FTP uploadsApplication is always shippable

Page 33: Productive JavaScript Workflow

Warning!

Page 34: Productive JavaScript Workflow

Humans are useful, too

Part III

Page 35: Productive JavaScript Workflow

Pair programming

Page 36: Productive JavaScript Workflow

Best debugging tool ever

Page 37: Productive JavaScript Workflow

Code reviews

Page 38: Productive JavaScript Workflow

Steve McConnell Code Complete

.. soware testing alone has limited effectiveness – the average defect detection rate is only 25 percent for unit testing, 35 percent for function testing, and 45 percent for integration testing. In contrast, the average effectiveness of design and code inspections are 55 and 60 percent.

Page 39: Productive JavaScript Workflow
Page 40: Productive JavaScript Workflow

A little help from the process

Not Started

Checked Out

Code Review

Design Review

QAReview

Are there unit tests?

Page 41: Productive JavaScript Workflow

1. Use jslint and unit tests to get feedback early

Before we part

2. Use CI to have shippable soware all the time

3. Don’t be afraid of your peers (and ducks)