Friday, January 13, 2006

Coming of Age

This post is rated P for Personal. You might find it B for Boring.

I think it's really happening in earnest now: I'm really starting to appreciate that "the more I learn, the less I know." I can see now that I'll never have more than a smidgen of knowledge in every area of human endeavor; indeed, there will doubtlessly be important aspects of life whose very existance I will never hear about.

I chose to pursue the world of computers when I was younger, but the computer world grew faster than I did. I used to think I was a brilliant with computers (the grown-ups all said so); now I'm merely an above average programmer, and only in certain areas of computer science, with specific programming languages.

I started out writing programs in BASIC on the Commodore 64 and Apple II, and as far as I knew, that's what programming was. A compiler? What's that? The internet? Never heard of it.

Today, my list of things-I-wanna-learn grows ever longer--or it would, if I wrote the list down. As it is, I suspect I've forgotten more items than I remember.

In the programming field, I can write programs in C, C++, C#, VB6, Java, and as of December, Ruby. I've also had a little exposure to Pascal, MATLAB, Verilog, gnu make, and VB.NET. But I had planned to learn Python for a couple of years now and still haven't done it. There are other interesting languages I would like to learn: Perl, Lisp, Dylan, Eiffel, and conceivably Smalltalk or Objective C. But now, knowing languages is just the tip of the iceberg. Look at all the other stuff there is to learn about:
  • Libraries: Most languages now have enormous standard libraries, and every language has a community around it that produces an endless barage of useful libraries, each with its own bafflingly unique and quirky API.
  • Paradigms: Aspect-Oriented Programming, Functional programming, Parallel & distributed programming, Metaprogramming, Service Oriented Architectures, Test Driven development, Extreme programming, Design patterns...
  • Fields: Geographic Information Systems (GIS), Search technology, Desktop Publishing, Multimedia, Games, Scientific Computing, Embedded computing (with an endless number of sub-fields) and so forth.
  • Databases: These have been important for decades, yet I still lack basic knowledge about installing and using them.
  • Internet stuff: Unfortunately I don't have enough knowledge to make a big list of internet stuff, but I know enough to know that the list could go on forever. It's tough to get started in practical web programming because you have to learn at least five languages (although the first three aren't true programming languages, nor very hard): HTML, CSS, SQL, Javascript, and a server-side language of your choice; plus, you have to find a service provider that will let you use your chosen language, and figure out how to install your code on their server. Either that, or you have to figure out how to set up your own web server. It is mainly this last issue (installation) that has discouraged me from learning web programming.
All of this constitutes merely the field of software development; the field of "computers" in general is even larger, and I can't keep up with it, although when I fad lasts long enough I do eventually try to figure out what all the commotion is about. For example, after seeing terms like blog, RSS and del.icio.us, it was several months before I found out what they meant, and by the time I had a blog of my own, I could point people to it without even explaining what a "blog" is. But I think I've learned my lesson; I now read a social software blog and eagerly track the progress of the peoples' revolution on the internet.

Looking beyond computers, I can see many other big fields: oil & gas, food, construction, politics & civil service, management, marketing, real estate, entertainment, education, health care, and so forth.

If I assume that other industries are as vast as the computer industries, then clearly there's no hope I'll ever know much about most of them.

I suppose it's good to know how small I am in the scheme of things, but it's a scary thought. Perhaps it's best to forget about it.

No comments: