The Source for Java Technology Collaboration
User: Password:



John Reynolds

John Reynolds's Blog

Too old to program?

Posted by johnreynolds on December 13, 2004 at 11:19 AM | Comments (17)

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.



Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • Let me tell you why I think your experience is so valuable:

    You come from a time when people designed and built their machines, from the ground up. A time when people completely understood how the entire system worked. Your depth of understanding far surpasses anything possessed by the young graduates. It's not as though they have less knowlege, it's just they have to spend a lot of time learning all these 'fashionable' new methodologies, most of dubious objective value.

    Your role as a mentor is now more important, than as a programmer. Share from your rich experience, to help prevent the young guys from recreating history; both the working, and the mistakes. Consider more actively contributing to open source, to help leave a lasting legacy of clean, simple techniques, the culmination of a career of experiences.

    Take care,

    (aka) John :-)

    PS I think what draws so many to GNU software is that it has a comforting stability and reliability over time, even while it actively gains new features. It more clearly reflects the science, in Computer Science. Windows on the other hand, has been the complete antithesis. Here we had to endure so many complete do-overs; DOS, WIN16, WIN32, DDE, OLE, OLE2, etc... Soon longhorn will be here, in which they actually have the nerve to boast, yet another new set of system APIs, again! Hopefully this time people will finally scream: Enough!

    Posted by: cajo on December 13, 2004 at 03:13 PM

  • Only for the old of mind. When I look at "old" programmers, its only the ones who have problems learning (and/or teaching) I see having trouble. On the other hand business often comes up with whatever policies it needs to, to replace senior positions with junior.

    Posted by: emeade on December 13, 2004 at 05:11 PM

  • A topic that really concerned with. I'm 40 meanwhile and still coding. Did I fail? Did something went wrong in my career?

    One the one hand, I still enjoy coding. OTOH, sometimes I feel a bit bored and tired. There has been nothing *really* new in the last 20 years and I still find myself writing for(int i = 0; i like I did so often.

    I see the junior guys now and I feel they yet cannot compete in knowlegde and the ability to foresee the consequences of their design. Thats what experience is good for. But they are so excited and enthusiastic!

    And John, it feels good to meet an old FORTH fellow ... IMHO still one of the best languages ever :). These young guys never enjoyed (and never will!) the deep satisfaction that comes from well written FORTH code!

    Posted by: herkules on December 13, 2004 at 11:55 PM

  • Some of the best programmers I know are over 50... It's only the youngest who call the older generations too old. They're afraid of the experience of the old timers, don't want to hear that the current hype isn't the greatest thing since sliced bread (or worse, has been tried and failed 20 years ago when it was just called something else).

    Posted by: jwenting on December 14, 2004 at 12:56 AM

  • You are right for another reason. Programming is increasingly an intelligent amalgamation, a composition, of primitives and concepts that we know have proved well in practice. Such composition is only possible if the programmer has a battery of these concepts in his experiential memory. Of course, one can always imagine a graduate level course that will chronicle such established primitives ... in which case, we might be able to get good "green" programmers too. Needless to say, I have been "around". Good blog.

    Posted by: krbabu on December 14, 2004 at 09:58 AM

  • Yin and Yang:

    Old programmers need young programmers and young programmers need old programmers. Get rid of one and you injure the other.

    Posted by: johnreynolds on December 15, 2004 at 07:35 AM

  • What a breeze to hear (and I'm not 40 yet). The only thing I regret about being a professional programmer for over 10 years (and an amateur for the previous 5 years) is the lack of a clear career path (in Italy at least). I still love my job (i.e. build new things and make old things work better) but more and more often I realize that 'marketing SW' or 'selling SW' is (considered as) more important than 'developing SW'. Especially if you focus on 'paying the bills'. Where do all those 50 years old programmers work? What are the names of those companies that will not tell you: Hey! You're still a programmer! SW development is the only field I know in which it is common to stop what you're doing while you're learning how to do it.

    Posted by: aatoma on December 15, 2004 at 09:18 AM

  • Past 35-40 the best programmers become architects or more business oriented. Programming is great but the lexus is nicer.

    Posted by: smartinumcp on December 15, 2004 at 10:42 AM

  • Good blog John, Cheered me up no end.
    But I have to say "Sorry John your still a youngster".
    My first steps in programming were on a DEC PDP 8e.
    This incredible system had 32K of memory ( not 32KB but 32K x 12 bit)
    It had two removable disks each capabale of storing a vast 3K blocks of data (A block being 1024 x 12 bits).
    A few years later I worked on Z80, 6502 & 6809 based systems.
    The big desktop OS of the time was CP/M. MSDOS was around but the only thing anyone used from MS was MS BASIC. Then along came the IBM PC and things changed!
    Still enough of Grandad is off on his "when I was young" rant.
    The never ending learning can be a pain sometimes, but it does give a sense of purpose and fun and keeps you young at heart.

    Posted by: panaseam on December 15, 2004 at 01:16 PM

  • My first steps in programming were on a DEC PDP 8e. This incredible system had 32K of memory ( not 32KB but 32K x 12 bit)

    You've got me beat, although I did learn PDP8 assembler for a class.

    You're absolutely right about the "when I was young" rant... it can really turn off our younger peers. They're good, and we're good...

    Posted by: johnreynolds on December 15, 2004 at 02:21 PM

  • I've been programming computers for about 30 years now (the first programs I wrote were text-based games written on a teletype connected to a minicomputer miles away) and as I recently hit by 45th birthday I've been wondering off and on whether I'll still be programming when I'm in my sixties. The problem is that I don't know what it will be like because I've met very few 60 year old programmers. Most people in the profession that I have met have either been programmers that have become managers or project leads that do very little coding anymore. I can't see myself ever moving into management because it's hard for me to derive any vicarious pleasure from the programming success of others; that's not what motivates me. I like constructing a high-quality program, polishing and perfecting it. After 30 years I still enjoy programming (Java was sure a breath of fresh air--Thanks James!) so I guess that unless a rich uncle dies and leaves me a windfall I'll still be programming by the time my retirement age arrives. I have no doubt that the issues of senior accessibility to computers will be not be an issue by that time but still it is hard to visualize what it will be like. As far as "slow thinking" goes, as I grow older I am finding that the methodologies and intuition I've developed are more than adequate replacements for the energy of youth. Although family and health concerns make it difficult to put in the mega-hours I use to work in my 20's and 30's I am finding that my experience is able to make me just as productive in 40 hours than the 60 hours I used to work. The one thing I do realize, however, is that as a life-time programmer ages it is vital to develop deep knowledge and skill in an area of specialty. That is the only thing that is going to keep a 60 year old programmer employable at a salary that is integral multiples of what energetic "young turks" make. It's a hard sell to potential hirng managers that they should hire a 60 year old generalist because of his or her experience when they could hire two or three young "code volcanos" for the same price. The key is having the experience plus the specialty. And then, of course, you need to continually strive to make sure that your specialty stays relevant and marketable. I'd be interested to hear from people who are still programming in their sixtes or people who know such people, to find out what it is like. What are the challenges? What are the rewards? What keeps them going?

    Posted by: deronj on December 15, 2004 at 04:21 PM

  • John, thank you much for youe insightful article. Yes, you are 100% right - getting old in programming is a problem exactly because the constant demand to trash 50% of the former knowledge and learn new things all the time. Frankly, it is tiring and burns out not only elde generation but younger one, too. I mean - what is "young"? Biologically, the incredible energy of learning new things fast singificantly decreases not by 50 but as soon as by 30 years!!! From that age on, it's all the same compared to the fire in 13 and 16 years old hackers, thirsty for the knowledge and never tired :) Hell, I remember myself at the age of 14. I am just 24 now but I am not even half of that. So, in that regard I agree to you 100%. But then not all the people are the same. I know some elder people who are still learning a lot and some that have not had a desire to read anything new since they were 40. Also, programming has two major sides: Ability to Learn and Experience. Never ever should anybody deminish the importance of experience in the Software Engineering!!! I can talk hours about it but the bottomline is - programming is an inherently error-prone and non-trivial process. It is a jungle and having experience or not having is like whether you know the path in the jungle - makes a whole lot of difference, huh? :)

    Posted by: inadarei on December 16, 2004 at 03:39 AM

  • Burn Out
    Most of the good programmers that have fallen by the wayside I believe was due to plain old 'Burn Out'. Technology changes at a blistering pace, not so much for technology enhancements, but jostling between companies in the market place. The delivery mechanisms have changed; fat clients vs web interfaces, resulting in a technology journey akin to the Tango, one step forward and two steps backwards. Where C programming lasted a good 2-3 years allowing me to implement solutions rather decipher technology and fight the plethora of bugs delievered by most vendors these days, of course this is where M$ reigns supreme.
    The core of relational databases have remained fairly constant but it seems every couple of months there is a new way to programatically process the data in your application.
    I actually like programming, always have and still do. BUT, I'm a results oriented person. When technology becomes the roadblock rather than the enabler I get frustrated. To make matters worst is the 'outsourcing of jobs' to cheaper (less skilled from experience of cleaning up their messes) foreign labor. Technological companies have always been unstable. Layoffs for the most part got rid 'dead wood' but outsourcing from my experience targets the best and brightest in a company first. After all, any 'bean counter' and/or CEO cares about $$$, nothing else to them matters.
    The end result is that today you have a career where you have to put a tremendous effort into learning some new every few months. Guess wrong about the 'next new technolgoy' and you're toast. Guess right, work hard, get raises and you have made yourself the primary candidate to be outsourced next. I cannot think of a worse career to be in for a young person today. The one advantage of being an 'older' programmer is that I got to experience being able to learn a technology inside and out, use it to provide quality solutions for my customers and be recognized and rewarded for my skills. sigh those days are gone......

    Posted by: java_cruise on December 21, 2004 at 12:09 PM

  • First things first. Top dog of a blog john. As u can see i belong, atm anyways, to the "younger" generation of programmers. I'm gonna put my two squids in and say this. Although i am too concerned of becoming victim of the "burn out" effect, I dont share the same pessimism as I think most of the other people who posted the above comments. I believe good programmers (and I hope i fall into that category) get better with age as does martial arts pratictioners. Let me elaborate on that last remark. Why is it old martial arts masters better than their younger generation? Is it because their stronger physically? No, of course not. What they are is stronger mentally. So I come to the conclusion that to be a good programmer does not mean that you must be young, and be a wizzkid with code. A good programmer must, more importantly, have the correct mind set. To be able to adapt and live through ever changing times.

    Posted by: sexiko on December 23, 2004 at 06:27 AM

  • Good analogy sexiko!

    If I might add to your martial arts analogy, the martial arts master who improves with age probably had the guidance of a great teacher when young and the supportive companionship of fellow practitioners of the art as time passed.

    Many, many programmers have burned out because they didn't have a support system, and that's why I'm delighted that communities such as java.net are growing.

    Posted by: johnreynolds on December 23, 2004 at 07:54 AM

  • I have a comment for the person who said" There has been nothing *really* new in the last 20 years and I still find myself writing for(int i = 0; i like I did so often. " That is one of the nice things about the new syntactic sugar in JDK1.5: it lets you concisely write an iteration over a typed list as for ( element : list) {..}. I don't know about you, but I have found a LOT of things new in the last 20 years. GUI's done through XML and browsers instead of custom C programs, for example. And object oriented programming languages certainly win out over languages like C for all but the most bits-on-hardware programming, at least in terms of total cost of development and maintenance. I am finding programming fun again now that I have been using Java. Jeez, I haven't had to go after a really nasty memory smash in a long time! It took me a long time to learn how to attack effective these kinds of bugs, but I would not mind seeing this area of my experience atrophy; I hate it! And OOPS like Java help organize my thinking in a way which I really enjoy. In short, while some stuff has stayed the same, such as for (i=0; ...) for an array, there have been more than enough fun stuff developed in the past 20 years to inject new life into programming.

    Posted by: deronj on December 28, 2004 at 03:56 PM

  • I think that one of the greatest problems in computer sciences is the lack of standards and the complexity inherited from it. We've added complexity where it was not necessary. In fact there is a contest between richness of content and usabilility. Now to solve a problem we have 1000 solutions and if u wanna vary your work, it will take more time to learn to use and integrate a particular framework that effectively implementing a solution. All has been allready done so why reinvent the wheel could we say ! But in facts nothing has been done and we're still coding the good old way ... We have now multistandards for everything. And they are all the same but all different. The only significant things i can see are : - The Internet in despite the fact that it added complexity and overquantity of choices - Open source model development Because it only involves persons that are REALLY motived by the project ( in comparison with older commercial models where peoples are only present for money .. ) and that model should be applied to every professions ... -UML Because I can see it as the future of (non hardcore) programming. About the Internet why do u think it actually works Because there is strong standard about TCP/IP (and maybe of the layered approach ?) And we've done it only because we knew it was necessary in order to work ! The actual schism in computer sciences is killing evolution. their should be ONE kernel set of functions to talk to hardware and that's it ! Their should be a real abstraction beetween hardware and software ! and in that order : differents Hardwares > differents drivers > common virtual machine model > whatever u want ! AND NOT differents Hardwares > differents Drivers > differents Oses > differents Oses Drivers > differents Oses Blabla > differents Oses common Virtual Machine > differents Rehardware specifics bindings > whatever u want ! I think LAWS should force microsoft to open there source code and every source code ! Can we sell food and say : " What's inside ? oh, A looooot of (suspicious) things but we can't tell u ! " (i can admit analogy is a bit 'inadequate' but their are thousend others) And that's true for JAVA too ! In fact i think that money is responsible for all this s**t ! It had motivated science and industry ... but it's killing it ... because of profitability ("rentabilité" in french) Now a person is no more a GOOD person or a BAD person a person is profitable or NOT and that's all that matters Well i slided away from the original subject but these are just my toughts ... mathieu

    Posted by: dwarfy on January 10, 2005 at 09:09 PM



Only logged in users may post comments. Login Here.


Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds