“Hard at it,” is how you’d describe me these days. I’ve really learned a lot about programming C# in the last three weeks. There’s some stuff I like, even. I’m still, rather instinctively, feeling hesitant to praise Microsoft for anything…but it’s melting.
Consider this latest Tools episode from The Commandline podcast. Thomas Gideon describes a journey, somewhat similar to my own, about early programming in a Microsoft environment, discovering the power of Linux, and trying not to look back. I was rather overwhelmed the first time I tried programming console graphics using the Borland C compiler back in 1992. By 1996 I had taught myself C and Perl and even written an assembly compiler for a MIPS processor in Perl in a SunOS 4.x environment. I went on to programming CGIs in Perl but took a right turn at Cold Fusion more than once at two different jobs, dodging PHP both times. I ended up deep into Java, learning OO and Patterns and Refactoring (Fowler, Beck, Cunningham, et. al.) not out of righteousness….but out of desperation in deadline environments…seeking wisdom and arguments to battle absurd deadlines with. My biggest conclusion was the resulting confusion between reading all of Steven McConnell’s, Kent Beck, and Martin Fowler’s books in 18 months.
Almost all my book reading seems to have ended. I no longer (and not for a few year now, after 18 hour days and 2am pages and midnight server bloodbaths) care to know more than I do from a book. My reflection of being a smug, knows-better-than programmer may as well be a flattened aluminum can. Nothing stops the deadlines. Almost no human programmer/sysadmin can know enough to forestall the melting server farm. So when it came time to convert to C#, it was with resignation. I recognized pretty quickly that I needed to accept that. Anyhow, I’d never become the Free Software rock star I hoped to be…one day. Rather–I discovered that I was pretty darned human: with house, pets, and kids…and limits.
In two weeks of C# programming, I feel actually more productive than my first six months of Java programming. Experience, of course, plays a large role. Knowing how to Google-to-solve is actually so much more fluent to me than looking up anything in a book that I never considered buying a C# book. Poor trees. Poor publishing industry (watch me cry).
It was really interesting reflecting on Cmdline’s thoughts on using an IDE in his latest podcast. He describes how he’s somehow still not as productive with an IDE as with vim. (Boy, Kevin will like to hear that!) I’ve heard the same of Emacs programmers. (Did you know you can setup a VIM SERVER?) I, myself, would be “absocrippled” were I to lack bash (thus: cygwin). But presently, between Visual Studio 2008 and the Advanced Logging package for IIS, my estimation for the Microsoft Web platform has actually…grown.
I find the C# API is actually easier to use than the JDK API (from whence I last used it). Convenience methods and a bit of simplification of file operations seems to have made learning how to work with streams only a few hours of learning…not a day. The expressiveness of “properties” in C# is remarkable. That VS2008 has at least a few built in refactoring capabilities makes simple refactorings quite effortless. In to weeks of programming I’ve already probably thrown out 1/2 of the code I’ve written because I’ve refactored–leveraging properties.
None of these thing were as easy using vim and PHP. The IDEs I was using for Java were terribly heavy, a decade ago. The thing I miss most from jEdit so far is the Jdiff plugin. However, combining WinMerge, TortoiseSVN and the Comparison Tools add-in for Visual Studio off Codeplex gets me pretty close to the Jdiff plugin. And…I admit…an integrated debugger in an IDE is actually a pleasure to use. I was never comfortable getting the Zend IDE or Eclipse and Xdebug to fit together.
Thus…I admit…from a practical standpoint, I have been amazingly productive in the face of recent…platform adversity…you might say. Granted, I’ve never been a big IDE developer because…nothing is more distracting than a programming environment that slows down your “syntatical expression.” That I’m on the fastest workstation that anyone has ever bought me certainly helps the IDE do it’s job. But really, my situation could be so much more difficult.
I feel like I’ve accepted a lot of change and have remained competent in the face of it. I have to be grateful for that. And I remind myself…that even though it’s not F/LOSS software I’m developing with, really the real challenge in my life has not been the software, it’s been with programming and programming environments and business in general. The various businesses I’ve worked for have always presented (necessary) challenges for someone who’s naturally inclined to stay home and read sci-fi novels. F/LOSS was not extra-better at reducing my workload.
F/LOSS has always been better at providing turn-around in the face of unfunded development efforts. That’s the biggest change in the last decade: again working at a place where they spend money on you. In San Francisco, they spent money on us (while the VC lasted). But after the bubble popped, it was back to field-stripping your trusty AK47-vim editor on my aged 350mhz machine, waiting for the next small client to arrive. Who had cash for an IDE? “…from my cold dead hands” eh? Stripped down development habits are hard habits to break. Instructive, certainly. Character-building: undoubtedly!
So really the change has been getting me to grip the controls of an M1 Abrams. Microsoft really wants to keep their developers. Just listening to a few episodes of .Net Rocks, hearing about their Road Show really put into stark contrast the affluence Microsoft was offering compared to the frugality I was used to. I’d LOVE to attend a vim or jEdit launch party. Heh!
I’ve described a large difference in my professional life. I don’t want to make myself all worked up by re-treading some older moral points. My sense of panic is evaporating. Now it’s time to remember to pace myself.