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.
If you hire a photographer and simply want digital copies of the photos you took, then you deserve what you get. You are making the mistake of thinking what the photographer is doing is simply capturing images. There's no reason to pay them a lot because they aren't providing a very good service.
A lot of newbie photographers do indeed cater to this segment of the business. Those photographers suck and do not wind up making very much money. It is the typical race to the bottom.
Photographers who are successful are creating experiences, and high-end presentations of their work are part of that experience.
If all you want is digital copies, then hire your Uncle Bob with a case of beer. Chances are he has the same high-end equipment a good pro does, and probably knows how to use it, too.
This same issue is true for a lot of professionals, not just photographer. The digital revolution has greatly lowered the barrier of entry, and that's a good thing, but it also means a lot of the photographers you are dealing with in the marketplace just aren't any good.
There are many rural areas in the US where the physical address is not in the USPS database and as such "does not exist" (the USPS only has PO Boxes). That makes using any address neigh impossible for accurate tax calculations.
Your feelings are extremely common. In fact, most men especially will likely experience these thoughts in their 30s and 40s to varying degrees. I know I have.
I can tell you that ultimately what you have to do is forgive yourself, not only for past mistakes but for letting yourself waste time on regret. Then, the next and most important step is to take responsibility: no one else but you is responsible for how you are feeling, and what you will do in the future. Taking responsibility is one of the most liberating things people can do for themselves, and yet is one of the hardest for most of us.
Do not worry about it being too late; it is not. I have known plenty of people that have come back or joined engineering, or something else, very late in their life (you're still a young pup compared to them!) and have been successful. You have to set goals for yourself, execute against them, and continue to remind yourself that you are responsible for what happens.
Don't look around at people who became billionaires in their mid-20s and decide you haven't done enough or aren't talented enough. There are so many factors that go into huge successes like that. Hustle and hard-work are indeed a huge part of it, but so is timing, luck, and their placement in the universe.
I would also ask you to think hard on if a good school, etc. is what you need versus hard work. Think hard on what your goals are and the steps you need to get there. Don't spend time on something that isn't really going to help you.
You're going to need a lot of perseverance to get a project like this done, so if nothing else this project will teach you a lot of patience with people who don't believe in your idea.
You can get a prototype really easy: get an Arduino platform and some sensors and then work on your back-end. With about $100 in parts you can prove out a lot of your overall idea. Visit https://www.adafruit.com/ - you don't need to have any hardware experience to get something functional in just a few hours or days; this stuff is easy to learn.
If you have the ability to objectively analyze results, you'll quickly realize your project is a) recreating wheels that already exist, b) utterly pointless.
Anyone intent on doing evil will be able to destroy or suppress any sensor added or built-into a gun. Mass-murders are not done on a whim - they plan and have plenty of time to figure out ways around obstacles.
Yes, some obstacles will undoubtedly deter some people, but with everything there is a cost / benefit analysis that must be done. You will find in this debate that people, on both sides of the issue, will use every statistically correlation as a causation to support their point. Factual, proven data is very hard to come by without a bias: I'm pretty sure I could statistically prove that mass murders are directly related to the availability of avocados.
Weapon-smithing and ammunition production is easy with modern tools and is just getting easier. Even casings for ammunition is easy with simple machine tools. As others have mentioned, with 3D printing technology advancing printing guns from scratch is effectively here today and will only get better.
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