In September of this year, I will be attending Visual Studio Live for the first time in about 6 years. It’s been 5 years since my last conference, so I’m both exhilarated and a bit daunted. Exhilarated because, well, conference in New York? Score! Daunted because I haven’t been very active in the Microsoft coding community in a long time. I read blogs and sometimes offer suggestions to people struggling with problems that I myself have had, but for the most part, I’ve been basically the worker bee who goes home and then doesn’t really look at code again until the next morning.
I’ve resolved that I will be more code-active outside of the office this Fall, and be more interactive with my developer colleagues outside of work. I think I’ve tended to shy away from this in the past because when I read coding blogs, they tend to make me feel behind the curve. I think this is ever the struggle of the developer because once one learns the latest developments of the environment in which one is working, the next iteration is being deployed it seems. Nonetheless, my philosophy is that one can only start from where one is. There is, indeed, a lot I still have to learn. There always will be. There is also a lot that I do know that I can share with others. I may not publish cutting edge code examples here, but I know I can publish things that work to specifications, even if those examples are quite simple at first.
In other news, I recently read Steve Jobs biography. I may go into more detail about my impressions of it in later posts, but the one thing that stuck with me was his obsession with the integration of design and engineering as well as the integration of software and hardware.
In the case of the design and engineering, I relate to this concept because I know that when I write well written, well structured code, I actually find it aesthetically pleasing. This may just relate to me alone, but when a program block is well formatted, well documented, and well designed, it is a thing of beauty to me. Much in the way that Steve obsessed over things that no one would ever see (such as the material of the inside of a computer case or the arrangement of chips on a motherboard), I tend to go over my code and look for ways to make it both efficient and pleasantly readable. The more appealing it looks in my IDE, the easier I find it is to maintain. In contrast, when I’m asked to look at code that someone else wrote that isn’t working, I often find myself having an almost visceral reaction if what I’m looking at is spaghetti code (and it often is).
As for Apples standard of closely integrated hardware and software, the benefits are obvious. Their machines are fast as hell and work really well. The drawbacks are equally obvious: You can’t upgrade them at all. I go back and forth on this. On the one hand, I love working on my MacBook Pro because it’s fast as hell and doesn’t break down. My Lenovo, by contrast, is clunky, not because it’s a bad machine, but because it’s about 4 years old, and has software less closely integrated with its software. That said, my Lenovo has a distinct advantage: it can be upgraded. I can put in more RAM, a new hard drive, etc. True, there are limits to how much I can upgrade any laptop, but at least I can do this. Moreover, in the case of PCs, I can build a Linux or Windows box from scratch. I can’t really do this with a Mac. Even though there is theoretically a way to build a “Hackintosh”, apart from worrying that the vengeful ghost of Steve Jobs will come and haunt me for blasphemy, I am just dubious that such a machine would be as good as the real thing. Plus, if you can build a Linux box, why would you need to try to hack together a Mac compatible PC?
My solution is, of course, to own one of each: I use my MacBook pretty regularly at home since I use a PC at work, but I also am well aware that I need to do some maintenance on my Lenovo, particularly since I’ll want it when I go to New York.
So, that’s two posts in one year. I guess I’m on a roll.