I'm only here because I know a guy.


thoughts on navigating the enterprise.

(some of them even pertain to Node.js)


Everything's a nail since 2009™

Make sure it's the right tool for the job.

Accept that your rationale might be non-technical.

"In a vacuum n may seem better, but this is good for our situation."

Understand that it's not just a technology choice, it's a philosophy.

You can build the same crappy monoliths in JavaScript and negate all benefits. EVERYONE has to buy in.

Be prepared for critics.

They will parrot questions.

"Type checking once saved a baby from a pack of dingoes! How do you expect to build quality software without it?"

They will represent opinions they've read as their own.

"Business idea: Fibbonacci-as-a-service."

They will use outdated information.

"According to this blog post from 2010..."

They will use other people's data out of context.

"PayPal's RPS are atrocious! I blame Node.js!"

They will use microbenchmarks as if they mattered.

"vert.x can handle 5MM HWPS!" (That's 'Hello, world' Per Second)


They will assume you have ulterior motives.

"It's a fad! GET OFF MY LAWN!"

They will underestimate you.

"REU*: Real Engineers Use *"

They will assume that because they haven't heard of something, it doesn't exist.

"Do you even unit test, bro?"

They will do ALL of this without even looking at the technology.

Have patience, stay vigilant, and remember: Is This Good for the COMPANY?

The REAL secret?


*Tired Cliché Alert*

If you believe Node.js solves real problems and everyone complains about "steering the ship" remember, rudders aren't the only way to turn ships. Hurricanes work, too.

I Got 99 Problems.

That's it. 99.

Don't make it hard on yourself.

That's what your coworkers are for, right @tlivings?

We intentionally tried to avoid some things.

☃ Inventing problems to have something to solve.

☃ Solving other people's problems.

☃ Solving solved problems.

Only fix what's broken.

For us it was primarily velocity and productivity, so we needed to scale...

☃ People - Grow/train and support our peers.

☃ Product - Speed up product lifecycle.

☃ Technology - Create the best experiences.

It takes an village ecosystem: GitHub, npm, tooling.



Enterprises can be like Game of Thrones

erbody in the club got a castle.




☃ Breeds distrust.

☃ Creates shallow alliances based on selfish goals.

☃ Black-box teams and code.

☃ Hidden/hard-to-find source code.

Source, documentation, and distributables might as well be on different planets.

Little accountability to your peers.

"Oh, have a question? Let me cc my boss, he'll straighten you out."

Backlog: where features go to die.

"Submit a patch? Hell no, I don't trust you OR your ugly code!"

GitHub + npm + CI

☃ The source IS the distributable?!

☃ Documentation IS WITH the code?!

☃ No more cryptic ClassLoader errors or Maven hell?!


<passes out>

Downer #1

Your code will not be revered by future generations. It will be reviled.

Downer #2

It's rare that individuals solve real problems.

What's my point?

npm: Keep it modular

Easily allow folks to replace my crappy code with someone else's less-crappy code.

GitHub: Benefit from the mind grapes of others

Only through collaboration do truly great things get created, so loosen the death grip, brah.

many codes.

such create.

now what?

The only thing that should differentiate public and private modules is access rights.

Enough with the shortcuts already.

"It's only going to be used by this team" is a fallacy.

Expect copypasta.

Easy-to-find source code is like StackOverflow without the extra "words" to "explain" it.

Take pride in your code.

It shows up in your code, which shows up in everyone's node_modules.

Learn semver.

Even if you think you know it, learn it again. Teach others.

Be predictable.

"errbacks are so played out! People need to know how clever I am, so I'm going to..."

Side projects are great testing grounds for clever code.

Be consistent.

Kraken v0.x was our first try…


Smoke - http://www.flickr.com/photos/wwarby/11774670053/

Smoke Orange - http://www.flickr.com/photos/wwarby/11774413245/

Smoke Purple - http://www.flickr.com/photos/wwarby/11775187516/

Smoke Green - http://www.flickr.com/photos/wwarby/11774703423/