Pages

Tuesday, September 4, 2012

It's kinda like baking a cake...




For this post, I put together a diagram of all the components (aka blood, sweat and tears) that went into the very humble Temperature converter web app in preceding posts. Ok,"blood, sweat and tears" may be a tad bit dramatic but not by much. Certainly, long long long hours went into first learning what constitues an E2E web application stack, then of the many, many, many options out there, selecting a suitable stack. Theeeeen, I had to get them, install them, learn them and use them. An experience which, so far, feels like learning to bake a cake, while learning how to make everything that goes into cake baking. And I mean "everything". The cake and all it's ingredients can be compared to the program itself. The java language abstractions and logical constructs that go into making the program are the ingredients. These are the typical, perhaps obvious, things you think of when approaching the task of cake baking or application development. However, for a complete web application (or almost any non-trivial useful application), you also need tools, appliances, and infrastructure. Even for the "simple" task of cake baking these tools, appliances and infrastructure are quite extensive when you think about it. There are uncountable variations of hand tools, electro-mechanical appliances and fairly expensive infrastructure like furniture, cool/hot storage and of course....an oven!  In cake baking, you also need foundation skills that are easy to take for granted. Skills like reading, writing, vocabulary, math, measuring). Then their are craft skills like kneading, decorating, ingredient sourcing & preparation and others. Sourcing & prep, are not as trivial as one might think. For example, where do you get creme fraiche from and how is it best to stored & prepped for different uses? Finally, and just as importantly, in addition to all these these pre-requisites, you need to have some (good) ideas of satisfactory end results. That is, what does a cake look like, taste like, smell like, how is it served, who uses it, for what (if anything else besides eating), when, how often, what should it cost etc. It begins to be clear that baking the most simple of cakes is far from trivial. 

Ok, so maybe I've succeeded in reminding you about the hidden complexities of cake-baking. Big deal, You are probably thinking "Well, cake baking is one thing. Yes, maybe it is surprisingly more complex than anyone would initially think but software development is totally something else. Of course, that's a complicated thing!." No big surprise there, genius. People, and not just "people", the biggest brained of our kind, spend their lives studying software development aka computer science aka information technology. Clearly, if this is surprising to me, I'm on the other end of the spectrum from exactly those big brained ilk. However, hear me out for a few more seconds. Yes, the best and the brighest spend lifetimes studying software development. But so do the best and the brightest cake makers. Yet, just because the highest forms of software development, like cake baking, takes lifelong dedication and training, this does not mean that regular, modern, affluent, intelligent, capable people should not be able to make delicious cakes or software programs!

Hopefully, prior chronicles provide enough context for the components, tools, appliances and infrastructure outlined in the diagram above. I'll be diving into these more in future adventures which, most immediately, will include adding database/persistence to the humble app. This will also include beefing up the functionality to include features affectly known as user CRUD or record Creation, Reading, Updating, Deletion through the user interface. Also, I'll need to actually deploy the application in to the wild world web...yes, I said "wild" world web...and I meant it.