Ask HN: 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.
152 comments
[ 5.0 ms ] story [ 316 ms ] threadIf 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.
Biggest challenge will be choosing a language and executing the program!
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.
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.
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...
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.
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).
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. :)
Difficult to do when people feel attacked when you MIGHT have more knowledge than these people. I'd say might, because it happened before.
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.
How can steer away from fullstack when you kinda need it? Or maybe I'm to excited to jump on it.
Both ecosystems use Node.js for scripting/tests/frontend so that is going to be advantage to learn.
A good progression might be:
If you are someone who knows crypto to be revolutionary, would you be able to help me understand why is it so?
For example, predicting Airbnb or Patreon in the early days of HTML/CSS/JS would have taken a lot of foresight and vision.
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.
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
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.
As others have said, focus on a portfolio. Start with a course like C193p and then build a few good quality products.
- "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!
edit: The Steve Huffman course is also how I learned. It's absolutely fantastic.
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).
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.
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
But really though Python syntax is simple and readable and I find people that learn it first adapt to other languages very easily.
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
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.
I still have access to it on Udacity when logged in: https://classroom.udacity.com/courses/cs253
But it's hard to find.
Maybe some other recommendations from my personal list might be of use to you - https://github.com/damaon/BestCSResources
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.
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.
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...
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.
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.
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.
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.
... 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.
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”
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.
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.
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.