w00t : Building a new app from the ground up : methodology, technology & tools used

This is one of the articles in our series; the parts are:

  1. Methodology, technology & tools used
  2. Setting up the environment
  3. First specs and getting started
  4. IOC, database and other stuff; a real framework 

 Happy reading !

Introduction

Since I have always been very interested in the latest technology developments, and I needed to start a new and initially very simple project, I decided to do some studying and opt for new things...
After reading quite some articles, I decided to write about my experiences in my blog, in order to learn some things about my experiences, and even help you decide on some aspects...

If you disagree in any way with my opinions, or have some interesting suggestions please comment, since I am always eager to know about the opinion of somebody else.

 

Methodology : the paradigm shift

Since my programming in TRS-80-basic as a 7-year old, a lot has changed... This is an overview of my personal evolution :

Procedural programming

Initially I got started with BASIC, since it was the most understandable development platform at the time, very easy to get started with. A few years later, I had been developing in MASM, Turbo Pascal and even C-- in the demoscene (only limited tracks available), all choices that opted my preference for execution speed, before I really entered my next level of programming consciousness...

Object oriented programming

Since I had been a hardcore developer in the demo-scene, most OO-concepts were a stranger to me (speed was king)... It has only been a few years later in my professional carreer that the advantages of OO were becoming obvious to me. Unfortunately, until then I reinvented the wheel for just about each problem I had, since I never heard about the next part..

Design patterns

After hearing about factories, services, command patterns, all kinds of interfaces etc. I decided that that was the next thing for me, so I started studying the GOF design patterns, Martin Fowler's blog and all kinds of reference material that I could find. Slowy some of the more interesting concepts were getting to me, but in the meantime there was a new buzz on the development scene...

Unit testing

What's that ? Testing your code by programming tests as well ? Although I read a lot about this subject, it never seemed to be able to convince me, since i was more of a fan of the higher level automated testing, aka

Functional/acceptance testing

I allready used this from the beginning on, I wrote programs that did some kind of black box testing, before tools like Fitnesse were available by means of simple input/output. This seemed more usefull then writing unit tests. Until now : the next buzz

Behavior driven development

Finally something that replaces the ubiqutous unit tests with a more interesting approach, write in "business language" what a program has to do, and implement that in code afterwards.. Since I am quite new to this I expect that I will have some problems on the go, so I will share them with all of u in the future..

 

Technology

Regarding the technology : my choice is quite simply based on my experience :

Development platform  : ASP.Net MVC / C#

2 very simple reasons : It needed to be web-based, and I have had lots of experience with  this platform since the early betas. (The design of ASP.NET MVC also encourages seperation of concerns.)

DB/ORM : Subsonic SimpleRepository

On the database part I am not quite sure yet, but I think a good ORM should not make me obliged to keep using the same DB after all, so I think I will use SqlLite initially, but switch later on to a better one. Strict POCO is not a necessity for me
Since I have no interest whatsoever on the db part, I think i have to choose between 2 options :

While I have been using FluentNhibernate in the past, I have a gut/good feeling about Subsonic SimpleRepository, so I will initially probably start with the second one. Since I wil be using an interface anyway I should be able to switch between two versions quite quick.

IOC container : Castle Windsor

Since I have no idea about an IOC container, I will probably use the one I have the most experience with : Castle Windsor.

BDD : MSpec

Because I am new to this mather,I will choose the one that got me interested in this : MSpec.

 

Tools

There is only a very limited list of extra tools I need :

IDE

For the programming/web design : Visual studio. For the initial SqlLite management I will use SqlLiteAdmin.

Source control

No doubt about this : GIT .
Because of :

  • Atomic commits
  • Ease to setup
  • Ease to do branching/merging/pulling other sources etc

 You can read more about this in my other blog article.

Timetracker

Even though this is not a project that I can bill by the hour, I like to keep track of the hours I invested in this. Here I simply use google calendar, as I do for all my customers. I even wrote an article about this here.

Summary

Those are the inital choicesI have made. I will now setup my development environment and I'll keep you all posted on my blog (articles with tag w00t ).