HACKER Q&A
📣 5F7bGnd6fWJ66xN

Starting a career as a programmer in my mid-40s


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.


  👤 Jugurtha Accepted Answer ✓
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!


👤 joelbluminator
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.

👤 nabilhat
> 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.


👤 softwaredoug
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.


👤 itronitron
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.


👤 squiffsquiff
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


👤 oblak
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.


👤 johnwheeler
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”


👤 gregjor
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.


👤 bfung
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!


👤 codegeek
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.

👤 TrackerFF
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.

👤 dt3ft
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.


👤 giantg2
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.

👤 zz865
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.

👤 Tarucho
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.


👤 Grustaf
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.


👤 bbarn
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.


👤 adamredwoods
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.


👤 dimgl
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).

👤 h2odragon
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.


👤 masteruvpuppetz
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 !!

👤 qbasic_forever
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.

👤 sushsjsuauahab
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!


👤 gigatexal
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


👤 p0d
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.


👤 hackitup7
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.


👤 computerdork
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.


👤 jmfldn
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.


👤 vishnumohandas
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. :)


👤 pdx6
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.


👤 ensiferum
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.


👤 supperburg
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.

👤 ch33zer
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!

👤 max002
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!


👤 globnomulous
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.


👤 brudgers
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.


👤 Alex_Bell
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.


👤 nvmletsdoit
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.


👤 pezzana
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.


👤 powerapple
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.

👤 rramadass
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.

👤 truly
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.


👤 nixlim
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


👤 dave333
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).

👤 jdavis703
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.

👤 specproc
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 :-)


👤 streetcat1
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.


👤 togaen
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.

👤 a_developer314
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).

👤 lordnacho
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.


👤 tmitchel2
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.

👤 dataminded
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.

👤 politician
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.

👤 itoocode
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 .

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

👤 mkoubaa
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.

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

👤 xupybd
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,


👤 marstall
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 ...

👤 pgrewal
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.

👤 ilaksh
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.


👤 dorianmariefr
maybe try to automate what you find repetitive?

👤 readonthegoapp
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.


👤 ronanyeah
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.