Wow. Nearly 2 years since I last posted. I have been really slack. Ah well, time to get back into it I guess.
So, I was busy learning to tap dance. Long story, something my wife wanted to learn. Oh, and as an aside, learning new stuff is good for your brain. In this case, figuring out just how horrible I was at learning a new skill got me to thinking about the four different types of software we commonly write. Well, more like styles really.
So this is going to be the first of the four. Software for learning purposes.
That is, the software we write when we are trying to figure stuff out. Like at university, we had this assignment to write a program that could solve the "Towers of Hanoi" as an example of recursion.
And an hour before the assignment was due, I had this 500 line program full of messy special cases and weirdness and it mostly worked, and suddenly it clicked. Thirty minutes after that, I had a 33 line program that was perfect.
Or when I was figuring out how to read and write lists from SharePoint using the web services.
You write this messy code, and it has all these hard coded pieces in it, the URL, the name of the list, the values you want to add or delete.
And this is the software we write when we are learning stuff. It does these very narrow specific things, it doesn't cope with anything that deviates from the expected. Every time you want to change what it does, you have to change the code.
This is all good for figuring stuff out, but it is completely useless for giving to someone else.
Next up, software for ourselves. The software we write to use for ourself and no one else.