Since October 15th 2005 I've been in a state of deliberate unemployment. After working for four years as an IT Manager at an animation company in the West End of London I decided I didn't find helping people to use software and computers that fulfilling, but rather preferred writing the software that they use.
I had been writing various tools and applications to help people with their animation work and make them more productive and able to collaborate better. I decided this would be my fulltime future, but realised that my skills were not as good as they could be. I didn't do computer science at University (a regret) and was never really in the company of experienced programmers. So, to correct this deficiency I have been spending most of my days on the third floor of the British Library in the Science section poring over a healthy pile of programming books and practising with my newly acquired knowledge.
The big choice to make is which language to specialise in. While the appeal of being a polyglot is strong, realistically you have to concentrate on a core language and its associated frameworks and libraries. The other languages give you an appreciation of the limitations and reasons behind constructs in your chosen language.
For me, C# seems the best choice. It's new and is moving forward with new keywords and features being added regularly. C and C++ have always troubled with me with their unreadable code and the difficulty of memory allocation and disposal. However, they are a popular prerequisite in the marketplace. I have a fondness for Python, and more recently Ruby, with their dynamic typing and speed of getting things done through their numerous freely available libraries. I enjoy seeing the links between these languages and Smalltalk and find it amazing that this language has been around for so long. However, reliance on convention rather than standards and the lack of documentation for objects (well, in fact the code is the documentation with SmallTalk) make it a difficult language to learn in isolation.
Then of course, there is Java. Most of the books I have been studying have used this language for examples. It is easy to translate between Java and C#, even with the differences that Java has, such as anonymous inner classes, different container types and lack of foreach keyword. So in some ways, by learning C# I am learning Java. Its the familiarity with the J2EE frameworks that I will lack. There is a trend however for all the Java tools to be ported to .Net. Witness the NAnt version of Ant, the NUnit version of JUnit and the NHibernate version of Hibernate
So, back to the original point of this post! I have spent the last couple of months in the august institution that is the British Library. For me, this place represents exactly what a civilisation should spend its fiscal income on. The idea: any book published in the UK is available for reading by a member. I suppose the stress is on the word any. But it is much more than just that. It is a structure, in the centre of Kings Cross, where people can walk in and do their work or study in utmost quiet with all the reference they could possibly need. In fact, with the introduction of WI-FI, it does seem that some people are actually doing their business from within the building. Having become a regular, I have spotted quite a few other regulars floating around the cafe area on a daily basis, doing what looks like web design work! Why not, it's the perfect environment.
I suppose you could argue that it's just a glorified university library, but it doesn't have the restricted readership of students or alumni. I tried to get access to the UCL Science Library, but was quoted a cost of £8 a day, which brings me on to the best bit. The British Library is free! The only real down point is that it is not a lending library, but in a way, this is a good thing, because it forces you to work in a perfect working environment.
However, this peaceful, dream-like, academic existence must soon come to an end and I must return to the world of work. My advice to anyone else planning to take some time off work for study: do it in July/August!