Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Starting a career as a programmer in my mid-40s
186 points by 5F7bGnd6fWJ66xN on Nov 7, 2021 | hide | past | favorite | 146 comments
I'm fascinated by what I read in HN everyday. I want to start my career in IT. I'm now 44 though, and trained as a mechanical engineer in my career and spent the last 20 years in business (finance, strategy and operations).

I'm looking for wisdom and pointers from the community here.

How can I go about it? I have access to Coursera/EdX and around 1.5 years to focus full-time on retraining. Any advice would be appreciated.




Short path:

- "Learn Python the Hard Way" by Zed Shaw. 52 exercises to teach you just enough Python to be able to continue.

- Next, an excellent course by Reddit's co-founder, Steve Huffman, CS253. It was discontinued from Udacity, but is available on YouTube: https://www.youtube.com/playlist?list=PLAwxTw4SYaPlLXUhUNt1w...

It will take you through the basics of the internet, HTTP, browsers, requests, cookies, databases, caching, hasing, passwords, by having you build a web application. Granted, it's on Google App Engine, but still, most of the router syntax out there is similar (webapp2 from web.py, similar to Flask, Tornado, and others).

You will learn a lot, and you'll see the result right in your browser by having a live web application. You can then take that knowledge and develop tools for yourself and others and put them online for all to access and use.

If you want to do it better and "leap-frog", read Brett Slatkin's "Effective Python: 90 Specific Ways to Write Better Python". This book will make you write code as if you had been coding for years... But, that's only doing it "right", you need something to do right in the first place: you've been in business, strategy, and operations, and you've been trained in mechanical engineering: I think you are in no shortage of ideas and things to code, so have a it.

You're in an excellent position of having been at the intersection of a bunch of cross pollinated fields, and you'll have a new skill to bring them together and do wonders. All the best!


That Steve Huffman course looks very nice for beginners to web development. Also looks like a nice pairing with my blog post, "Build a web app fast: Python, HTML & JavaScript resources".

https://amontalenti.com/2012/06/14/web-app

This is still my #1 blog post by readership, even years later. (200,000+ readers.) It was originally published in 2012, but I did several updates over the years, including a 2018 update for Python 3 and "Modern" JavaScript (SPAs).


I wrote a pretty similar blog post in 2013, based on my experiences learning to code in 2012. It's shocking how little has changed since then. Like probably there isn't a lot of reason to learn Jinja2 at this point, but even jQuery and Bootstrap are just as relevant as ever.

And Angular is actually good again, so my recommendations for 2022 would likely be closer to my recommendations for 2012 than to my recommendations for 2017.


I endorse every single word of this. As an EE pivoting to SWEng I completely endorse Zed Shaws book LPTHW and LMPTHW which teaches you to think about composing larger programs. You get a lot of practice on creating common Unix utilities. And once you have some Python under the belt migrate to Effective Python by Brett slatkin. Most importantly you should have an end goal, my initial goal back on 2006 was to get an entry level EE job that payed me a salary to support me and my wife and sponsored H1B. Fast forward to 2021 I am looking to get to work on Web3.0(solidity smart contracts and Decentralized oracles). So I am planning to learn Solodity using Brownie, React for Front end to crate Dapps and Algo/DS to pass the coding interview circus.


Good advice, but anyone doing this now should be using: "Learn Python 3 the Hard Way." For whatever reason he renamed the book.

edit: The Steve Huffman course is also how I learned. It's absolutely fantastic.


Yes. I was going to correct it, but I wanted to avoid the conversation or the thread going into that direction.


I heard about udacity on the radio and by chance picked Intro to python and then CS253. I still have a little Twitter app running on GEE. Mind was blown. Great courses, shame CS253 has not been kept and updated.

I particularly remember the story in the course of him having a list of all his users usernames and passwords unhased on his laptop and it was stolen. He said he was embarrassed and emailed them all to let them know. Lesson was to hash passwords. Cant remember if that was for reddit all some other project he did.


There was someone commenting on how it was sadly discontinued here https://news.ycombinator.com/item?id=18568798 and I commented on the proper link of what became a hard to find course.

I still have access to it on Udacity when logged in: https://classroom.udacity.com/courses/cs253

But it's hard to find.


I would like to plug my free interactive courses [1] on fundamentals of computing and Python. It is designed for beginners.

You can check them out without signing up and they are also available as free online books. [2]

[1]:https://app.primerlabs.io

[2]: https://primerlabs.io/books


> You're in an excellent position of having been at the intersection of a bunch of cross pollinated fields, and you'll have a new skill to bring them together and do wonders. All the best!

That’s it, really, even without the gloss: OP’s background should stay firmly relevant to make him stand out. The new tool he adds to his resume is vertical (aka applied to his own domain expertise) and widens his professional reach… in this perspective, learning Python to perform industrial analytics, predictive maintenance, data-informed financial analyses, etc. seems a smart, openly justifiable move.


But why Python? There are many more jobs for JS


Python is typically taught in 101 classes because it enforces some good practices, is fairly quick to pick up, and if you have a math/finance background, can more easily lead to some quick and fun projects that can be bootstrapped in a simple GUI in a couple days.

Disclaimer: I prefer Ruby and JS over Python, but the amount of projects and roles I’ve seen lately that recommend or require Python experience seems to be growing. Not sure if that’s just related to the field I’ve pivoted into which has a stronger focus on data analysis/algorithms


JavaScript more or less limits you to front-end web programming (I know there are exceptions but realistically this is what most JS positions are after). Not great if this person’s internet is eg embedded, machine learning or, in keeping with their experience, large enterprise systems.


That’s not true at all. Plenty of jobs for Node dev at any scale.


Python teaches you how to code. Modern JS teaches you how to "npm install"

But really though Python syntax is simple and readable and I find people that learn it first adapt to other languages very easily.


Citation needed. Python is the language of AI and ML. Those fields are popping off right now.


Granted I'm no JS expert, but I believe that Python would be a better fit for OP due to the larger number of scientific computing libraries and OP's background as a mechanical engineer in addition to what you just mentioned. Someone else advised that OP leverage their ME background to help them learn programming, which IMO Python is very well suited for


I personally found "Python Crash Course" by Eric Matthes to be a much better and effective book.


I can vouch for Steve Huffman course.

Maybe some other recommendations from my personal list might be of use to you - https://github.com/damaon/BestCSResources


These are good suggestions, though I would argue that Magnus Hetland's books are even better for the same type of thing!


If I were you I'd try to combine programming with what you're already doing (finance/business). Like learn Python and how to extract data or something, thats easily added to your current knowledge. Then later you can learn some basic web development and build nice dashboards. There are some jobs out there for finance people who can program - That's what I'd go for if I were you. It's a shame to let all your experience go to waste by learning something like systems programming or android development, don't do that I think. The "How" is really easy, simply google/udemy/coursera/etc etc. But spend some time on figuring out What first.


Based on personal experience, I can't recommend this enough. My original background is in civil and environmental engineering; I discovered my love of programming after I'd been working as a civil engineer for a little while, automating GIS tasks. After that I fell deep down the rabbit hole and found a job as a full-time software developer at age 30. Now I'm back in the civil / environmental industry, but with several years of real world software engineering experience. It's paying off in a big way. I'm not the best programmer, and I'm not the best civil engineer, but I have more experience in both of those things than anyone else I know. Gives me a big leg up in a pretty niche area.


+1.

Your experience is synergic with programming. Use it to your advantage. Learn a bit of python and begin solving little problems for you. Do it for a while and you will know how to program.


Indeed. I started as a mechanical engineer, writing scripts to solve recurring mechanical stress and thermal calculations. Then i moved on to robotics, then autonomous driving, now I'm making video games. Linear algebra, calculus and code is a nice combo.


Sound advice, but where do you find these hybrid jobs? Especially when it comes to programming, companies seem to evaluate you in one specific language/skill, and seem to have zero interest in the rest of your background and experience.


That's not always true. In a job board try playing with keyword combinations like Python + Financial Analyst/investment/trader etc etc. You'll see them. I was once thinking of doing the transition the other way around (from software development to market/financial analysis) so I know the jobs are there. Also - use your network and talk to your colleagues - someone must know someone who works in finance but does some/a lot of programming.

Here are some examples from a quick glance: https://www.linkedin.com/jobs/view/2762895590/?alternateChan...

https://www.linkedin.com/jobs/view/2786689624/?eBP=JOB_SEARC...


Agreed. I found my job by just searching for 'python' on a board for my sector.

The only reason I've been able to move into a coding job is because I have very deep domain knowledge in a pretty niche area and a bunch of other 'added value' that makes up for my relative lack of experience with any particular stack.


> trained as a mechanical engineer in my career and spent the last 20 years in business (finance, strategy and operations)

If you haven't developed an allergy to this background, and you're interested in the business process side of IT, I'd recommend building off of what you already know. Domain experience is invaluable and far too rare in technical roles.

This has been my own path. I knew just enough about computers to know that tools existed to eliminate tedium from my workday, so that's where I started. I didn't have to step away from my career at all, so it was very low risk if it didn't work out or I discovered I hated it. It did work out and I discovered I enjoyed the process. Importantly, I discovered that the grind of writing actual software or doing standard IT work doesn't agree with me, rather it's the problem identification and solving process. So, now I'm straddling the fence between the IT person who does lots of automation work, and the process improvement person who tries to make the business run smoother and everyone's workdays better. It's a rewarding and appreciated role, and one where age (also in my 40's) is a real benefit.


One shock of programming at job vs class-based learning is the art of working in an existing codebase with many other coders and stakeholders. You might like programming for fun, but might not find it as fun to do it as a job.

This means things like

- reading and understanding an existing, complex codebase

- solving your problem in a way that doesn’t harm existing functionality

- refactoring old code to solve new problems or to be more reliable

- common workflows using version control

- writing testable code that can evolve over the years

- negotiating technical scope with stakeholders

- navigating technical risk and technical debt

I think this stuff is teachable, but it’s hard to give someone a project where the existing code base must keep working (or else the company goes under) but also here’s 4 features to implement in a given aggressive timeframe. Much of having a job coding is about these kinds of decisions.

I say all this so you can decide whether this is what you want or if you just like coding as a hobby.


For what it's worth, I love coding as a hobby, and I hate all those aspects of coding as a job that you specified. However I still love coding as a job because it lets me do all the fun parts as well. Even if 75% of the time you are fighting with an unstable test suite or trying to budget for time on a dozen competing priorities that still leaves 25% of the time where you are solving interesting problems and doing something actually creative.

Don't let all these scary sounding challenges put you off. If you are smart enough to learn how to code then you are smart enough to learn how to do all the other boring things. And a job where 25% of the time (hopefully it's more than that for most programmers) you are being paid to do something you love is a great job.


There is a lot of BS in tech and IT, even on a forum like HN, so consider that half of what you read on HN is written by people that are either delusional or just plain ignorant.

Think about why you want to learn programming. For me it's because I like to make stuff and programming is a natural extension of that, but other people have different motivations.

Not every programming job aligns with every person's interests in the field, so as you build your knowledge it is as important for you to understand what you enjoy as understanding various technologies.


> Think about why you want to learn programming. For me it's because I like to make stuff

Conversely this is why I want to leave programming and explore something else. Though I’d add the addendum if I like to make “cool” stuff (subjective as hell, I know)


I did this early 40's

Don't focus to much on certifications or qualifications. Do focus on a portfolio. Find things that scratch your own itch to work on and learn


Can you say a bit more about your experience? My profile has my email too if you prefer non-public communication. Genuinely interested in your journey.


A little but I wouldn't want to dox myself. Essentially I'd been doing some related stuff as a byline in my previous career as well as some enthusiast stuff and private freelancing. I cashed out and did some dedicated study to fill in some gaps and then started jobhunting. Overall transition took 1 1/2 years, plus a further 8 to get into my current specialty and pass income parity with previous career


8=months !


What do you do when you don't have that itch?


You probably won't be successful. As the landscape currently is, and has been for quite a while, you have to really enjoy doing it to the point where you self educate quite a bit. If you aren't willing to do that you will fall behind your peers.

It's similar to playing the guitar. The people who are good at it don't just take a guitar class and call it a day, they spend hours working to improve their playing, learn a bunch of songs, learn to play them perfectly from beginning to end, and learn to write their own songs. That's what it takes to be a successful guitar player. Coding is similar.


To be honest, if you don't have some external driver meaningful to you then it can be pretty hard to absorb the knowledge


Are you employed as an SWE? Web dev?


Platform engineering lead


I did it in my 30s. Totally doable for a determined person in their 40s, engineer at that.

It pains me to see many friends and peers wasting their lives with low pay dead end corporate jobs they clearly don't like. I am glad you've chosen to reinvent yourself. Being an older person among so many smart 20 something guys and girls sure keeps things refreshing

Try web stuff, python, databases, 3d graphics, and the things you like.

Even though it wasn't my first language, I'd think python would be a great way to play with something simple and powerful. If you're smart, may as well skip those and go straight to low level like Rust or something.


I'm about 30 and working on making this pivot. I'm worried I'll somehow box myself into some sort of dead-end boring programming. I don't know why but the thought keeps popping into my head. It seems like in order to be competitive enough for a programming job that isn't basically the same tier of drudgery as a dead-end corp position will require me to spend all of my free time programming.

I love being immersed in silent solitary work building stuff, but I love being around people and being relatable to them just as much.


I wouldn't worry too much about this stuff. Even if you get stuck somewhere for an year, it's not the end of the world. Once you make the transition and gain some skills, you'd have more options and be free to explore them.


If someone asked you the best way to become a good mechanical engineer, I bet you’d tell them to start building something.

If they asked you what to build, you’d tell them to build something that’s useful. Better yet, build something you would use.

If they asked what resources to use and learn from, you’d tell them whatever resources necessary for the task at hand. To focus on the practical more than the theoretical, while filling in gaps of time learning theory.

If they asked you what to do when something fails, you’d tell them to build it again until they build it right.

And when they ask you what to do when they’re done, you’d say: “now go and build something else”


> If someone asked you the best way to become a good mechanical engineer, I bet you’d tell them to start building something.

Actually, I would ask them to be more specific.

And the more specific they can describe the goal the more likely they are to achieve it. The field of mechanical engineering is huge and this is the same for programming.

Is the op looking to make web pages, do FEM simulation (since they're an ME), embedded programming for robotics, etc. etc.

Each one of those is going to have a different path.


A friend and customer (I freelance doing programming and system admin) already in his early 50s, with a career history in law and business, asked me to mentor him so he could learn programming and contribute to his own project. 18 months on he adds value to the project and is programming above beginner/junior level. With another year of practice he might have the skills to make a career in programming, though that isn’t his goal.

We started with relational databases and SQL, since that’s core to the application we’re working on. He originally asked to get involved to run ad hoc reports. Then we moved on to web development, front- and back-end. He struggled trying to piece together all of the parts that go into making web sites, but I focused on fundamentals so eventually it would all make sense.

I think this worked for my friend because he was able to jump in to a working system that is still under heavy development, for a business domain he understood, and the rest of the team agreed to help him learn. That was pretty much how I got started in programming 40 years ago.

It seems that very few companies are willing to train and develop junior programmers, preferring the tech interview performance and the illusion of hiring the top 5%. It wasn’t always like this. If you can find a project you can jump in to with patient programmers who will help you learn that’s a great path, but such opportunities seem few and far between.


As a 40 year old who has been in software for last 20 years and managed hardware+software product construction a few years, from implementation to management, here’s my advice given your experiences and time constraints:

* Play to your strengths

Leverage your experiences and map them over to software. The only real difference is that the QA and shipping process can be updated hourly vs hardware which takes months at minimum, so build perfection isn’t as hard of a constraint.

Leverage your finance, strat, and operations knowledge. That’s basically the Eng. Manager’s job (Director level/VP level?). Most coders can’t tell you the business value of their code/tasks - that’s a problem to bridge the value prop back to the business side. Also most “Eng” think there’s infinite resources, but don’t account for costs $$$ to use cloud services.

My advice: * learn the software construction process * DO NOT GO INTO IMPLEMENTATION - unless you’re super passionate about it, there’s no way to be proficient or good at it in 1.5 years - college grads will lap you. CS grads by default have done it for 4years and are still usually not that ready to switch from solo academia into a team, corporate standard.

Hope that gives you a perspective to consider!


Thanks for the comment. Can you say a bit more regarding the software construction versus implementation note? I'm not sure I understand the meaning. My profile has my email too if you prefer non-public communication. Genuinely interested in your insight.


From the rest of the parent comment, I imagine construction is the whole software development lifecycle [0].

In particular, understanding the finance / business side gives you a huge edge in the "figuring out what to build" part of the cycle because you'll have a deeper understanding of the business need and value proposition.

Implementation is picking which "language / framework / paradigm /architecture" is used to deliver the business need. You will need to understand these at some base level, but becoming an expert in them won't have the ROI that learning to manage the lifecycle will.

Lastly, when learning about software- literally nothing compares with doing it side-by-side with professionals. Do a free course but then immediately start applying. You'll learn more in a few months on the job than you will in a few years of self study.

[0] https://www.upwork.com/resources/what-is-software-developmen...


That’s exactly what I mean, thanks for explaining!


Before the how, can you give us some thoughts on the Why ? Why are you interested in doing this at age of 44 ? Money is probably a factor but I am curious. You can of course do anything at any age and 44 is really not that old to start a new career. But the why is critical because you have spent all these years in a trade and now willing to reboot so you have to be willing to give up a lot and start from the bottom which may still be better than where you are currently but we don't know.


Very worried about staying professionally relevant for the next 20 years and earning money to support my family. All along my career so far, I've played it safe to choose paths that I deemed were conventional. Looking back, it feels I didn't choose IT/software even though I was interested in it. In the everything is moving to a software world, I want to retrain asap.


HK is heavily geared towards FAANG companies, or the startup scene. Truth is, there's a vast, vast world beyond those that need programmers - and if you just want a "normal" job where you get to write software, there are tons of those. See the other comments here for more specific roadmaps.


The field is huge, and if you take a wrong turn, you could waste months.

What is your goal? Earn more? If so, then look for jobs in your area and see what is “hot”. The role you call “programmer” is nowadays called “software engineer”. Do a search for that, make a note of requirements from every job you can find (top 50 jobs). Google every common keyword and see if you can figure out which programming language is “hot”. You will also need to decide what you want to do with that language: desktop, web (backend) or web frontend (I’d recommend to stay clear from fullstack and low level).

The road ahead is rough, but I’m sure you can achieve what you want, if you ask the right questions before mindlessly diving in.


>I’d recommend to stay clear from fullstack and low level).

How can steer away from fullstack when you kinda need it? Or maybe I'm to excited to jump on it.


They're referring to full stack as a single developer. As a team, you can each focus on your respective parts of an application. There are benefits to being a "full-stack" developer for smaller projects, such as understanding all the working bits without needing to communicate with others, but full-stack jobs don't seem to pay as well as a job within a specific scope like backend.


Given your business background, maybe look at getting into analytics and reporting. Usually these areas have some low code options where you can do a lot with just some SQL knowledge. Knowledge of the business can be helpful here.


Nowadays the IT world is so huge you have to narrow it down a bit. People working in FANG in the Bay Area do very different things to the helpdesk of your local school district. You should narrow down what exactly you mean. Things like the former will be very difficult to achieve, things like the latter should be easy.


Programming is not so much a career but a sequence of interrelated jobs leading somewhere.

So, go after the things that interest you, learn them well, and try to manage your way into the related market with whatever you have at your disposal. The computing market is pretty forgiving with failed attempts, not so much with lack of motivation.

Play by the rules in the interview game. If you want to get into somewhere and they do X at the interview, train and do X to the best of your abilities even if it makes no sense.

And be approachable, make as much contacts as you can. This is a contact-based market.


Consider iOS development, if for no other reason than the amazing and freely available CS193p from Stanford. I took that route from 0 to FAANG in my 30s.

As others have said, focus on a portfolio. Start with a course like C193p and then build a few good quality products.


I think as a mechanical engineer, your prospects are good. Many places will look at any kind of engineering background as "good enough" and then want to start talking about code or process or whatever their interview is all about.

In my opinion as a 20 year software veteran, the skillset many software engineers lack is having a bigger world-view of company operations and why they are doing what they are doing. Some of that is obviously on the company structures they've been exposed to, but decent engineers with really good business sense go far, fast.

As johnwheeler said in this comment section, just start building something. I bet it comes to you pretty fast, and if you have an engineering brain, you'll start seeing the pieces move in your head just like any other system. I really don't think you need "retraining" per se, just start applying your business sense and engineering skillset to software. Consider even looking for companies where both are required, like places that build mechanical things controlled by software, and look for roles that offer the potential for some cross training.


> In my opinion as a 20 year software veteran, the skillset many software engineers lack is having a bigger world-view of company operations and why they are doing what they are doing. Some of that is obviously on the company structures they've been exposed to, but decent engineers with really good business sense go far, fast.

As a former mechanical engineer, I came to say exactly this. Engineers in the traditional realms (mechanical, electrical, chemical, etc.) operate in the business domain all the time, even the junior engineers. Conversely, software engineers are usually isolated from the business domain until they reach the most senior positions. This creates a serious skills gap when the time comes for software engineers to make business decisions.


I did it (mid-40s, married, with one child), but I did have some past IT experience. I have seen others do it, though, with almost no IT experience.

I took an in-person course at General Assembly in 2017. The group support with the immersive environment was exactly what I needed to find the confidence and excitement to carry this career transition through to fruition. I spent many 12-hour days coding non-stop. Personally, I don't know if I could have done this on my own in a non-interactive environment. I still keep in contact with some of the folks I graduated with.

If in-person is not an option, make sure you find a way to have one-on-one interactions and peer reviews. The communication of your work to others is key.


You want to start a career in IT or in software development? Those are two very different tracks (and I can only give you advice on the latter).


Seems going into IT may be more financially rewarding for someone later in career. OP could probably more easily pivot to being an application SME for something fintech or maybe mech-E related than a SWE.

But I am curious myself too. I’m hitting 40 in a few years and will have 10 solid years of IT at that point. Programmings always been something I’ve dabbled in on the side. But I know that market has ageism probably stronger than in IT.


What is an "application SME"?


doesn't IT include SWE? like IT is everything tech related?


Not in common usage within the US tech industry (by this I mean technology-first companies, not just companies who happen to have some developers). In those companies at least, if you say you want to get into "IT" people are going to think you mean tech support, system administration (generally for internal systems), etc. I don't know any professional software developer in one of these companies who would say they are "in IT." (Yes, it's a huge industry and I'm sure you can point out exceptions.)


IT doesn't have as much dev as it used to - the amount of business functions that can be handled with affordable SaaS products takes care of a ton of software needs for many businesses. There certainly still are developers in larger IT shops, but anymore you get more "Business Analysts", who configure and maintain SaaS platforms, maybe with some light scripting and coding, instead of a team of devs writing code from scratch.


'Functional Analyst' is the usual term if you're looking for jobs in this space - heaps of jobs in Salesforce/Dynamics/SAP/etc - surprisingly good pay in this area, but not really the start-up life.


In a software is eating everything world, I want to retrain to learn all skills needed in IT/Programming to remain relevant.


You might find building a 3d printer or CNC system a natural route into software; tweak the firmware on the open options for those.

If you want to get to throwing fun things around as fast as possible look at game modding or creating your own games with some of the scriptable game engines. gentler intdroduction with quicker rewards.

Just a couple ideas that popped up first. What kind of programming are you looking to do? do you get excited by the possibility of squeezing a few more bits out of noise than current data compression algorithms can? Or do you want to make the perfect digital emulation of a furry dolphin avatar? There's shared knowledge there but further indication of your interests can help.


Just wanted to say that you don't necessarily have to be a "programmer". You can pursue Cloud Certifications (Data Engineer, Scientist, DevOps, etc). Also, system implementation such as SAP, Dynamics, etc is another option. Good luck !!


Make friends in the industry or working at companies in roles that you want to join. You will have to tap these connections to get interviews and consideration for jobs, once you have some education to put on your resume. The industry is not easy to jump into completely cold unless you are a 20 something coming out of college with a bachelors in CS or similar. It's not impossible to get a job, but it's much more difficult to get that initial foot in the door and past the huge machinery of HR resume keyword and experience scanning.


>Make friends in the industry or working at companies in roles that you want to join.

Difficult to do when people feel attacked when you MIGHT have more knowledge than these people. I'd say might, because it happened before.


String manipulation is the gateway drug to programming, as it requires no dependencies and the sky is the limit for arbitrary logical games.

Biggest challenge will be choosing a language and executing the program!


First of all welcome!

I hope the comments here are helpful. We would love to have you -- if I could speak for the world of software engineers at large -- make the transition, your fellow engineers are here to help!

The Changelog did a podcast about Sean who learned in public. By being humble and open to learning he bootstrapped his way into a career. He mentions FreeCodeCamp and then did a paid one after but your results may vary. Check out the conversation here: https://changelog.com/news/P5Gg/visit (I've no affiliation with The Changelog other than being a fan).

How do you like to learn? For me videos don't really work. I mean they work to get the basics but I have to build something to really get the knowledge in my skull and to keep it there.

There are a number of free resources via Youtube and Github like this (https://github.com/ossu/computer-science) that just require the investment of time. Consider a blog to log your learning over time the feedback could be valuable.

I hope that helps. Find me on twitter @gigatexal and via email alex at alexandarnarayan dot com


Make something that addresses a problem you know about based on your own experience.

I am 50. I made something which solved a problem in my workplace 15 years ago. It still makes money for me.

My programming skills at the time were rubbish. Copy, paste, tweak. No reason why you can't do the same.

View your journey as fumbling through learning a foreign language. Rather than joining a book group full of knob-heads who like to make other people feel inferior with their better way of doing things.


I'd consider a coding bootcamp, the good ones give you a very minimal brand, but given your business and engineering experience my guess is that it's all you'd need to make the switch fairly seamlessly. You may take a compensation hit.

There are an enormous number of opportunities for software engineers right now, the market is hotter than I've ever seen it. We desperately need people to be retrained, cross-trained, any version of trained.


> You may take a compensation hit.

Does not align with...

> the market is hotter than I've ever seen it. We desperately need people

Pick one.

If the software / web businesses aren't going to compete with other engineering businesses, they're not going to compete. At the end of the day it's pulling recent grads from the same pools (math/eng).


Mid 40s Mech E switching to entry-level SWE may very take a comp hit, even if the SWE field is indeed the hottest I’ve ever seen it (including 1999).


Which verticals are not saturated yet? Web dev is almost impossible to get in.


Data engineering is full of opportunities.


I think all verticals are really hard for juniors; it's not like everyone is looking for junior C devs...


In my humble opinion, and also having helped lots of friends both in and out of tech, one of the best ways to learn is to find a couple of really good books on programming and read them cover to cover (got this idea myself from an article on learning programming). One thing is you need to find books that are tutorials and not references (as a mechanical engineer, you probably have seen the difference yourself). A good place to start is Python, and then possibly C programming - the reason is for C requires you to learn a lot of the internals of a computer - Hmm, you probably had to take a programming course back in college (Fortran?) so you maybe able to pick up Python quickly. Although, some people don't like to just book learn and need a course to keep them on track.

... if you want guided instruction (besides just online courses), to do things on the cheap, you can also audit classes at your local college - just find some key courses in Computer Science and ask the professor if its okay to sit in. I did this for two years for a second interest of mine, music-theory.


I got started in mid 30s from an arts background. 6 years on and I'm a senior engineer at a major tech company mentoring others, designing systems and helping lead a team. Best decision I ever made to scratch the programming itch, not because of career progress per se, but I just love programming. For me it's mainly the intrinsic joy of it.

My advice is to get your hands dirty with some tutorials and a project to confirm that you definitely have that intrinsic love of programming and writing software. It's a hard career without it but a great one with it.

Your experience and maturity should also be seen as a great asset. What you might lack at the start in technical knowledge, can be partially compensated for by this. Even as a junior I found I was good at working on a project, knowing what the team should focus on, talking to 'the business' and acting as a bridge, taking ownership, showing initiative and being a self-starter. These are things you're more likely to have with age and they are definitely valued by good companies.


Build a tool that you want to use. Could be a TODO or note taking app, alarm clock, a tool that scrapes your favorite site, anything. But find something that you are going to enjoy building and using.

Then understand the technology stack you will need to build it. Then learn about that stack from Coursera/EdX. Finally build that tool and reap your fruits. :)


But what about marketing? It’s ok to build a product but if you want money you’ve got to sell.


The way I understood it, OP just wants to learn programming. I was suggesting "build an app you want" as means to an end.


I think as other people said, you'll want to decide what "IT" is. If you want to fix end user PCs and run ethernet cables, that stuff doesn't pay well and you should stick to ME.

If you want to do SRE or SWE, the easiest way is to sign up for a bootcamp. All walks of life pivot in these programs and already being an engineer will make it a cake walk. The community college might have some programs too, but the boot camps tend to teach more modern skills and do job placement since that's often part of the program price.

I think most importantly is to decide what industry you want to work in. If you want to stay in your previous industry, you'll have a leg up since you already know finance, and crypto is hot now so there's lots of new tech and money to be made.

I think 3D printing is the next wave, and if you are already an ME, you can hit the ground running making robots that can print houses, car parts, rockets, etc.


Do you have a training/learning curriculum ready?

You'll need to study the following.

* Computer science basics. The fundamental building blocks for computation. The bread and butter of algorithms and data structures. There's no way around this.

* You'll need to learn at least one or two programming languages in order to create actual computer programs and their related tooling.

* You'll need to learn at least one computational platform and its APIs and tools and generally how to build software for it. For example one of Windows, Linux, Android, Mac or web. Choose one.

* You'll need learn how to apply software to solving problems in any particular domain.

* You'll need to learn a ton a about the tools and practices of the trade. Distributed computing, databases, embedded, debugging, tools chains, design patterns, frameworks, APIs, libraries etc. Not all are applicable. What you should focus on depends on what what you want to work with and in which domain.


Here is the best piece of advice you will find in this thread: don’t get into it. It’s bullshit. The tools are broken. The standards and frameworks are broken. The web is a broken piece of shit. The landscape looks like a schizophrenics sketch pad. It only becomes clear after you get deep enough. Stay away.


I don't have any specific advice, but just want to say good luck. My mom just became a board certified psychiatrist at 60 after going through all of med school and residency. Before that she was a priest in the episcopal church. Making career changes late in life is hard but doable. You can do it!


I will recommend: - safaribooksonline, - learn from latest/greatest books and vids, - watch out on youtube tutorials and free tutorials in general (as long as you see ads), there are ppl who want just clicks and show a lot of bad practices. Use reputable sources where you can. Its as well a bit different for coding and for hacking/cracking.

I think 3 best books on development ive read are: - the pragmatic programmer, - clean code - working with legacy code

My favourite on hacking and re is: - hacking the art of exploitation

Ive been developing various software for last 20 years and now im getting more into security as dev is simply not complicated and exciting enough/any more. i did crack cd checks and shareware and other stuff when i was a bit younger (im sure there are fans of softice in here :D) and i still know how to disassemble software and modify it.

So being a developer for so long helped me to take the hacking and re stuff easier today, because in the end if i know how to write software (even if its quick, im not telling you to learn design patterns) then it lets me find entry points, break and abuse it easier.

Get practical if you want hacking :)

1. Hackthebox.com 2. Vulnhub 3. Search for crackme's if you want to get more into reverse engineering

Im very strong introvert and self-learner so it took me some time to understand importance of mentorship or just being in group of ppl with similar learning targets. A smart advice and some tips can speed up your learning process and save you months. Find a group, join discord and ask a lot of questions.

Im teaching my 57 years old mom to code so no stress, its a matter of decission and effort, im sure you can do it if you want and especially if you have such background :)

Learn intensive cause then you'll get to your target faster!

Its nice to read that youre 'fascinated', me too. I must admit that getting my first reverse shell and rooting 1st box gave me amazing excitment and fulfillment :) now... hurry up, get yours as well!


Late 30s here. I got started -- with no background in science, stem, or programming -- in my early 30s. I'm an SDE at a FAANG company now and love every minute of work. The six-month bootcamp I attended was disappointing, but it got the job done. Then followed several years of getting my bearings, learning, working for a guy I didn't like, and studying quite a lot on my own. I can tell I'm still a beginner, but I'm making progress and am happy about the change.

Take classes. Work on coding problems. Read technical papers and books that might be just beyond your reach. But as many other have said, yeah, until you decide what "IT" means for you, I'm not sure what advice to give.


Who do you know?

Being outside the traditional pipeline makes it less likely the traditional hiring processes will result in a job. Moreover, the further your education is from the traditional pipelines, the further the odds against the traditional hiring pipelines resulting in a job.

If you are going to spend time preparing, social preparation is probably at least as important as technical.

Perhaps more. Because the ceiling on benefits over a limited time is much higher and your starting point in your forties has twenty years adult experience over a fresh grad. While even if you’re technically 10x the average entry level programmer, you will still be just another entry level programmer.

Or to put it another way, if you want a job, look for a job. Good luck.


I happen to have attended a very good school for undergrad in mechanical engineering. And have many of my classmates from Computer Science working in FAANGs and other leading SaaS.


Tapping into the alumni network is the kind of thing I am suggesting.

If for no reason other than you will get direct relevant input about the company's where those people work.

And because those people are also forty something, so they are in a position to influence hiring.


I am 49 years old. I started studying programming 4 years ago. Now I understand what I did in the wrong direction during training. I didn't understand what I wanted to get?

- WEB development - Data analysis - Automation - ... etc

Accordingly, if I were making a decision now, I would start with a full course on computer science. To refresh my horizons, because I'm not young anymore. And after that, I would move on to choosing a technology stack. And only after that would I make a choice of programming language. The good news is, at my age, there is enough system experience in my head for good ideas in the implementation of projects. And it inspires me a lot.


Well, I'm pretty sure you would need at least one programming language to complete the computer science course though


I had a great colleague who started programming at ~35. And the thing I noticed with him, which I strongly agree, is that you should pick something you like and start a little project. Nowdays is kinda impossible get stuck, StackOverflow + Youtube pratically solves every problem you can go into while learning.

Basically if you really do have passion and conclude any little project you started ( it counts lot of points in cv, sometimes more than references...) I think you can get easily hired in low time as a Junior programmer.


What in IT interests you? Examples might include "system administration"; "penetration testing"; "backend software development"; "machine learning" and so on.

If it's hard to answer that question, you might try going through your HN history to re-read the stories you upvoted. What stands out as a common thread?

I'd do this before trying to learn anything specific. Without a clear goal, you can send yourself on a 1.5 year rabbit hole with nothing to show for it in the end.


I love cryptography and read up everything that Bruce Schneier writes. It feels too far fetched in making a career starting now though.


In my opinion, Python is good but for a job, it may require experience than Python. Frontend (JavaScript) is a good place to start. In general, when you work with frontend, you will get exposed to other concept of the system, backend, database and so on; also if you are more interested in design, you can go to product design from frontend; maybe you want to go mobile, you can do that as well. It is a good place to start your career.


You are a Mechanical Engineer and you have experience in Finance/Strategy/Operations which makes you well positioned to move into Programming/Using Computers in those domains. Your Domain Expertise is the key. Leverage that and learn programming on the job. I can assure you that people who are Domain Experts and well versed in the use of Computers in their specific domain are a rarity and thus have a great future.


It depends.

Do you have the money? Do a full undergraduate degree in CS.

Are you scarce on money? I would recommend you develop some useful broadly useful skills (HTML/CSS/JavaScript) using any quality resource that is available to you and that suits your level. As soon as you are able to do some programming, try to land a beginner job and learn on the job. Apply for a better position. Repeat.


