Saturday, November 21, 2009

The joy of development renewed

During the time I was convalencing, after my athroscopic surgery, in my hometown Fresno, my father introduced me to a non-profit organization he has been working with for the better part of two years now.

The group is a non-denominational 501C3 that provides housing, medical care, financial support, foster care, and education for homeless children. The organization has been in business for 24 years, and the turbines are begining to flip on. Partially due to my father's grand writing skills, this organization has obtained several million dollars in new funding over the past year and half. They have expanded their services to 5 group homes, a medical clinic, and educational facility.

With all this growth comes all of the problems of growth. The right hand doesn't know what the left hand is doing. Control and communication are poor. There is a constant background terror that the costs are escalating and out of control, just because there is no easy way to run a balance sheet report. Doing a balance sheet manually, from paper and Quickbooks, is very difficult and labor intensive. You can do about one a month with 5 accountants working on it.

The founder and president of this mission is a very forward thinking lady. She has been pondering how much scalability would be possible if she had a fancy web-based database application that could coordinate all of the organization's activities, and give her an immediate balance sheet of assets and liabilities.

Imagine a system in which all of the intake paperwork you have to do when you recieve a new child happens on the web. It immediately goes into the central 501C3 database. All the medical services you provide that child go in the same database. Meal costs go into the same database. Housing assignments and resource costs go into that same database. School materials are recorded in that same database. If you have such a database, and your workers are dilligent about keeping up, you can draw a real-time, fully automated balance sheet for your entire 501C3.

Enter Dave. That is what I am working on right now. I was given the contract to do this project for her. I have been working on this off and on for several weeks now. With electro stim and an icepack on my knee, I sat here for many long hours today trying to button up a beta copy to show the boss during Thanks Giving week, when I will return home. The prospects look good. The database is finished and splendid. The Web app is a state-of-the-art Microsoft C# 4.0, .NET 4.0, MVC 2.0 app using the Entity Framework for data access. I even tossed in some JQuery 1.3.2, and boy was that an eye-opener! It isn't finished, but it is very nice. I have written a lot of test code, and my business classes are passing under much punishing stress. I am confident the pluming is very good.

Folks, I cannot tell you the joy I have experianced here at my workstation, calling all the shots, creating the entire system from Green Fields, with no legacy bullshit, no jack-ass managers, and no weak-ass co-workers to constrain me. I am using my ultra-badass Core i7 and my 30 inch Dell 3008WFP to do the work. This is not an out-dated weak-ass machine like my unit at work. I am working with SQL Server 2008, not the outdated 2005. As implied by the statements above, I am using Visual Studio 2010 Beta 2, not VS2008. All the reports are in Microsoft SQL Reporting Services 2008. The tablix absolutely rocks. There is no reporting technology on the planet that can compete with this; except maybe Excel 2007 if you know how to use it well. The tablix was born to pivot financial data, and it makes an A&L balance sheet pretty damn trivial. I could do it with the SQL Pivot, but this is better and more dynamic.

In short, this is the way it aught to be done if you are a Microsoft developer. No compromise. My one and only regret is that I am not using the Unity IoC in this project, but that is only because it is unclear how or whether Unity should fit into the scheme.

Best of all is the pay. I am not quite at twice the base-hourly pay I get from informa, but it is pretty damn close. I cut this 501C3 a big break because they do have a few cash-flow issues due to poor control. I am here to provide that control.

Now for the problem: This is spoiling me for nearly every other approach. I am remembering the glory days of 1998-2001 when I was a lone-gunman consultant who went into a fresh development situation, kicked ass for 6 months at a high rate of pay, and walked out with my pockets full of cash. I have weaped endless bitter tears over the end of those days that came with the Internet Buble bust and the 9/11 recession. I almost feel as if happy days are here again.

There is a serious problem with being a permanent-party employee developer. Often, you have no job to do at all. You are still chastized for not showing up at 9:00 anyhow. To say that I am unchalleged and under-utlized would be an understatement for the ages. Further, if you are not the lead dog...

There is an old funny saying that was quoted recently in The Taking of Pelham 123. Imagine you are a dog in an Alaskan Dog Sled race. If you are not the lead dog, the view never changes. Why? Because you are always staring directly into the asshole of the dog in front of you.

This is life as a permanent-party programmer developer. You are always given trivial, penny-ante assignments. You work on some piece of shit software that was originally developed by an incompetent 24 or 25 year old some 8 years ago. It is now a mazework of undocumented patches. The problems you are given to solve should never have existed in the first place. If the original developer had known anything about patterns and practices, entire categories of these problems would never have existed in the first place. This is legacy code, and by that, I mean code which is not under a suite of automatic tests. Ergo, you are terrified to change it. You know this piece of crap will break with even slight changes.

Folks, I have been gazing into the assholes of the dogs in front of me for far too long. I think one of my New Years Resolutions is going to be to drum up as much external moonlight as I possibly can in 2010. Let us hope that this will lead to a full independent consultant status once again. I can hardly bear the thought of continuing an unchallanged life of fixing someone else's giant errors.