Friday, December 17, 2004

Privately famous

(Cross posted at my java.net blog)

Most folks are familiar with Andy Warhol's prediction: "In the future everyone will be world-famous for 15 minutes". My 15 minutes have come.


I was at the express checkout (10 items or less) of the the HEB on Red River (that's a supermarket near UT here in Austin) when a young man (whose name turned out to be Ben) approached me:


Ben: Excuse me sir, I know this is going to sound strange, but are you a programmer?


John: (caught slightly off guard) Why, yes I am.


Ben: Are you a java.net blogger?


I'm not sure what exactly I said at that point... but it had something to do with my wonderful java.net mugshot and my recent blog on "Too old to program?".


I really touched a nerve with that blog, and I am not surprised in the least. Ben told me that every programmer he knows starts having the same fears as they approach 30. Imagine, a career where you are "over the hill" within 10 years of starting. We might as well chosen to be Olympic Gymnasts.


Back to my story... when Ben excused himself and walked away, the checkout guy remarked: "Wow, a famous guy came through my checkout line!"


"Famous Guy!" Wow, This must be my 15 minutes! Who'd of thought that it would be in a checkout line, and in response to a cropped mugshot? Oh well, enjoy it while it lasts.


My online UserID is always "johnreynolds" if I can get it, and some variation on that theme if that UserID is already taken. I've never been all that interested in adopting a nickname or pseudonym, even though "John Reynolds" is a very common name.


The downside to this is that anything that I write online can be traced back to me. Every opinion that I put in print may come back to haunt me at a job interview, or maybe even in a checkout line ;-)


The upside to this is that I'm more careful about what I write. It's like living in a small town, anything that I say will get back to the neighbors, so I need to be careful what I say about them.


Other folks choose to be more circumspect about their identities. For example, the Tapestry Table Component was authored by MindBridge. I was under the mistaken impression that MindBridge was a pseudonym for Howard Lewis Ship when I first published my Tapestry examples. I still don't know what MindBridge's real name is (and I wouldn't divulge it if I did know), but I can tell you that he's a great coder and a very generous person.


In this day and age, privacy is an illusion.


A piece of spam recently arrived in my inbox that caught my attention. The subject line read:"John, your current checking account balance is $1,234.56" (I've changed the amount to preserve my privacy). The amount was correct. Needless to say, I was less then enthused to realize this information was public.


All in all, I am less interested in preserving my privacy then I am in insuring my identity. Think about it, how can I prove that I am me? My education and employment records are tied to a Social Security number... but there is nothing tied to that Social Security number that identifies me as me. There's no picture, no finger-print, no DNA on file; just a number and some information that is common knowledge.


I know that many people fear a National Identity Card, and I can sympathize; Governments are notorious for turning oppressive. I hold the other view; I want a National Identity Card, and I want my DNA and finger-prints on file.
Without a trusted identification authority (and I know that nothing is foolproof), it's just too easy for someone else to pretend to be me, and too hard for me to prove that I am me.


Fortunately, java.net has changed all that. All that I have to do is point folks to http://weblogs.java.net/blog/johnreynolds/, cock my head to one side and crack a toothy grin, and voila!, proof positive that I am me! Isn't fame great?

Monday, December 13, 2004

Too old to program

(Cross posted from my java.net blog)

I was drawn to E-Surfer's recent weblog entry that asks the question: "Could I Still Pursue Software Development Career When Getting Older?"

E-Surfer's "friends" warn him that:"when getting older I would not be competent to pursue software development because of slowness of thinking, difficulty reading and writing, and so on."

I will be 48 years old on my next birthday, and I have been professionally programming since I got my BSEE degree from Rice University back in 1980. I freely admit that my memory is not what it once was, but I am pretty sure that "slowness of thought" and "difficulty reading and writing" will never be the primary reasons that someone leaves the programming profession.

I started programming when many programmers were also digital logic designers (hence my electrical engineering degree). While I was in school, the 6502 microprocessor and the Z80 microprocessor became widely available, and almost everybody that I knew was wire-wrapping chips together on perfboard to build their own "personal computers".

Cheap microprocessors transformed the world, and resulted in an explosion in the number of professional programmers.

An odd personal side effect of starting my career at the dawn of the PC age is that I have always been one of the oldest programmers at every company where I have worked. I was dealing with being "the old guy" before I hit 30.

For me, the biggest obstacle to staying in the programming profession has been the frenetic pace of change. Programmers must continually learn new lanquages, new operating systems, and new devices just to stay employable. For example, in '85 my MSCSE focus at the University of Texas at Arlington was on computers that were optimized to execute Lisp. Lisp programming positions were always few and far between, so I relied on assembler, Pascal, 'C' and FORTH to pay the bills. By the 90's, C++ was on the scene, and along with it the need to leap from structured programming to the OO paradigm (thank heavens!).

The advent in the mid-90's of the Internet and Web-based applications once again negated much of what I had previously mastered. Along came Java: first applets, then servlets and JSP, and now a plethora of client and server side technologies (most of which have something to do with XML).

My point in relating all of this is that programmers must commit themselves to life-long learning. With the possible exceptions of a few safe-harbors (like mainframe COBOL), practitioners must keep abrest of changes and be prepared to discard their tools, languages, and paradigms every 2 to 3 years (at best). With the dawn of EJB 3.0 will you ever again use the esoteric EJB 2.0 home and remote interface knowledge that you needed to pass the J2EE certification exam?

I have never been "put off" by the demands to learn new things, but I do get very cranky in the realization that much of what I must learn is about reinvented wheels rather then better wheels. I have probably learned over 20 ways to implement what is essentially a modal dialog box. Where's the value in that?

Rather then failing health and mental accuity, I think burn-out is what does most programmers in. I think we just get tired of fighting the same old battles and move on to other things.

Fortunately, I believe that the profession is on the verge of getting much, much better (in terms of sustainability). As I've blogged before, adolescence is over and the industry is maturing. I do not expect the pace of change to slow, but I do expect that the nature of the changes will be more manageable.

Much of my optimism is pinned to the renewed interest in Service Oriented Architectures and Business Process Management.

Programming has long suffered from two major faults:

  1. The mappings between requirements and implementations have been vague at best

  2. The elements of our programs are too tightly coupled to each other (and to languages, frameworks, etc.)

With SOA (done right) the business services that programmers develop will be accessible to clients that are clueless about the implementation.

With business processes running on BPMN engines the mapping between the business process and the requirements will be crisp (and language neutral).

BPM and SOA will be good for the professional programmer because they will bring to the foreground the skills that are not tightly coupled to specific languages, operating systems and devices.

Programmers are problem solvers. Programmers are logical thinkers. Programmers can figure out why it doesn't work. Programmers like to build new things and make old things work better.

Perhaps some folks think that limits programming to young folks, but I respectfully disagree.