So, I switched my career to software development at the age of 40. Fairly simple path for this in the UK - spent 3 months at a bootcamp (Makers) and then I got hired 6 days after and been working as a software engineer now for 3 years.

So, I would recommend Flatiron or something similar. Self study will not teach you how to work in an industry - a proper bootcamp will.

Just my two cents, your milage may vary


With your technical background you are really no worse off than most software people who have to learn the latest new framework/language/stack since these change every 2-5 years. Some tools last a long time such as Unix shell commands but I think I have used 5 different change control packages over the years (although git does seem to be the leader for a while).


Preferably instead of MOOCs you’d take a course at a bootcamp that places you at an internship or gives you a real world coding project. In the best case you’re going to be judged against new grads who’ve already had 6-9 months of cumulative internship experiences doing real world coding. In the worst case you’re being judged against other coders with 20 years experience.


I'm in my late thirties and starting my first 'proper' engineering job next week. The career change process took me about four years all told, but life gets in the way and naturally YMMV.

I was working in administrative and funding roles for non-profits and hated it. I'd been doing it since school and had no idea what else I could do. I ended up going back to study, choosing a social science Masters with a strong quantitative focus. I really clicked with the code side of things. I'd done bits of BASIC, VBA, and Pascal as a kid, but nothing more than ridiculously over-worked Excel books since then.

I actually picked up Python at school before taking a module in it. A friend who knew I was interested in learning to code needed some data from a website and asked if I'd be able to scrape it. I said "No, but I think I can work it out." I still recommend a scraping project to anyone trying to learn to code. You need to have this very basic understanding of http requests, HTML, and flow control in whatever language you're using. And you get something out of it at the end.

I love reading programming books, but I find them best for consolidating and pushing forward skills. I feel I've learned best when working on projects, and personally didn't get on with things like Learn Python the Hard Way or online courses. May just be my learning style though.

I've built my skills though finding lots of little projects to do; either as part of my course, or later for a (sort of) related job, or in my free time. Whilst reading is definitely important, try and find stuff that interests and excites you that you can find an excuse to code with. Things I've really learned from include:

- Building a tool to create corporate networks from the UK Companies House API;

- Scraping and analyzing sales on a darknet drug site;

- Getting R code running in Python (Python sucks for survey analysis, R sucks for day to day use);

- Reverse engineering a police incident map to get at the underlying data;

- Working out the distance, by road, between any given point in my city and a fire station;

- Using the Blender Python API to make custom 3D-printable bases for my wargaming minis.

Good luck! It's daunting changing career and has been a slow and frustrating process for me sometimes. Totally worth it though. All the best to you :-)


I started programming at the age of 8, I am now 50.

The first thing to ask yourself is weather you can sit down and consternate for 10-12 hours without talking to anyone.

Second you should practice (not unlike practicing for a marathon) . Start easy and go up.

Third, try to become apprentice to some professional programmer, and learn from him (even for free), try to help him with some tasks.


Programming for 40 years, professionally for more than half that. I don't, as a rule, "concentrate for 10-12 hours without talking to anyone." Nor do I see the best coding from people who do that.

Most programming as I have experienced it is a mix of solitary and social skills, and there is room in the profession for a fairly wide range of weightings of the two of those.

The apprentice idea is interesting. I don't know anyone who has done that formally with just a single teaching individual, but the companies I've worked at definitely value senior developers who can mentor and teach, so maybe the apprenticeship model is actually there already, hiding in plain sight.


Before learning any specific language or framework, spend a bit of time on theory of computation and programming language theory. Doesn’t have to be a lot, but it will make everything else much clearer. All languages ultimately do the same thing, so it’s really helpful to understand what that “thing” actually is.


Hello kind sir! I suggest you meditation. Oh yeah, more important, watch this link: https://www.youtube.com/watch?v=UFYJ2DE9wlM (Title: After Learning to Code at 81, She Made a Game for Fellow Seniors).


My spouse is doing a CS Master's degree from a UK redbrick. Full time it would take a year, and you can do it remote thanks to the virus.

If you're already an engineer you'll probably be able to do it somewhat easily.

As for getting a job, the market is hot right now, we'll see if it still is in a year's time.


A master's degree in one year? Did I misunderstand something?


No, it's normal in the UK. She already did one last year, so this is verified. UK unis are also pretty desperate for students lately. Go check it out.


UK Masters courses are typically a year.

Fun fact: If you graduate from certain universities, you can get one without further study. https://en.wikipedia.org/wiki/Master_of_Arts_(Oxford,_Cambri...


Good luck! Your mechanical engineering background will definitely give you good foundation to work from. If you are if the entrepreneurial ilk then definitely advise you to think about problems you had over the past 20 years and to use those connections too.


I would start with data jobs. Your existing skill set is already extremely valuable and a quick dip into Python and SQL is sufficient to qualify you for analytics engineering jobs. Once you are in, it won't be hard to migrate into data engineering jobs.


You might consider taking a familiar spreadsheet and converting it into a program in a language like Go. Use the free Essential Go ebook as a guide to how to write the code, and your spreadsheet as motivational context.


This is my suggestion, learn any language of your choice. 1. Build a crud web application , 2. Build a product which you want to use for yourself. Start working in a team .


See my quickest path to 6 figures: https://news.ycombinator.com/item?id=29025003


Not sure if that is a joke post or not.


It doesn’t matter as it applies the same either way.


Maybe start in an industry where mechE experience is a plus, like methods development or software for industrial automation. Then you can improve as a developer while on the job.


CS 50 on Edx is a good introduction to computer science https://www.edx.org/cs50


Read Ultra learning by Scott Young.

It will help you plan out how to learn this in such a short time. It will also help you learn on your own terms,


my advice, build something that scratches an inch for you. a little tool or website that sticks two part of the internet together in a way you think is fun. if you're like me, you'll retain most of what you learn that way. And if you're like me, everything you learn by just reading about it will be out of your brain in a month ...


firs, congrats on a great decision to learn programming. i am a computer science engineer and using udemy for the new languages that I am learning at 41. check out a few initial lessons on different topics to understand the landscape.


