Well I have finally found the time to begin a blog. Actually, I am not sure it was so much about finding the time as finding the topics. For the last five years now I have been working on a big legacy project. It wasn’t the sort of place where you do not do a lot of interesting work. It was more the kind of job you read about in the anti-patterns section of software development books. Nonetheless there was enough stuff going on to provide ample learning opportunities. It was a very good place to think and study and hopefully grow wise enough to know when I have something worth saying and when I don’t. We shall see.
In any event, I have been writing software, in one form or another since I was eight years old. My first program computed Ohms Law on the TRS-80. (I was never one to settle for Hello World.) My first “commercial” application was a subscription management and billing application for my paper route. It was written in Commodore Basic on the venerable C64 and served me well for several years.
Professionally, I have been doing software development since 1993, starting out in FoxPro 2.0, then Visual Basic, and starting in 2004, C#. I have done everything from DOS based UI design to windows API programing, COM services to Web Applications, Perl CGI to .Net MVC.
Things I have not done are OS and driver development, no Cobol nor main frame programming. I have never done any deep math stuff like simulations or modeling. Part of this is because my degree is in Philosophy not Computer Science. But Philosophy is great for critical thinking and communication skills so its not been too much of a handicap.
Living in D.C. suburbia, I have generally worked on very large long-running federal projects where I often gravitate towards tackling the messy problems others don’t want to and towards trying to bring discipline to cowboy programming practices. Early on, I would often be used as a firefighter, sent in to fix the crisis of the day.
What I have gotten good at over the years is object oriented development, writing flexible, reasonably clean, self-documenting code and the like. I am keen on agile for both technical and non-technical reasons but don’t have a lot of formal experience in it. I discovered agile several years back, and in the process realized that a lot of the tactics and tricks that I was using to make software development work in my waterfall world, and thought of as my shortcuts for not being able to do things the right way, were actually espoused practices in Agile. It was sort of an awakening to the idea that I really did know what I was doing after all. In a sense, I have been doing gorilla agile for a long time without know it.
Very recently, I have been given the opportunity to lead a new team doing agile development on a non-government greenfield .Net application. So this is my big chance and as such and I am very excited to see how it goes and pass on anything that I learn. It is also my first chance to use .Net 3.5, various open source tools and the like so expect to see some blogging about those topics too.