Saturday, November 24, 2007

What I'm Up To

Almost all the important things I've learned about coding have come as a result of difficulties. Don't get me wrong, I'm addicted to reference material -- technical books, blogs, and even user manuals. I read them with abandon. I can find something interesting in just about any technical topic, no matter how obscure. But training cannot substitute for the experience of sitting in front of a computer, trying to accomplish some piece of functionality. The questions start immediately. What am I trying to do? How can I accomplish it? What is the best way to accomplish it? How will this task fit into a larger picture? The questions have real consequences. If you don't find an answer, your code does not work. Reference materials help, but the fundamental process of trial and error is where learning really starts to happen.

Another enduring problem is that reference material for technology is fairly good at telling you what it can do. Finding out what it can't do is another story. It makes sense, I suppose. If every software vendor had to document every feature it does NOT have -- "support for 64-bit", "vector graphics", "toilet cleaning" -- manuals would be very long indeed. But it seems like there always comes a time where I say, "I'd like to implement feature A, surely there's a method to do that." -- but I can't find it. Then it becomes a long process of guesswork, until the envisioned solution is hit upon, an alternate method is found, or I go take a rest in the insane asylum for a while.

Most technical blogs -- and let me re-emphasize that they are invaluable to me -- take the tactic of tutorials, feature demonstrations, or product information. I've been considering writing a similar blog myself for years. But after some revelatory struggles with coding, I thought it might be more interesting to write about the challenges I face. I plan to document some of the struggle; not just the pretty end result, but the mistakes, bumps, and bruises that lead to the goal.

I have to believe that anyone who's serious about software development faces similar challenges. It's an industry where you have to keep challenging yourself to move outside your comfort zone, or you never progress. If you find a comfort zone, it generally changes.

I've been in the industry for a decent amount of time. The amount of change is staggering year-over-year. The number and variety of development tools almost defies comprehension. It's rare that I get involved with a work project that doesn't have some novel (to me) technology or technological approach. Then there are the projects that I work on for my own interest. For those, I generally choose new technologies I want to learn. So the learning curve provides innumerable opportunities to share my difficulties.


I kind of doubt that this blog will develop a consistent theme, technology-wise. Since my interests in technology and software development know almost no bounds, I'm generally all over the map. If I hear about something that sounds interesting, I will go after it. Chances are good that most posts will deal with the Microsoft stack, since my career is totally focused there, and my personal projects trend in that direction. But don't bet the farm on it.

So welcome to my blog. If some of my challenges interest you, make you laugh -- or best of all, help you, then I've done what I've set out to do.

No comments: