Again and again, I find web development one of the most fascinating of all the disciplines I’ve come across in my career. Fascinating in the way Extreme Ironing is fascinating: you spend as much of the time wondering why as you do how.
The main issue as I see it for a developer with existing skills in programming looking to become a web developer, is how to get started. Take jstherightway.org as an example of one of many introductory guides to modern web development: as comprehensive and helpful as it is, where do you begin? How do you make decisions regarding how to create applications without devoting months of your life to research?
Lots of information, no consensus
When you break the problems down, none are that complex. But the high dimensionality of the issues inherent in web development lead to many different solutions. And strong opinions from proponents and detractors of this given tool chain, or that library or framework.
An opinionated, end-to-end web application
At the risk of trying to solve the problem of too much information with more information, I have forked an existing TODO list implementation to create an example client-server web application. It is opinionated, in that I have taken technology decisions to produce a working application. It is also pragmatic in that it is a full end to end solution, and allows developers similar to myself grounded in server side coding to enter lightly with a realistic template implementation.
Example TODO Web Application on GitHub.
- React – a popular, modern View library by Facebook for creating nested HTML components.
Suggestions for taking it further:
- Use a Flux implementation other than Facebook’s default. The advantage of Facebook creating a design pattern rather than a fully fledged framework is that there’s no lock in. Dan Abramov has created a great library called Redux that supports the Flux pattern. His series of short videos does a great job of introducing the topic – play along with JSFiddle.
- Choose a different server side language. As much as I love Python and Flask, it’s not the most performant language choice available. Having the explicit client-server divide in place makes it easier for the developer to select an entirely different back end platform.