Just a word of caution about training. Many courses will really hold your hand and feed you the next step. I don't believe that prepares you for real world programming or problem solving. Not saying you don't want to take advantage of courses to nail down core understanding, but it will not be at all sufficient.

One of the first steps is to really learn how to use Google and the websites that come up such as documentation to search for and leverage information and tools to solve problems. This is a completely different way of working from many jobs such as finance, management, or perhaps even mechanical engineering 20 years ago. Where you might have a set of learned tools or approaches that you keep applying over and over.

One example is this. If you pick a Python course from a few years ago, it might recommend a certain syntax or library that makes it harder for you to achieve a task down the line than it would be if you used a feature that had been invented within the last few months.

It is really critical to have the mindset of accepting Google and online documentation or articles as your friend and ally and not some kind of weakness when you consult it.

But to go back to the first part, you will want to find projects you can be relatively passionate about at least for a short time. Because programming is about being persistent and nailing down a lot of details. And you will need that level of interest to keep hammering at a problem. Also you need to practice approaching problems from scratch without knowing a preset approach. Rather you do the research as I suggested, try different things related to your specific problem, and really have to evaluate approaches based on experimentation rather than a pre-learned approach.

Also you will have to practice interacting with users because requirements are the hardest and most important part of programming. There are two main traps: not listening to users carefully, or listening to them too carefully. Often programmers will dismiss feature requests because they seem too difficult, but sometimes these are the real value add for the business and can be achieved by leveraging existing tools and libraries. The other opposite problem which is very tricky is that users are often quite explicit in what they ask for, and those requests often completely misjudge the business requirements or inadvertently misrepresent them because they don't understand the technology. The trick is not to just take what they say, but actually understand the job they are trying to do, and use the feature requests as hints, but with a grain of salt. It's hard to do that and simultaneously really listen to what they say, because they can throw in quite critical information that needs to be interpreted properly in the midst of a lot of nonsense.


maybe try to automate what you find repetitive?


i would sign up for a cloud guru or similar. you pay like $40/mo and they give you mostly good+ content, plus, importantly, fully-functional AWS (or other) cloud environments to actually type commands into without costing yourself a fortune.

i would study for and pass the AWS Developer certification as quickly as you can/like. you still need supplementary materials to pass the cert tests the first time, fyi.

at that point you're more than good enough to get hired and do real work.

after that, continue to do more certifications, i'd probably go with the devops cert next.

build a stupidly-small and simple app and put it on your github, and make sure you do all the things you're supposed to do and not do - like store your secrets in public. the mistake here is you will think, "_This_ is really truly stupidly simple." -- but it won't be, and you'll spend too long on it, etc. The point is to actually go thru the whole dev cycle, complete it, put a bow on it, and be able to talk about it to prospective employers.

complete that stupidly-small and simple app with docs, etc., then move onto another.

to me, 'learning to program' is a bit misleading, because learning a language is relatively simple - what gets complicated is learning all the other stuff -- like git, which is impossible. so you just gotta be comfortable with git, and an IDE, and writing code, testing it, deploying it, the 'full development lifecycle' (FDLC).

i would pick one language to focus on - and i'd argue that can be whatever tech or type of business problem really interests you.

so if you want to help build the website for some cool high tech company like flexport, then learn javascript/react.

if you want to do data science, then learn python/pandas/anaconda/etc.

if you wanna do iOS apps, then learn Swift or Kotlin for Android, with the corresponding adjacent/required tools/technologies.

being a generalist is worse than useless -- i would not advise it.

'devops' is a good place to start, imo, b/c it's literally half dev and half infra, so you don't have to be really good at either -- just dangerous.

same goes for tech support -- you can look for 'technical support engineer' or 'support engineer' jobs and be employed within a month (like, 4 weeks from today, even without more knowledge than you already have) and start learning on the job while you do your coding/learning in your spare time. this is a slower route to a coding career, but it also provides you an easier way to slide into dev - you'll know developers, you'll know the product, you'll have relationships, you'll know every bug/feature/etc., you know how the entire support process works, etc.

good luck!

...ps, this never happens, but i'd love to hear how it works out for you - would prob have to be on a new thread b/c i think they auto-close after a while.


Look into web3/blockchain/NFT technology, most of it has been around less than 2 years so experience is less of a hard requirement than in other fields of software engineering.


Gonna hard disagree on this one. Blockchain is a flash in the pan niche tool. There are some legitimate uses for it, but most of it is all style and no substance. It's way too narrow a focus, with far more people playing around than there are jobs. You'd pick up general software skills along the way, but there are better ways to do that with a focus on more useful and practical technologies.


Web3 is like knowing HTML in 1995. Act accordingly.


I don’t see how is that a valid analogy. Html was useful in itself, all this new crypto stuff just convolutes existing solutions.


There were plenty of people in 1995 who did not understand the utility of HTML. That is the nature of revolutionary technology.


You mean some people understood html to be revolutionary even back then.

If you are someone who knows crypto to be revolutionary, would you be able to help me understand why is it so?


I like this perspective: https://twitter.com/cdixon/status/1440026949838069763

For example, predicting Airbnb or Patreon in the early days of HTML/CSS/JS would have taken a lot of foresight and vision.


We also had uncountable useless products made from html/js.

Also the mentioned services make sense. You rent your unused flat to someone, or you ask for money for creating something regularly.

I really tried “getting” the web3 benefits, but all I see is mumbo jumbo / dotcom crash type hype.


Could I get more clues? How might someoone hire a 40 year old for NFT/blockchain?


Solidity (language for Ethereum Smart Contracts) is relatively easy to learn. There's also tons of free resources in learning them (https://cryptozombies.io/). I would say this would be one of the hottest languages of 2022.


Yeah Solidity has many resources and is worth learning. Solana is another smart contract platform which uses Rust, and Rust is a fantastic language, though it is tough.

Both ecosystems use Node.js for scripting/tests/frontend so that is going to be advantage to learn.

A good progression might be:

  - Modern JS / Node.js
  - Solidity / Ethers (https://docs.ethers.io/)
  - Rust
  - Solana / Anchor (https://project-serum.github.io/anchor/getting-started/introduction.html)


Yes. This feels like 2007-level of hotness. Thank you.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: