There are tons of companies that need programmers to solve problems. If you have a base understanding already in a field, work towards programming things in that field. Having deep knowledge of a field can help you.
You didn't give much info about your background. If you can use an existing job to start doing programming, do it. If you are an office worker and use Excel for nearly anything, that can also likely be solved as a CRUD web application. Do it on your own time if your employer won't allow work time on it. Also look into automation of things you or co-workers do.
Generally speaking, I would say outside of careers requiring extreme amounts of education/certification (medical doctors, rocket scientists) you can generally switch careers from anything to anything. The advantage with programming is you can learn 100% of it online and you don't need a degree to enter the field.
This. I know several people who switched from some non-tech career to development in their late 30s/early 40s. All of them are still working as developers now around a decade later and all very happy they made the switch rather than writing themselves off as "too old".
Will it be harder than when you were 20? Well yeah. Just like any career change after around 25 or so is harder than fresh out of university. Doesn't mean you can't or shouldn't do it though. Not much in life worth doing is easy imho.
Decide what you're interested in, look at what you need to learn, learn it and build up a portfolio of your work. Perhaps get involved in some open source projects if there are any that catch your eye, or start your own open source project.
Once you have built up some confidence and a demonstration of your work apply for some positions. I highly advise you brush up on your soft skills as well as your tech skills if you are not used to "selling yourself".
Generally speaking, the tech industry is sufficiently deep and wide that anybody with adequate motivation and resources to iterate will eventually find themselves somewhere interesting, for practical and short-to-mid-term definitions of "eventually", and even in a situation where you're diving into the deep end, cold, and with a lifetime of expertise in other fields.
But that iteration process takes time, and it can be unintuitive. The more specific you are about what interests you (where you want to go) and what experience you have (where you've come from), the faster you'll get somewhere personally significant.
Yes, there's definitely an "all about me" element to this (for want of a better way to put it). I feel the positivity and encouragement already present in the thread answers that to some extent.
It's also very true that adding specifics will make the thread less applicable to others, but I say that a) others can just post similar questions, b) tech changes so much these types of threads tend to become irrelevant over time, and c) more specific often correlates with more interesting!
I wrote a lot about my path and I think it can help both in the why and the how: https://rodrigohgpontes.github.io/
Good luck!
This industry's over-representation of 20-30-somethings creates a real echo chamber. When any group is over-represented in an industry, that industry will struggle to hear other perspectives and experiences. So please, let's increase the supply of diverse voices.
(This is not an "SJW" thing, by the way. I can feel some of you being triggered by words like "diverse", but I'm not trying to say that any of you are any less deserving of your jobs and accomplishments. You're all wonderful and brilliant.)
In terms of hire-ability, I think you'll find much success. I don't live in SV, but in my experience, the age of a programmer has never been an issue in hiring.
With one exception: The salary expectations of someone in their early 20s is usually different from someone in their 40s. Switching careers generally means starting from the bottom and working your way up. You'll probably climb much faster than the young guns due to all sorts of relevant experiences you've had, but there's no getting around the fact that you're starting over.
More older male devs in Silicon Valley would be a breath of fresh air. Please make the switch, we need more people like you here!
Some points to consider:
1. Your age is a big disadvantage. Ageism is pervasive in tech, especially for entry-level coders. Someone your age who had started at 22 would likely have been in a management role for ~10 years already.
2. It's very, very hard to get a comprehensive understanding of the work that most programmers do: web and/or aging enterprise applications.
Web is an enormous hairball with many layers of history, competing standards, frameworks, philosophies, and target environments.
I've been building web software for ~24 years, since I was literally a child. I started doing it professionally ~18 years ago. When I meet someone from a bootcamp, their understanding is probably 1% of what mine is, which is totally reasonable.
That said, I still regularly bump into aspects of programming and web technology that are completely foreign to me and would definitely be useful for me to understand. For example, I have essentially no experience with the HTML <canvas> element, which is a huge gap!
3. Programming is not something that most people enjoy as a career, even if they absolutely love it as a hobby. It can be tolerable to continually bang your head against the wall trying to figure something out if you care about the outcome. It is much, much less tolerable if the outcome is fixing some mostly-broken, legacy garbage for a client in a boring industry.
Keep in mind that this type of work (maintenance/drudgery) is often the most accessible and secure type of employment for starting programmers. It's definitely possible to get a job at a startup, but at your age, the austerity and gambling involved in startup life is potentially not acceptable.
Ageism is pervasive in some corners of tech. I'm nearly 50, and in my R&D group, there are few developers under the age of 35. Few of the older developers are managers, either.
I think you are conflating age with experience. If the OP has enough skills for an entry level position, then I would not expect him to have anywhere near the same level of expertise as someone in the industry for nearly 20 years. If the OP wants to get into web development, then they should work to progress their skill set over time (which, by the way, is a reasonable expectation for any number of career paths).
Of course there are exceptions, but they're rare. Your personal experience has no bearing on industry-wide data[1].
> I think you are conflating age with experience. If the OP has enough skills for an entry level position, then I would not expect him to have anywhere near the same level of expertise as someone in the industry for nearly 20 years.
You're putting words in my mouth. I said nothing about age and experience being the same thing. I'm saying that OP wants an entry-level job at middle age, and that's more difficult for many reasons (ageism being one of them).
> If the OP wants to get into web development, then they should work to progress their skill set over time
People are hired (or not hired) for many reasons, and only one of them is their skill set. I'm sure OP can acquire the necessary skills, but it can be painful and life-consuming, which a lot of people can't tolerate as well at 40 as they can at 22. A lot of people over 35 have mortgages, spouses, children, elderly parents, health conditions, and a variety of other responsibilities that are less common in younger people. Taking a grueling, low-paying job is not necessary feasible in those circumstances.
1. https://www.marketplace.org/shows/marketplace-tech/celebrati...
This post makes some very good points.
You'll probably be able to get a job, but it will be at a second or third tier company that is questionably managed and considers you to be a cost center. So you'll have no political power and everyone breathing down your neck to get things done - while also having you sit in meetings half the time.
You won't be able to work at a FAANG unless you are have such innate talent that you are basically god's gift to programming.
In addition to all the normal barriers for interviewing, like whiteboard coding, passing leetcode tests, etc, you are going to need to jump the ageism hurdles. For example, the fact that the person interviewing you is younger and is thinking "this candidate is too old".
(And for the 40+ programmers that are going to reply and tell me they are working with tons of older workers: you guys have survivorship bias).
EDIT: I misread your comment, and realized you were referring to the newly-minted programmer in their 40's. I apologize, and fully agree that person will have a VERY hard time landing an entry-level role.
Keeping my original post below for posterity:
I like to think that I'm good at my job, but I can assure you that I am in no way god's gift to programming. With over 20 years of experience under my belt, whiteboarding was easy (fun, even), though I did have to practice the leetcode a little bit to make sure I was well-versed on the "smell" of problems and "tricks" required to get to O(n) or O(log n) complexity. That took about 10 hours or so.
Ageism is absolutely a thing, and it's something I worry about, but getting into FAANG at 40+ is 100% doable. There is such a massive shortage of experienced engineers that I spend an hour or two each week helping our recruiters find lots of other experienced folks.
Its different for most of us and I'm sorry to say you just don't know how bad it is. Many people I formerly worked with are currently severely underemployed. Its not that we are bad (I shipped a couple Xbox games, so I'm not an idiot), we are simply unfashionable.
I always recommend that you have a competitive advantage in what you do.
So if you start anew competing against 20 years old with way more energy that you have, it will be a bad idea.
But if you have mastered something in the past, and programming gives you an edge because you reuse what you have learned, it will be a good idea.
Programming can be miserable, lonely,alienating(you work with machines not people), painful and slow to get results, specially when you are not an expert. Experts can do miracles as they could automate their own code. Also experts are used to working remotely, and master the psychology of getting things done after years(or decades) of mistakes individually and as teams.
I would study what can you give that very few people can because of your specific personality, interests and experience.
The programming/software development industry is HUGE, and there's room enough for most anyone.
But beware though, in a lot of SV-oriented forums/boards, there will (naturally) be a gigantic bias towards Big N or startup careers. In those cases, it might be more difficult to get a foot inside, as you get older. There's just a ton of applicants, and some recruiters at some firms might assume that with higher age, you won't be able to commit to work as much as fresh grads, due to family and such.
There's quite a difference between joining Google or the hottest unicorn, compared to becoming a coder for some insurance company out in nowhere.
Another older coding camp grad, who happened to be an immigrant woman, was a natural engineer who learned our complex systems very rapidly, contributed a lot quickly, and soon moved on to higher paying opportunities.
You will hear lots of encouraging words here and hopefully they will be true for you. But beware of wasting years on this project if you find that after giving it a solid try, it still doesn't suit. It just isn't for everone.
But that certainly doesn't rule out the older folks if they put in the work! Places like that tend to advertise >90% job placement and starting salaries in the $60k-$70k range depending on what market you're in, which seems like great odds to make a good living.
I fail to see how the situation is any different for a 40 year old than for younger junior devs who either get education or self-educate and start coding.
I think the most important thing is to accept you can never stop learning.
Agree playing around is a good idea :)
Aka the things you learn at that young age are nearly impossible to learn when you're not young anymore.
I see this not only among 20-something unmarried workers with no children but also among single workers in their 30s, 40s, and 50s who are either childless or whose children are older and less dependent on them. There's more flexibility to be able to work a little late when needed, or attend networking events or conferences without having to worry about childcare.
He works for a large automaker now writing javascript web apps and is way happier than when he was lawyering. It took him less than 2-3 years to switch.
The other one I saw here was someone who is now a junior developer after a few years. That's reasonable, IMO.
My impression of people wanting to switch careers is that they expect to be as proficient in the new career as they were the old one in just a short time, perhaps just after some training/college. It's not reasonable at all.
My standard advice to someone who wants to have a career in programming is to start programming. If you don't actually like it, then you really should consider something else. But if you love it, it'll be hard to stop you from being successful with it.
It’s much harder to do the same as a programmer.
Almost every post secondary institution is currently offering online degrees thanks to the Rona, so IMHO there has never been a better time to go back to school for mature students.
Learn the material, get certified, develop a portfolio and sieze the opportunity.
If you have your heart set on working in a FAANG type company and are worried about ageism, research the methods women and minorities use when submitting an application or resume to get an interview. I am certain the same techniques can combat ageism too.
Good project managers are always in demand at any age. You might want to look at that but the stress factor in that position is high. You have to deliver projects on time but you often get little power to demand it so you have to have the right personality to get your team to deliver. Good luck!
Avoid competing with 20-somethings coming out of local coding bootcamps. Here there are multiple groups churning out React + (node or ruby on rails) web devs. Just learning Angular instead would set you apart.
Pick one thing and focus on it. It can be so exciting to learn a bunch of new things but you will end up spread too thin to be of much value. Now that "one thing" can be a full stack of a couple technologies, but pick one of each and specialize in it.
Don't be too niche for your market. If you're in a small market, there may not be a lot of demand for machine learning or rust. A solid .NET dev is likely more employable. Look at open job postings and use them to build up a list of common needs there.
There's a pattern I've seen a number of people successfully follow. Find a somewhat newer technology with good potential value in your market. Learn it. Blog about what you learn. Develop a talk about it and give it a couple of times (Meetup groups are usually desperate for speakers). Produce a video of your talk, either from an in-person event when we can again or one from your desk environment. Start pinging publishers about writing a chapter or reviewing a book on your chosen tech. If possible, get your name on a book cover, even if it's with other authors. From then on, you are "Zero Balance, author of 'Getting Started With Golang Embeds'". Even if you're applying for jobs that aren't closely related, you project a lot more authority than the average coder.
- Make a plan, when are you starting, what do you want to have accomplished in year 1, 2, 3. Commit to it.
- Make a financial plan, I basically lost 65% of my income (ouch), but I knew there were high paying jobs out there. How long can you live on a lower salary or are you good just taking a cut anyway. Do you need to take time off to retrain? What will that cost. For me budgeting that all out really helped.
- Figure out your worst case, for me it was "what if I can't get a job" or "what if I do and after 6 months I hate programming professionally". Can you still get back to your old career, do you want to?
- What skills carry over, do you have some business or commercial experience? Or some background in a field where those skills would help being a programmer?
- Learn your butt off. I've been doing this for 3 years professionally now and I spend most evenings 50/50 coding on pet projects and reading literature/CS books. Its hard but I've managed to make back my lost income and somewhat compensate for the lack of actual programming years. Its also been rough on my social life, but that's the price for me. I figure once I hit the 4/5 year mark I can maybe take a breather. This year though with corona it actually works out fine, nothing better to do anyway.
I cannot imagine having the mental energy or the enthusiasm to spend most of my evenings doing side projects and reading CS books. I'm happy for you, but is that what it takes to do ok in this career? Hours and hours of unpaid work, even after you've got a job?
It just makes me wish I had focussed on being a product manager or something. I'm pretty sure most of them aren't spending all their evenings reading management books.
In my experience, it's much more a stable "stack" than most other areas, and there are plenty of programmers who continue to work (and get well paid) as they get older.
Investing some time with a Raspberry Pi and a couple of micro-controllers at home will get you started on the skillset, maybe some Open Source contributions as a way into the community?
I moved from teaching to coding by first working on open source teaching software in my spare time, then using it as part of my teaching work, then getting a junior coding job at a university. I was a better teacher because of the software I was making, and I was a more attractive junior hire due to my domain knowledge.
Code at home --> Use project at old job --> Use domain knowledge plus project to land first coding job --> Coding career :)
Take any other industry and compare the difference in requirements. Any other industry starts from a license/certification and works outward toward professional experience. Software doesn’t have that. There are many insecure and incompetent people employed writing software and it’s hard to tell them apart.
If you want to write software and be employable you have to temper your expectations. On one hand you need to separate yourself from the crowd by really diving in and making software a passion. Become that master craftsman that loves to build high quality products with least effort by knowing where to find the polish and all the fine details. It is easier to compete for employment when you strive for excellence more than everyone else. If you can find employment easily, because you strive for excellence more than everyone else, you also have options and flexibility most people don’t have.
On the other hand realize most of your peers in the workplace are doing the minimal necessary to achieve employment. The insecurity is high and they aren’t looking to rock the boat. They barely got their current job and realize if they lose this current job it will be quite some time before they find the next job at the same rate unless they abandon software for management. This means there is also some defensiveness and desperation baked into the insecurity that you don’t have with all your flexibility and employment options. These people are not looking for innovation or disruption, they are looking to keep their salary and healthcare.
Just know that difference will be there regardless of which side you find yourself. More than anything else the difference is driven by personality.
For the moment, starting out, just start building things. Write software for yourself. It doesn’t matter if it’s crappy, as you are learning. Practice makes perfect.
If you’re having to learn both programming skills and the domain knowledge, you’ll have a hard time. You’ll be learning two things at once. You’ll be judged on both and it may be hard to diagnose what the issue is. Are you having trouble with the domain knowledge or with the programming? If you’re just ramping up on coding, it allows you to worry about improving coding ability.
Some companies have software adjacent roles such as business analyst, project manager, product manager, scrum related roles, or QA positions that you could look to jump to. From there you can switch to development. Some of those roles don’t pay nearly as well as programming, but the barrier to entry is lower. Often your deliverables would be some sort of document as opposed to working software.
So in terms of practical tips, I would say to look at the ways your previous experience may bring something extra to the table. Things like management experience, communication skills, mentorship/teaching experience, sales experience, etc. are often transferrable across domains.
I'd love to switch over to software development but don't know how to manage the transition. I am willing to take a pay cut.
I have a PhD in chemical engineering and have done a lot of different things: control system engineering, biotech, semiconductor and MEMS fabrication, some aerospace, cryogenics and low temperature physics, vacuum system and surface science, etc. I think there are organizations that would appreciate that I need some investment but would pay it back with interest... difficult finding them, though.
So the question isn't really if someone at 40 can learn to code, it is more if someone, at any age, who hasn't thought in terms of systems can grasp it.
I have met some people who can't code who understand systems in a way that would totally blow away most people, SV, London, Peru, wouldn't matter where you were.
I have also met people that can code endlessly, but couldn't architect a novel system arrangement if their family was being held to ransom, it's a way of thinking.
It used to be that a systems analyst was a profession all of it's own, not really at all any more, and it is my observation this is the really root cause of so many software projects failing.
The first step in any formal analysis is Problem Identification, but it is surprising how often people will spend tens, hundreds of millions of dollars and never formally go thru this essential first step, and are then basically better off buying lottery tickets than hoping for a successful project. (and then go on to blame the consultant, or the market, or the fickle users, when really it was them all the time but they just never realised it).
So code, phht, that is not even the entry ticket, more the uniform.
there are an incredible number of specialties in programming. You don't want to be competing with 50 million other junior developers.
My second tip is unless you are a genius, the learning curve is going to suck. just gotta stick with it and grind it out till the shit is easy. Years of learning curve.
My third tip is talking about programming is an equally important skill as programming. You need to communicate with a lot of different developers often, so you can learn the lingo.
Learn a specific in demand skill set that will last a long time ex: Salesforce programing for SFCC is highly in demand and under supplied, if you pass the certifications you are going to get your start for sure no matter the age.
Find industry specific respected qualifications and get one to get started, once you are in the ecosystem you will be fine. If you want to go work at x startup that may be harder but you can get started in the enterprise space if you want.
Once you are out of the silicon valley bubble you will be just fine in the other major cities or in places that need it but are not attractive to the younger folks.
If its your dream go for it and avoid the problems by getting respected certs to get you started.
It helped that I have (since I was 19 or so) run Linux in some form or another, on laptops and home servers, so in a way I merged my hobby into my work. Never learned programing though until I was 35 or so.
What field are you from?
If you have a background in mathematics and/or statistics, consider transitioning to data science instead.
If you have no science/engineering background, it would be tough.
- Requirements taking from business owners
- Data modelling for data warehouses
- Writing Python code for transaformation (from source table to data warehouse tables) and their scheduling as we are following ELT but EL parts are taken care by HQ
- Writing Python code for alerts, monitoring and dashboarding (using the excellent Dash library)
- Huge amount of SQL
If the answer is yes then I did switch to a programming career when I'm two years from 40. I'd really love to do more ETL but sadly HQ took away most of the job.
Fast forward 10, 20 years, some children, maybe a few wives/ex-wives, aging parents, you just don't have the time without some sort of moonshot mentality.
So I think a lot of it is circumstantial and not actually age directly, I am over 50, and design/write highly specialized software, the sort that ends up averaging a line a day across the life of the project maybe, or definitely that kind of metric for unique code.
I pick up new stuff all the time, I look for better ways and tools in general browsing etc almost every day, experiment with whatever I can get my hands on and find that any slow down in cognition is more than made with by experience and the ability to just "see" things at a glance other people cant.
Don't let age defeat you for no reason, believe in yourself and not what other people say, you will know what you can do fairly quickly, just be honest with yourself and target your strengths and work on your weaknesses.
Of course that's also coupled with the family constraints you mention as well.
Other than that, personally I would avoid working for small startups, this is probably good advice for most people but especially for those who are 30+.
Any mid-life career change carries risk, so I recommend speaking with your family and/or loved ones to make your intent clear. I also saved money for a while before joining a bootcamp to take pressure off of my wife during the training and to ease the job search after finishing.
Most important tip: talk to people. Ask software engineers about their work, lives, interests, practices. Whether you take some formal schooling or not, learning about how people work and why they make decisions will help you move forward more quickly. Without that context it's easy to get lost in a sea of details.
Worth mentioning: I got a BIG salary cut, as expected. After all, I am starting almost from scratch. But working remotely and having the autonomy is invaluable to me. Glad I switched.
It usually takes around 5 years to become an employable programmer at 40 hours a week.
Most of the 20 somethings “starting from scratch”, either programmed at a young age or are so bad at it they can only contribute by working long hours.
Most 40 years aren’t going to spend 5 years in the darkness learning until they can make money.
There are lots of jobs in the industry, especially at larger and older companies, which will just involve working on systems with a mostly static set of technologies being used, but it's worth considering the effort it takes to stay modern with your skills and experience if you're not just trying to stick it out with one company
I worked at a start up where the president had hired her BFF the graphic designer to be an Oracle DBA. That didn’t work out and when I read the notebook she left behind it was clear why - every day she would sit down and try to understand how relations between tables worked and by the bottom of the page it was all doodles of flowers and unicorns. Next day, repeat. Very nice lady, great graphic designer, but running a database just wasn’t her thing.
A few tech skills on their own will be a hard grind I'd guess, so try not change industry entirely.
- you’re competing with fresh undergrads, and most companies have university recruitment pipelines you can’t leverage.
- older people (by default) are expected to have more experience, and perform better than people with no work experience. If you were at your current skill level after 20 years on the job, you’d probably be a lost cause. Be sure to set the expectation that you are a junior developer when applying.
Having said that, it’s totally possible. Most software firms are looking for more diversity of background, and you likely have all sorts of relevant “soft skill”, business, and other experience other candidates can’t bring to the table.
All the 'Yes's reflect survivor ship bias. (ask them to access you once you learn some basics which should not be difficult, if they are willing to put their money where their mouth is)
Of the more nuanced answer is - it depends. ( not elaborating on that because it often will not be useful advise).
And finally the only way to really find out is to plunge in - you will know in 5 years where you stand, you will be either doing well or really miserable.
Choose to work in a domain you are familiar with.
If you have been an accountant, try to find an accountant software vendor who will hire you.
It won't be easy though. Ageism is my pet peeve. I think it is one of the biggest, yet forgotten-about discriminations in tech. Here a shameless plug of a video how much it annoys me: https://www.youtube.com/watch?v=8V6XMvtNKS8
Would be useful if you could list what you've been doing for the previous 24 years.
Technology itself might look hard, but the real challenge is applying it to the industry problems at hand.
Depending on your circumstances, you may have different challenges to overcome. But, they can pretty much always be overcome with enough drive and adaptation.