Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Why code in Node.js often gets rejected by Soun...

Phil Calçado
September 30, 2013

Why code in Node.js often gets rejected by SoundCloud

From GOTO Aarhus 2013:

At SoundCloud we ask candidates to send us some code before inviting them in for interviews. Candidates can use whatever language they want, and over the past years we saw a massive rise on the number of submissions using server-side JavaScript. Unfortunately, too many submissions are asynchronous blobs of procedural code.

JavaScript is a fairly functional language, and over the past decades Functional Programming developed interesting solutions for many of the problems we face when writing Node.js and regular JavaScript. Let's talk about how to leverage good old Functional Programming techniques to make code less coupled and more readable!

Phil Calçado

September 30, 2013
Tweet

More Decks by Phil Calçado

Other Decks in Programming

Transcript

  1. Why code in Node.js often get rejected by SoundCloud Phil

    Calçado - SoundCloud @pcalcado http://philcalcado.com Tuesday, October 1, 13
  2. ~ 200 million users / month > 11 hours of

    audio uploaded every minute Tuesday, October 1, 13
  3. you can choose any language. 0 10 20 30 40

    Ruby Java JavaScript (Node.js) C Clojure Scala % of submissions ~2011-2012 Tuesday, October 1, 13
  4. you can choose any language. 0 10 20 30 40

    Ruby Java JavaScript (Node.js) C Clojure Scala rejected before interview invited for inverview Tuesday, October 1, 13
  5. you can choose any language. 0 7.5 15 22.5 30

    Ruby Java JavaScript (Node.js) Go Clojure Scala % of submissions on the past ~1 year Tuesday, October 1, 13
  6. you can choose any language. 0 7.5 15 22.5 30

    Ruby Java JavaScript (Node.js) Go Clojure Scala % of submissions on the past ~1 year Tuesday, October 1, 13
  7. you can choose any language. 0 7.5 15 22.5 30

    Ruby Java JavaScript (Node.js) Go Clojure Scala rejected before interview invited for inverview Tuesday, October 1, 13
  8. you can choose any language. 0 7.5 15 22.5 30

    Ruby Java JavaScript (Node.js) Go Clojure Scala rejected before interview invited for inverview WTF? Tuesday, October 1, 13
  9. http://bit.ly/JFbZt8 “SICP and some of the Sussman & Steele "Lambda

    the ..." papers made a big impression on me years before, although I did not understand their full meaning then. Remember, I was recruited to "do Scheme" [...] My interest in languages such as Self informed a subversive agenda [...]. Likewise with first-class functions, which were inspired by Scheme [...]” Tuesday, October 1, 13
  10. our “framework”: 1 - Extract protocol in “combinators” 2 -

    Keep mutable state in closures Tuesday, October 1, 13
  11. How to Design Programs - http://bit.ly/K0BfrL Structure and Interpretation of

    Computer Programs - http://bit.ly/K0BjYm The Art of the Metaobject Protocol http://amzn.to/K0BqU1 Purely Functional Data Structures http://amzn.to/JFn4KG Let Over Lambda - http://amzn.to/IMMkNO An Introduction to Lambda Calculi for Computer Scientists - http://amzn.to/IX8d1B All drawings are available as t-shirts from the awesome Diesel Sweeties - http://dieselsweeties.com/ Tuesday, October 1, 13