About a year ago my job responsibilities changed from very enterprisey Java application development to an enterprise Ruby on Rails web application. I started out my career doing mobile development, so web development feels very similar. Both have a very tangible result and a strong feedback loop from development. The write code -> deploy code -> see results cycle takes very little time with modern tooling, and the changes made are typically far more visible. For example, previously one of my responsibilities was to implement a particular algorithm. It was fun and everything, but I did not find the end result tremendously satisfying – being slightly less data used in one aspect of the client/server communication. On the other hand, a similar amount of time on a web app yields a new analysis feature with a UI that gives the user configuration options and renders a pretty graph that provides some value (presumably). Generally, it seems the “server-side” problems are closer to “real” problems – they’re more interesting, they’re more substantial, and there may be some actual design and figuring out to do. The “client-side” problems strike me more as tasks. The hard work is the UX while the rest of the feature is generally following the script:
- Get user input
- Join tables and run query
- Apply algorithm
- Send result to client
This means that there’s far more time spent figuring out the framework than figuring out the “problem”. I feel like that’s generally true of user facing applications though – most of the work is not particularly novel. Yet somehow we still manage to botch it up an astonishing amount…
So how do you make web application development interesting then? Why, making it yourself! This has all the signs of a project I’ll start and never really finish, but I’d like to give it a shot. The whole environment is moving so quickly that I’m sure doing anything at all will yield some insight.
As with anything, the first step is often the hardest. What makes it even harder is I have no use case to match up to – I just want the learning experience of building a web application from the bottom up, and any actual goal is only a pretense. That may seem a bit backward, but what I’m saying is I’d rather change my “project” to better compliment a technology I’m interested than change technologies to best serve my “project”.