A little bit of “loose software engineering”/monkeys on a typewriter/scatter gun coding.

This blog sequence is about the slings and arrows of outrageous fortune of developing a Windows 8 data oriented application from scratch. That is, development that encompasses a steep learning curve of Win 8 App development as well. The starting point is from lots of previous UI application development using .NET Windows Forms in the desktop and mobile/embedded (Compact Framework) as well as Windows Phone 7 app development. Also years of programming in various languages C#, VB, C++ etc is assumed. It is also intended that a Windows Phone 8 app will also be an outcome of these blog sequence.

The key attitude is is “I know what I want to do from a general programming perspective: How then do I do it this programming context?” I often call this (although it sounds rather crass from engineering/analyst perspective) “Monkeys on a typewriter programming”. This comes from the saying that given a large number of monkeys typing on typewriters and an large amount of time, they would eventually (randomly) type the Oxford Dictionary. These days of Bing (or Goggle) search is a bit like those monkeys when searching for an answer to a “How do I do this ..” question. Some times you easily hit the nail on the head with the search query; other times you have to keep changing the query until you do so.

Coding today, we learn more by example and trial than by the didactic approach of an API syntactic manual. If you locate a class in the MSDN Library, that documentation is normally of limited use if there aren’t any attached examples. Also, gone are the days when the API library was in hardcopy. The professional texts by practicing developers with well constructed examples plus pointers about nuances are far more useful. The other maxim is to suck it and see (trial).  This is facilitated in the coding phase by development tools such as Visual Studio and Blend using Intellisense ( hey that’s only one letter different from Intelligence ) by helping you determine what you can do with an object and how to do it. This combined with those squiggly lines ( on-the-fly-compilation) are a big performance boost helping to funnel “scatter-gun-programming”. This also means that you can quickly rerun an app to see if works correctly; tweak the code slightly and try again.. All monkeys-on-a-typewriter stuff. Refactoring is also a key tool for this type of “loose software engineering”. It enables you to focus upon getting the code to work properly then you go back a massage it so that it is properly engineered.

The application to be developed will explore the MVVM (Model View View Model) design pattern and use a SQLIte database. MVVM enables clear separation between platform specific UI code, the business logic, the underlying data and data binding.  SQLIte is now available widely in the Windows context and will facilitate porting the phone app to Android. Also where there are good on-line references for this journey. They will be referenced and assumed to be read before continuing on this “journey”. The blog may paraphrase or restate some aspects of these sidebars where necessary.