Go Back

C4C Recap and Lessons Learned

As I was hacking around at Coders for Charities on my attempt at reproducing the Row Data Gateway Pattern from "Patterns of Enterprise Application Architecture" by Martin Fowler. By hacking around... I mean that I tried to be a good saint and start with using TDD, but after becoming completely bored with unit testing each added parameter to the SqlParameterCollection within a SqlCommand object I became completely disenchanted with the idea of doing that for the next 24 hours and not being any closer to a "Working Product".

 

So... I wrote one unit test, testing the 'pattern' of what I was doing...then once end-to-end worked... I gave up the TDD.

By all accounts this was the most cut and pasted code I've probably ever written...

stuff like this:

command.Parameters.AddWithValue("@parm1",Value1);

...Over and over for insert, update and deletes...

Which... this was all because i felt that Entity Framework or NHibernate in a 'Time Crunch' situation would just be too much overhead...

Sure... I was probably wrong :(

And so anyhow, here I hacked away on my little slice of the pie... with no source control. Paul Meinhardt was jammin' out the SQL Database Table and SSIS import from Access, Cody Inman was rockin out the Sitefinity Skinning and several other sweet integrations (Paypal, Google Maps, Image Library), and Ross Fuhrman was writing an Excel export so the Business users could still do business the way they have for several years successfully.

 

quick tangent: don't change how business is run and do not change how the data is stored (1 table, many columns) when you only have 2 days to do stuff.

All of us split up doing our 'own thing', but integrating fairly decently, and finally coming down with a damned fine product in the end (I think) for what amounted to less than 25 team hours worth of work.

Everything came out pretty damn nicely I think...

The fruit of our labor: www.beltoncemetery.com

So what were the key factors in our success?

  1. Onsite customer. Our customer stayed there most of both days with us and fielded questions. We probably under utilized them to be honest...
  2. Continuous Integration. We had the fully working site (but minimal) site deployed to discountasp.net by 10am in the morning on Saturday and we updated it religously and testing things (mostly manually) throughout both days. Always making sure it was working and we hadn't broken eachother. Then when we did... we talked and fixed it!
  3. Team communication/Collocation. We were tightly grouped together and looking at eachothers screens for the most part. It was amazingly wild.
  4. Energy Level and Fun. We tried to keep joking around and having fun. It's intense (especially when it's 80 degrees in our room because the AC was broken) when you're locked in together and working very hard... and breaking eachother's code and telling eachother how to do things :) :) (OMG u changed the data types! or 'Ugh all in 1 table?")

So what would I do differently though?

  1. I need to learn an ORM so i can be successful at TDD in this type of situation.
  2. I need to get an IoC container setup next time so I can focus on just the interactions between presenters and the views. (Wasn't really a BLL in this app nor will there usually be in these types of apps)
  3. We need to get some sort of source control next time... people need to learn svn or git or somethin :)
  4. NOT use ftp remote site in VS2010
  5. bring a laptop for Ross
  6. Bring Vm we can all use with the same toolset
  7. vote an initial dev toolset before the night of! (pending the organization wanting something different ofc)

 

 

 

 

 

 

Facebook DZone It! Digg It! StumbleUpon Technorati Del.icio.us NewsVine Reddit Blinklist Furl it!

Post a comment!
  1. Formatting options