December 11, 2002

Master of your domain.

Joel on Software has a great article stating how it is nearly impossible to become a "master" programmer in all fields, or even more than one field.

Leaky abstractions mean that we live with a hockey stick learning curve: you can learn 90% of what you use day by day with a week of learning. But the other 10% might take you a couple of years catching up. That's where the really experienced programmers will shine over the people who say "whatever you want me to do, I can just pick up the book and learn how to do it."

I've found this to be quite true through my own trials and tribulations. In my time off, I tried to create a WinAmp plugin. The idea would use a simple database to track what you've listened to. There would then be a GUI where you could generate reports of your listening habbits and playlists based on your listening habbits. So, the way I figured it, there really were three pieces to the puzzle.

  1. WinAmp 2.x plugins use Windows messages and shared memory to communicate and control WinAmp. I've never used either of these.
  2. The data could be stored in a JET database, something Microsoft seems to provide for "free."
  3. I would need create a GUI application. Most of the examples used Win32 classes, but it looked possible in MFC as well.

Basically 1, 2, and 3 added up to three new technologies for me to learn in order to pump out this simple little idea for a program. Three technologies turned out to be too many -- the time commitment to learn all three at once for a "side project" was too much. I was able to learn bits and pieces of each fairly quickly, but when it came time to debugging cryptic compile errors in Visual Studio and understanding the poorly documented WinAmp API, I needed the last 10% that Joel talks about.

I'm a web developer. I feel fairly comfortable pumping out web applications using Java. I've "mastered" at least a portion of that last 10%. But it appears that in today's stifled IT economy, limitting yourself to one world can make finding employment increasingly difficult, especially if you are unwilling to move. I've spent some time lately branching out of my world, slowly. I've started learning ASP.NET with C#. It's still web applications -- I can still count on my extensive experience with HTTP, SQL, HTML, JavaScript, CSS, the DOM, Internet Explorer and Navigator, but now I see how another domain does it.

It's good to look at another competing domain every now and again. I've already seen things I like in ASP.NET, things that could be (and are being added) into J2EE or supporting open source tools. Overall, I think it helps me better understand that last 10% of each platform that Joel talks about.

Posted by Eli at 05:25 PM | Comments (1) | TrackBack

December 10, 2002

Preparing for Generics in Java 1.5

Get a leg up on Java 1.5 -- Preparing for Generics gives the quick and dirty lowdown. [From Hack The Planet]

Posted by Eli at 08:39 PM | Comments (2) | TrackBack