Blogging and other observations

So having posted about communication last month, I then spend 4 weeks not posting….Do as I say, Don’t do as I do!!

The reason for the delay has been my own fault, I have been too interested in trying to write the “perfect” post, which is impossible. I was initially going to do a “HowTo” on installing Cruise Control.Net + MSBUILD + Simian + FxCop as I finally managed to get it all working together. I even took a load of screenshots as I went through it. I then procrastinated so long that when I tried to write the post yesterday, I couldn’t remember what it was that I had done.

I think there is an important lesson to be learned, if you are going to blog about something that is on your mind, do it there and then, even if it’s in the middle of the night, if you don’t get it down on paper either real or digital, you will invariably forget some of the key points, and the detail that will make the post interesting and valuable to yourself and other people in the future will be lost. If you can’t write a full post, make some notes, I have an ever increasing txt document that is always open in Notepad++ with ideas and notes on future posts I want to write.

Another important point is to post regularly, the only way it will become natural and second nature is to just do it, not every post has to be perfect, or about something interesting, it may only be a few lines to help remember something in the future, but still do it!!

Yet another observation, not really related to blogging, but for software development in general is at some point you just need to roll your sleeves up and write some code. Yes there are patterns and practices to follow for design etc. but with all of the new technologies arriving almost weekly, especially in the .NET world I have found it great to learn them by just using them in little projects to get a feel for it.

For example, I have needed to rewrite our personal site that we use to keep in touch with all of our family back in the UK for a while, originally it was something I hacked together in PHP, then it moved to Drupal, and now it’s currently on just like this site. With the advent of ASP.NET MVC and LINQ I decided it was time for me to get to know these new fangled ideas and put them to use in our site. So that’s what I am doing, it’s not a huge project so after only a couple of days of planning I was ready to start coding. The first proper day I spent on it, I must have worked for about 12 hours, but in the end only had about 300 lines of code to show for it. However, in those 12 hours I had learnt how to set up my own custom routes, pass data to views, even used Dictionary and List types for the first time, as well as the new dynamic types and had also developed a reasonable understanding of the basics of LinqToSql. OK I only have 2 very simple tables, but, in theory at least, what works for simple designs will scale up to more complex systems.

I have continued to work on the site in my spare time for the last couple of weeks and it is coming along nicely. I haven’t done any fancy graphics (the wife did those on a Photoshop course), but I do feel that the code is the best that I have written in a long time, which has all been enabled by actually using these new technologies. They are allowing me to add new features quickly and easily, this does also have a lot to do with API’s for the services I am using, at the moment I am deeply into the GData API from Google, as I need to access my posts on Blogger, and I am finding it good to use. There is a useful post here from Scott Hanselman about various API’s to Web 2.0 and there is always Programmable Web that lists all the API’s and mashups that have been created. From the looks of things I am going to have to come up with a reason to include Google Maps in the new site somehow!!
One note, although I do believe in using Unit Tests and mocking to make sure the code is reliable, due to my complete lack of understanding of how some of these new items were going to fit together I didn’t create tests before I coded. I felt at the time that as I didn’t know exactly what I was going to get out I couldn’t very well test it. Although I wouldn’t consider this a good approach for a work-related/paying customer project I feel it is fine for when I am learning a new way of doing stuff where when I start I don’t necessarily know where I am going to end up. Now that I have this understanding I can add tests to the first bit of code I have written, and in future write tests before I start on the other modules that I need.

So to get get back to point I made a few hundred words (maybe lines) ago, sometimes you just have to get your hands dirty and code, you can procrastinate and try to produce the “perfect” design, but there is no such thing. It’s like buying a PC, if you waited for the perfect PC you would never buy one as there is always a new one coming out. The same with software, there are always new techniques and practices that make the process simpler, but that’s what re-factoring is for. If you never write any code then you aren’t technically a software developer!!