Web Dev Tools: Convenience or Crutch?

Koop
Koop Codes
Published in
4 min readApr 19, 2018

“Just remember: these features are supposed to be used as a convenience, not used a crutch.”

I have heard those words often from Rick Lopez. He was referring to features in ES6, but his words keep coming back to me as I keep learning more about the world of front-end frameworks and the ancillary tools required to use them. At what level of complexity and abstraction does all this “stuff” we use, the frameworks, the build tools, the deployment services, go from being a convenience to being a crutch? Right now, as I am still learning, they definitely feel like crutches. Is that OK? Will that feeling go away as I keep learning? Or is the web development ecosystem so complex will I need to stop being a programmer for productivity’s sake and become a stacker of black boxes, knowing what goes in and what comes out of each black box and how to fit them together, but without an understanding of, or a need to understand, what goes on inside?

To say the web development ecosystem is diverse is a well documented understatement. It’s so diverse to even call that an understatement is an understatement in itself! I mean Holy Schnikies! Over 400,000 packages on NPM?!? The following comment from elsewhere on Medium, while meant satirically, comes close to how things feel to me right now going in as a relative n00b:

“If all you need is a component based ViewModel then off you go [with React]. But it’s not. To solve any problems that aren’t trivial you’ll have to build some ridiculous stack of React, some sort of router, the absurd state pattern that is Redux, whatever the hell Flux is supposed to be… You even need a special package to integrate React with Redux. Like there’s any other usecase. You’ll have to tie that in with some kind of Babel Webpack sandwich if you want to put on your big boy pants and do this in ES6…. Now you have to maintain a build pipeline, as well as an increasingly complex API as all the functionality you’ve stacked teetering on top of itself just hopefully all keeps working together…And just hoping that any open source library with the features you need happens to support whatever module format you ended up with.”

Here is a frontend web developer roadmap in early 2018. Remember, this is just the frontend:

https://codeburst.io/the-2018-web-developer-roadmap-826b1b806e8d

Right now I am learning React, which I know is supposedly “only” a library but it seems to be about the best place to start learning about this stuff given its popularity. But what concerns me so far on this part of my Journey on the Road to Code as I learn about all the frameworks, libraries, build tools, development pipelines, deployment services, etc., is the increased level of abstraction, the amount of stuff going on under the hood I don’t understand (yet), and the learning and maintenance of the surrounding development environment. By that I mean node and node_modules, grunt/gulp, npm/bower/yarn, webpack/Browserfily, Hugo or the Jekyll/JAM stack? Even just getting the text editor down seems like a rabbit hole: vim, Atom, VSCode, Webstorm, Sublime, Notepad++? Which syntax highlighting? Eslint settings? Parser, transpiler, .babelrc? Sass or {less}?

So, so, many…

The thought I keep having is “Gee, I’d rather be coding and solving real problems.” Then I think, out of ignorance and lack of experience I’m sure, “Do we really need all this stuff?” Are these tools necessary to make a modern website? Do they really make things simpler or better, or maybe just fa$ter? What is the ‘right’ stuff for me? These tools all exist. Lots of people use them. They must have a raison d’etre that I assume will become more clear to me as I transition from apprentice to journeyman and will eventually want to move projects through my personal productivity pipeline as quickly as I can. Right at this point in my personal development I am concerned about the amount of time I am spending learning/wrestling with framework X or tool Y and tuning my underlying development environment to support X or Y, instead of actually solving problems by coding. I feel like I am just becoming dependent on all of these tools to do the coding for me. Does everyone else but me understand what webpack or Redux or Babel or Sass does under the hood, I mean what it’s really doing and how it does it, or is arranging black boxes ‘stacked teetering’ the order of the day?

I am inclined to think that my anxiety and frustration over frameworks and development environments will resolve with time as I gain experience. In discussing this with my mentor she advised me to just ignore all the tools and all the (seeming to me) chaos, just concentrate on the code and my checkpoints, and when I need a particular tool for something I will know and can worry about picking and learning the correct tool depending on the particular exigencies encountered at that time. Sounds like good, practical, efficient advice I am going to take because to do otherwise I think would drive me crazy. Ummm, crazier, I mean ;)

--

--