My annual review is coming up. This is the time when you’re encouraged to reflect on what you’ve done over the past year, and what you want to be when you grow up.
While thinking through mine yesterday, and thinking about the ones from the past twelve years, I came to a realization: I’m in this for two reasons:
- I love the technology
- I love seeing others get excited about technology
Sure, I like solving customer problems, but more often than not, I get much much more out of it if it is using a technology I’m excited about. I like “owning” projects, but much more so when it is with a technology I love and I see the ability to get our guys or our client excited about that technology.
So I’m thinking that my self evaluation this year should say two things:
I’m in it for the technology. I’m in it for the community.
That’s certainly easier and more accurate than anything else I could put in there :)
What technologies keep me up late at night, at the keyboard?
I’m a client guy. I love UI, I love code on the client. When I used to write DOS programs, I got right into both scratch-built ASCII-based “GUIs” and EGA/VGA graphics for real scratch GUIs. I was using Borland C (and later C++) at the time to do it, and it was a ton of fun. It was a ton of work because you had to do most everything from scratch at first, but it was exciting.
I have friends and colleagues who are into workflow products and BizTalk and other technologies. I have enough of an interest in those to want to learn what makes them tick at some medium level, but not enough to try and dig into the innards. That’s what makes those folks stay up late at night, playing on their computers.
With the XNA 3.0 CTP, you can now create games for your Zune using .NET - that is just plain cool. You’re constrained to a relatively small screen, and very few input controls. Those constraints really help to spark creativity and focus that you might lack when the sky's the limit.
I like WCF, but not enough to want to get into all the ins and outs of what you can do with this incredibly powerful part of the framework. Instead, I tend to stick to relatively simple services that just work. Communication is key, don’t let me downplay it at all. I’m a UI guy at heart, though, so I just tend not to get into the guts. I know some incredibly smart folks who can architect and build some impressive systems using WCF. That’s what keeps them at the keyboard after the kids have gone to sleep.
I see tons of uses for WF, and think it is an interesting and very useful technology, but it just doesn’t keep me up late into the evening messing around with code. That said, I can think of several places where I might like to use that in v.next of my own site, not to mention all the places our clients can use it.
So what do I spend my time on, and what would I spend time on if I had a good 48 hours per day? :)
- Silverlight. I’m sure you gathered that. I write and speak about it all the time. ‘nuff said there. About the only area I don’t get deeply into in Silverlight are those around media streaming. I get to do Silverlight work both professionally and on my own time, so it is both work and hobby.
- WPF. WPF is what got me into Silverlight to begin with. WPF is extremely powerful and gives you. Much is often made of the difficulty of deploying client applications, but I think that is overstated. Much is also made of the size of the framework you need to download. To help with that issue, Scott Hanselman has come up with www.SmallestDotNET.com where you can see just how little you would need to install to get up to speed with the latest version of .NET. I don’t do nearly as much WPF as I would like to do, but I think that will change.
- XNA. With XNA 3.0 CTP, you can now create games for your Zune using .NET - that is just plain cool. You’re constrained to a relatively small screen, and very few input controls. Those constraints really help to spark creativity and focus that you might lack when the sky's the limit. I don’t have an xbox 360 and haven’t had much time to play games in a long time, so I had ignored XNA after the initial version. Note that the age of my consoles seems to line up quite nicely to the age of my child. Haven’t had much game time since my son came along :) I do have the old xbox, ps2, gamecube etc. I always wanted to be a game programmer, but forces pulled and pushed in other directions.
- Surface. I can’t wait until this technology gets to a regular consumer price point. (no, 10k isn’t going to pass the Wife Acceptance Test) Thinking just of the games (traditional computer games as well as board games) you could play with your friends and family gets me pretty jazzed. I think someone should port a modern version of Gauntlet to it, as that was one of the first table computer games I played. “Wizard needs food!” I don’t get to spend any real time with Surface beyond a number of demos, but learning WPF helps here.
Notice something interesting about all these technologies? I use my existing .NET and C# skills across each and every one of them. Wow. I can focus on learning what is necessary and interesting about that specific technology rather than having to learn a new language or new base API or a new IDE or a new ecosystem. As professional .NET developers, we often take that for granted these days, but there was a time not too long ago when that simply wasn’t possible.
Even better, if I were to stick to, say, just Silverlight and WPF, I could target 3 of the 4 interest areas (Silverlight, WPF, Surface) with a single skillset (Xaml + .NET). Nice.
.NET programmability has become so much a part of my life that is is a really high criteria on what tech I bring into my house and my life. My phone is Windows Mobile because I can code for it in .NET. My servers are Windows and have .NET 3.5 so I can run my own code on them. I have a Zune (two actually), which I can now code for using XNA. The system I was going to use to control my model trains (before the home renovation and birth of my son temporarily suspended my model railroad plans) ran on Windows Mobile and was programmable from .NET. My kitchen PC project is WPF and .NET. I’m working on a media center project which is all .NET. My 3D modeling and rendering software (Rhino 3d) is all programmable from .NET (I wrote a few interesting add-ins for that some time ago). I can just fit so much more into my life because I can concentrate on the interesting stuff, not the basics.
When technologies get you going and why? Do you take a slice across everything and don’t go deep in any one thing, or do you specialize and just skim off the top of the other technologies? Are you in it for the technology or for something else?
Me, I’m in it for the technology and in it to meet folks like you who are excited about it.