Managing JavaScript Complexity in Teams

In my career using many languages, there is always a decent gap in experience on teams, people who don’t agree on certain styles and some that don’t understand modern best practice. JavaScript has, historically, suffered from a dearth of tooling and is just now starting to come of age.

While leading teams I’ve developed practices, tools, and styles that allow for everyone from engineer to business understand the tradeoffs in implementation and how certain code costs more in then long run.

I created Plato to visualize complexity and maintainability from a high level, and I also manage several tasks as part of the grunt team, have created many more personally, and incorporate many other libraries and tools into JavaScript code management.

I’ll go over what complexity is, how tools like jshint, plato, complexity-report, and istanbul can help manage it, what makes for complex code and how to enforce that certain metrics stay within thresholds.

JavaScript has a tendency to spiral out of control quickly. Refactoring is difficult without advanced IDEs, unit testing can be done any out of a thousand different ways, even using ‘standard’ module systems like AMD can leave you crying if you travel down the wrong path too early. This session’s goals is to get people managing these issues early.

Jarrod Overson

Shape Security

Jarrod has been developing on the web for over 15 years in both startups and global companies and currently works at Riot Games. He founded Gossamer to help bootstrap companies into developing for the modern web and has provided free community training on everything from node to backbone. Jarrod is an active proponent and contributor to open source, creator of Plato, and a member of the Grunt, Marionette, and ES-Analysis teams.