My knowledge on web development practices is several years old, and I find this presentation by Mark Erikson to be a great overview. The number of tools and doodads being in use right now can be overwhelming, and the presentation helped fill in the knowledge gaps in my mind about which one goes where, and why. Highly recommended.

The presentation also linked to this eye-opening (to me anyway) comment on Hacker News:

By the same note, you likely won’t be writing a complex desktop application without some tooling installed, with similar pre-requisites. I don’t know why people get so irritated at “JS tooling is hard”. Try writing an (INSERT FRAMEWORK HERE) app outside the browser.

People assume that writing an APPLICATION for a browser is easy, which is why people get stuck maintaining monstrosities that are disorganized, not composed and tens of thousands of lines of spaghetti. Writing an application in the browser deserves just as much respect as one would give towards setting up the database & schema or creating a service layer.

That lack of respect for front end code is a big reason as to why front end projects have crappy code. React is a real break from this on so many levels… Yes, you’ll need (webpack|jspm|browserify) with (babel|typescript), and likely (postcss|less|scss) in place closer to the start than the end. Much like if you’re writing code for a desktop application you’ll likely need at least an IDE installed, and potentially several libraries close to the start.

My current tooling of choice is webpack + babel, depending on the project I may bring in scss or less, and react tooling as needed. Using CSJ or ES6 style module syntax means cleaner code that’s easier to restructure. Using webpack means being able to bundle resources in a logical flow. Working on a project without webpack + babel is just painful by comparison… I’m working on an ng1 app at work that’s less than 6 months old, and feels like it was written in 2011… having to add .js files to some common point, and not being able to easily refactor services/controllers/directives/components into discrete modules is pretty painful in general.

What does it take to get a Java application going? Maven, some build system, some other tooling, and understanding the component/class hierarchies? It’s not any easier than working with any new tooling.

Leave a comment