My grandfather was a mechanic who worked on ship engines in the Navy, cars, and later airplane engines. In his time, a steering wheel was turning a rack and pinion by the force of the driver and the engine timing was controlled mechanically. Fast forward today and look how much computers control every aspect of a car. The engine timing is controlled electronically, the inertia created by the brakes send power to a hybrid’s battery, and drivers are assisted by lane guidance and GPS. A old Jaguar from the 1960s he worked on is a far cry to today’s modern Tesla.

Any new functionality brings complexity. With that complexity, we become further removed from the original bones of that technology. A car from the 1960s and today share many common bones: four wheels, a seat for the driver, a steering wheel, and pedals. However, it is clear that there is an evolution between then and now. Add computerization and the driver is further removed from the actual mechanical movements making the car operate.

The web development world has seen this shift as well. The bones of a web page have always been based around HTML, CSS, and Javascript. Developers from the early Wild West era of the 1990s were writing every line of code by hand, one page at a time. Later come tools to manage pages and separate the content from the templates. Web standards and CSS allow greater expression of how the content is displayed. Javascript and AJAX give greater functionality on the front-end. Everyone of these layers takes developers further away from the bones of a web page.

This takes us to today with modern frameworks like React and JSX to do the work of writing HTML and CSS for us. Node JS-based tools like Gulp, Babel, and Webpack do the heavy lifting of managing dependencies and transpiling code into other code.

There are so many more things we can do in a web browser today, more so than Tim Berners-Lee could have imagined, but it is important for any craftsman/person to deeply understand their craft. Remember what the bones the web are when you are working in a dozen layers of abstraction away from the HTML.

Tag: development