I am 43 and I have been programming professionally for the past 26 years.

I had good early education, but left school as a college freshman to focus on industry work, and didn't return until 2004. The lack of formal education has never held me back, as technology companies especially like people who have been successful without those credentials. I am doing a graduate program in CS now, for the pure intellectual fun of it.

Pay has continued steadily over my career, with the only setbacks being self-imposed when I tried my own startups or left a high paying job for a lesser one because of better long-term prospects. It is mentally hard deciding to leave those $200k+/year jobs, but I have not once regretted it. In the end, I have only had 2 years total in my career where my taxable gross was less than the year before, and one of those years is when I took a year off to goof off (as an aside, I highly recommend that people do this every 5 years or so).

I have always wondered about ageism, mostly because I started doing this when I was 18 and there were a lot of older developers I worked with that were not effective. I have come to learn over time that age has really little to do with this: people can become complacent for a variety of reasons, and age has little to do with it.

The few folks I've known that are older and who did have trouble finding jobs had some other life issues in the way, such as letting their skills become irrelevant, being a bitter whiner, or not being a very good salesperson. You don't have to be the smartest tool in the shed to interview well, and sometimes you will not (I have had some spectacular uhhhh-duh moments more than once!), but take those setbacks as opportunities to learn and improve, not to sit and complain.

The whole discussion on management, leadership, architecture, etc. is quite pertinent. I have done mostly architecture since my early 20s and always find myself back in that role whether or fight it or not. I try very hard to code every single day, but the reality is businesses get more value from me when I am looking at the bigger picture and enabling others to code faster. Personally, I would much rather go code than do that type of work, but it is still very fulfilling and is still engineering.

When I give others career advice and coaching, my number 1 suggestion is to always do what you love, but be open-minded about what that means. Most of us will find ourselves with a variety of opportunities over the years and being self-limiting is the best way to keep your career from advancing.

My number 2 suggestion on career is that if find yourself being the smartest person in your company, either because you are or just believe it, it is time to move on. Don't be that guy/girl.

I have always deliberately avoided the siren-song of the Valley, but I know I could make enough compensation to make up for the cost of living differences and still support my family well there. But, I will only go there if the project/company is one where I will be making a substantial impact on something interesting. And, frankly, that really should be true for anyone with more than 20 years of experience: it is time to use your experience for great works, not just paying the bills.

p.s. rules of thumbs are just that, and sometimes you have to make compromises because life is in the way - that's okay, too. Just don't let yourself fall into a trap/rut because of those.

p.p.s. people in this field are rich by almost every measure, even if you aren't technically still in the 1%. If you're struggling to get by in the Bay Area, there are a lot better places to live where you can do a lot better. Don't be fooled into thinking that is the only place to be.

p.p.p.s. get off my lawn