• A lot of people have suggested that there's some sort of conflict between efficiency and effectiveness, mostly suggesting that doing something ineffectively but fast is efficient. I don't agree - if it doesn't have the required effect, it's useless, and being useless quickly is no more efficient that being useless slowly - neither one is being efficient at all.

    Back to topic: how do things change with age.

    I started out pretty incompetent at anything to do with computers - I was a mathematician, with degrees in Maths and Mathematical Logic. A few (about 5) years in industry and academe improved me a bit so that I could do good specification and rough design work and was a bit less incompetent at writing code. The next 4 years turned me into a real engineer: part of that was because of a surprise boost in confidence - some computer language work I'd proposed got implemented by my previous employer and a few companies - including my new employer - started using it, but most of it was because I had a boss who knew how to get the best out of me - vast improvement in my programming, did an awful lot of design/architecture work most of it getting implemented one way or another, standards (intercompany, international) work on committees (a bit boring), took and passed some of my professonal institution's professional engineer exams (they wouldn't let me take the rest - declared me exempt), invented a couple more languages (both implemented and used), and then got assigned to an ivory tower job - which I couldn't stand. Got shunted to a "rescue" job - failing project, many managers in the last year, dig it out of hole - discovered that somehere along the line I'd learnt how to tackle something like that too (probably some of the projects I'd been managing had started down that path and I'd had to catch them). Learnt a new language and a whole new mainframe architecture for that, but could take pile of line printer paper with ex dump on it and fin out what went wrong within a couple of weeks - much faster than before: again getting older was making things seem easier.

    It went on like that - finish one thing, take on the next - always learning more, always discovering that I could do things better (either faster or more correctly) than previously, always switching between management and technical (except when doing both) until I'd been with that company for about 25 years. And then the whole culture changed, people like me were no longer wanted, so I was looking for a job (no sweat, it cost them a fortune to get rid of me).

    At first I cast around in the market a bit, just to see what things were like; things could be described quite simply: if your age was over 50, no way would you get a job - all I had to keep me going was occasional contracts with the CEC to help evaluate funding proposals. But I had a standing offer for a job any time I was willing since about 10 years previously, so I called that up after a few months holiday. Unfortunately that was a catastrophe - I got stuck with a project despite telling the CEO I was not able to manage it , it was beyond my strengths, and I didn't want it, and stuck with the responsibility but no authority problem because the development manager on a project didn't even control the development resources, let alone have a say on what the technical content might be. I learnt nothing during my three years there but how to be depressed and how to try hard against all the odds, and eventually the company went bust because none of its medium to long term projects were getting anywhere (for what seemed to me - and to my boss, but not unfortunately to the CEO - to be obvious reasons) and I had to find somewhere else.

    Again I looked at the market, but age discimination was still rampant: 55 years old, forget it! But I got an email from an old colleague - would I take on R&D management for the company he was Mktg VP for; yes - interview with senior tech guy and then with CEO and straight in. There I went back to writing a language which had been my pet hate: C++. I discovered that I could now do things with it in a few hours that would have taken me weeks before; I could still make silly mistakes - when impoving a spider I forgot to ensure it was still slow enough at any given site, and got us into trouble that way - but now it worked first time, with a few hundred times speed up on what I'd been given to start from, and not much time spent on writing it. I steadily improved both my C++ and my SQL capability while I was there, as well as running the engineering side of the company (only a couple more than a dozen people in my bit, so running them not an enormous problem). Then came the bursting of the internet bubble - so I was looking for a job again. No-one was hiring 58 year olds, exept I got a call from another old colleague who was now ops director an another startupand wanted an SQL Server expert - so here I went again. Worked at that outfit for 7 years (ending up as chief architect and technical director). Discovered that I could write decent Javascript faster than any of the developers (surprising, as I'd never used it before and only learnt it debugging theirs for them) and could write SQL pretty well too. Yet more improvement in programming (and in people management, and in design) as I got older.

    I think most people will get more efective/efficient as they get older unless the get stuck into over-specialisation and stop learning new stuff. People who are lucky will work for a firm like the one I spent 25 years with where they encourage you to go for extra qualifications (hence extra learning) and encourage people to flip between management and technical so that they learn three important lessons: you can do both management and technical, they aren't exclusive; your management skills help make you more competent technically while at the same time you technical skills help make you a better manager; and you should try to make sure that you never stop learning.

    Tom