“JavaScript is easy!” They Told Me 🔊

"Just wire up some modules and you're done!"

Fagner Brack
Nov 23, 2017 · 3 min read
The frame of an episode from “My Little Pony’s” cartoon showing a group of ponies looking at something dazzled. You can watch the full episode here.
Listen to the audio version!

Junior Developer: Ok, now I’ll learn how to program in JavaScript! Where should I start?

"Senior" Developer: That's very easy, you don't even need to write a lot of code! Just go to npm, install the Zebra and Koala Open Source modules, and you're done!

Junior Developer: Cool!

npm: Hi little grasshopper how can I be of assistance?

Junior Developer: Give me the Zebra and Koala modules.

npm: Of course, here they are.

Junior Developer: All tied up. Now my work is done!

*One day later*

Junior Developer: Now I need to add this feature. Where should I start?

“Senior” Developer: That’s very easy, you don’t even need to write a lot of code! Just go to Zebra's Github repository and ask them to implement it!

Junior Developer: Hi Zebra, I need to add this new feature, would you help me out?

Zebra: Of course, create a Pull Request.

Junior Developer: Here it is.

*2 days later*

Zebra: Your Pull Request is not good, you need to fix a few things.

Junior Developer: Here it is.

*2 days later*

Zebra: Now your Pull Request is good, I have merged.

Junior Developer: Thanks. Now my work is done!

*3 hours later*

Junior Developer: Now I need to fix this bug. Where should I start?

“Senior” Developer: That’s very easy, you don’t even need to write a lot of code! Just go to Koala’s Github repository and report it!

Junior Developer: Hi Koala, there's a bug in your module.

*2 days later*

Junior Developer: Hi Koala, are you there?

*1 week later*

Junior Developer: Is anybody maintaining this module?

*1 week later*

Junior Developer: I'll fork and fix it. Done.

*6 months later*

Junior Developer: Now I need to add this other feature. Let's look up which module I need to change first:

The diagram of the Junior Developer project's dependencies. It's a bunch of scratches forming an unreadable spaghetti.

Junior Developer: Err… I guess something went really wrong… JavaScript is so hard and complicated! What should I do now?

Real Developer: The problem is not JavaScript.

An external dependency tends to be too generic and therefore has a lot of complexity to account for edge cases you probably don’t have.

As a principle, you need to reduce your dependency on an external code as much as you can. Over time dependencies will incur a cost of change if you rely on them for the core purpose of your project.

Evaluate their need critically.

It’s possible to write your own code for things a generic module can already do for you without having to reinvent the wheel, as long as you design it correctly. That includes (but is not restricted to) no side-effects, low coupling, high cohesion, proper interface, enough affordance, no crap testing tools, code that can be deleted, no "over-engineering", no copy/paste, strict, small and without false positive tests.

If you don't design it correctly, you'll end up in the same mess, or even worse.

If you’re a plumber and the pipe leaks, it’s your responsibility to fix it. Not somebody else’s.

It’s all about applying software principles and techniques. It’s about learning how to program.

Don't blame the scalpel.

Junior Developer: Ok, now I’ll learn how to program. Can you help me?

Real Developer: Yes.

*7 years later*

New Junior Developer: Ok, now I’ll learn how to program in this popular language! Where should I start?

Former Junior Developer: I can teach you, but that's not easy.

I've been through this.

Sit down.

Let's talk.


Thanks for reading. If you have some feedback, reach out to me on Twitter, Facebook or Github.

Wanna chat in person? You can find me in the Sydney Software Crafters meetup.

freeCodeCamp.org

This is no longer updated. Go to https://freecodecamp.org/news instead

Fagner Brack

Written by

I believe ideas should be open and free. This is a non-profit initiative to write about fundamentals you won’t find anywhere else. ~7 min post every few weeks.

freeCodeCamp.org

This is no longer updated. Go to https://freecodecamp.org/news instead

More From Medium

More from freeCodeCamp.org

More from freeCodeCamp.org

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade