Ask HN: Where should I start as a 34-year-old switching to software as a career?
I'm currently a lab technician with a background in microbiology and would love to get into software development; however, I lack experience and I feel I'm too old to ever get a job in the field. I'd appreciate any tip!
131 comments
[ 1.9 ms ] story [ 213 ms ] threadThen go build it. Congratulations, now you have experience.
Look around some more. What else do they need? Do you have to learn in order to be able to build that? Given that you've done one thing already, can it become your job to do the next thing?
You don't have to make a clean break, go to school or bootcamp, and get a whole new job. You can start just by becoming the "software tools" person where you are. Then, when you are ready for a new job, you've got a track record, not just a certificate from a bootcamp. Even better, you got paid to get there, rather than paying to get there. Downside: It took longer.
I did have to do a lot of extra prep at the end, to learn the stuff necessary to pass coding interviews (which is it's own skill set, separate from knowing how to create a working tool), but the end result is getting into tech at a similar age to OP.
Just prove you can solve business problems using code.
If I were to get into software again, I would completely ignore the hype and choose a robust set of technologies and exclusively master them. Namely, Java (Spring Boot), MySql, Jquery. These are some of the most mature and popular technologies available - you can build anything with these. After you have built this foundation and found a job, then you can move onto other technologies.
Create a github if you don't already. Pick a project (bonus points if it solves a real problem in your life). If you can't think of anything, build a TODO-list.
As a frontend developer (who's also old), I'm going to argue strongly against jQuery. I like jQuery. It's had its place. But it's on the way out. Your time would be much better spent learning vanilla JS (preferably ES5+ES6 but even just ES5 would be much better use of time than jQuery).
You can easily do anything with modern vanilla JS (and modern browser APIs like `document.querySelector` and `fetch` than you can with jQuery.
Otherwise, good advice, except I'm guessing you mean a "TODO List" app, not just a TODO list (and the concept of a todo list app may not be apparent to a non-dev, so: https://github.com/themaxsandelin/todo).
Also, I agree that the OP is not too old. After working for a few years as a software developer up to the dotcom bust, I went into health research for a while before returning to software. But I did manage to frequently use programming in my jobs, which made it easier to get back in. So I'd recommend trying to find a way to use some programming in the lab you work in before trying to switch, along with putting together some sample projects in Github.
Just be aware that you will run into ageism, and if you happen to deal with serious illness (as some of us do as we get older) and are out of work for more than a brief amount of time, that will be another big strike against you to overcome in the industry. You probably wouldn't face those to the same extent in research labs.
In hip and trendy companies; every company I work with (banks, insurers) are using JQuery like it is the best thing ever and never heard about React or ES5. It will live for a lot longer than Silicon Valley thinks.
React will teach you modern javascript that developers are using today, position you to be an immediate impact person on most React teams and as you dig into the internals of how it all works will make you a pretty good javascript developer in time.
Java is fine, but I'd also argue that C# might be a bit better, it seems like at least in my immediate area C# is more popular than Java at this point and the core concepts are obviously transferable between languages. I think C# has the edge with its tooling too, you'll bang your head against the keyboard a lot more trying to configure Java IDE's and servers than you will with Visual Studio and maybe Azure for instance.
It used to be a pain in the ass before the Spring Boot days. These days it's buttery smooth to get up and running. In fact, it's significantly easier than .NET Core startup.cs way of doing things tbh.
Having said that, I recently switched over to C# as it's just got slightly better features as a language and .NET Core is pretty nice to work with compared to the old .NET framework. It's updated and more modernized. Really enjoying it.
Javas ecosystem has some better offerings and usually all for free. Compared with C# where many libraries that you want to use are commercial, so you can't just use them without really thinking about it. Since MS embraced open source there is definitely a positive shift in the community and ecosystem but it will take time.
I decided to change careers to software development at 37yo. Best professional decision in my life. I got a job after 8 months of full-time study.
Here you can learn more about my path, might be helpful: https://rodrigohgpontes.github.io/
I just focused on freeCodeCamp.org, which is a great resource. But I have the impression that taking a shot with https://lambdaschool.com/ might be more promising.
A friend at work moved from lab rat to data analysis and experiment design, switching departments from Adjuvant Research to IT. A couple of years later, I left the company to go from sysadmin to software and tech writing, and it was tough for about nine months. He went from scientific software to security research at a new company.
We were able to jump because we had few family or financial commitments. So I have no idea if what I experienced is relevant at all. But if you feel pulled in the software direction, start writing something, probably Jupyter notebook stuff. Explain Like I'm Five years old what you have experienced already.
Going through the process of sitting down (or walking, then sitting) and writing something takes a bit of focus, perhaps. I wrote a book, then wrote software. I can't recommend writing a book without a real job (my book netted me about $0.25 per hour). But write something you show other people.
But if you really love it, then the work is fun. It's certainly possible for a newbie at 34 to learn enough. That's the trick-- find something in IT that you really like, and dig into it.
I'd suggest going to a bookstore so you can peruse some programming books. Maybe you like web apps, or mobile games, or even hard-core C code. Find what you like.
The next step would be to find open source projects in this area. Study those, compile them, and eventually try to make contributions.
I think that's a good path. Good luck!
You may compare yourself a lot to peers who did not do career changes.
My piece of advice is to be prepared for the mental challenge that comes with volatility, and focus on this question, “am I closer today than yesterday?”
Fortunately software engineering is such a high paying/status field you may not experience the same feelings. But I’m 4 years into my transition and i finally just recently have started feeling some footing under me / more secure.
Talk with people and really get a feel for the field, the good bad and ugly. It’s a lot of investment to switch that can be so worth it.
Do it on the side and see how much you enjoy it. I almost did software engineering as well and occasionally think about it, but I realized it can be incredibly frustrating / abstract at times and I didn’t like that. What will it be like for you?
https://sysadmincasts.com/episodes/51-mechanics-of-building-...
I transitioned careers to programming when I was 28, and my first 2 jobs were in finance. I dgaf about finance and didn't understand it at all. Made it far, far more difficult for me than it otherwise would have been.
The son of a friend graduated from a CS degree last year and still doesn’t have a job. I told him if he wants to be a software developer, then he should just develop software, and showed him some scripts and games i’d written in Pythonista on my phone. Nobody has to give you permission. High quality dev frameworks can be got for free. You can run web apps on a free tier on Google or AWS web hosting. Developing mobile apps is easy these days and dev accounts with Google or Apple are very affordable. Get a GitHub account for your projects and build up some rep on Stack Overflow. You don’t even need to do anything super fancy or commercial, just interesting or fun or novel and demonstrate an understanding of a range of technologies. Put links to all of these on your resume.
Set yourself objectives. 4 months to get a web app running on Google App Engine (you can get a tutorial app working in an afternoon!). A month to figure out Github and upload it, and do this for future projects. 2 months to port it to AWS. 4 months to get an app into the Play Store, or App Store. All this can be done in spare time, half the time following tutorials and the rest on whatever your apps do.
My older brother taught himself to program at 36. He was a 3D artist before, he had four kids and a wife and a full time job. He spent evenings and weekends building things for his wife's interest in photography and started blogging about his experience learning. He now runs a very successful company and completely changed his life inside of 3 years. He's not the best programmer, but he focused on the work and the assets that he had that were different from people who might be the "best" programmers, that edge is a huge asset.
I've been programming since I was 12 so it's hard for me to fully relate to starting new. Now at 35, I think the thing that people thinking programming is hard later comes from thinking of it like learning to paint or something. One unique aspect about programming is that it's a force multiplier. Once you grasp something, you don't need to reproduce it, you have it and you use it to prop up the next thing.
I'm biased towards python, but experience tells me it's one of the best starter languages because of it's flexibility. Whatever you're working on will always need a web portal, Django[1] is amazing. You can get started quick and python will allow you to do whatever crazy thing you dream up as well.
----
I've done a reasonable amount of programming mentoring and four things I've found about having limited time to immerse are:
1) Do things you think are fun! It doesn't matter if it's "relevant" to your track, learning to make it play is vital.
2) Give yourself easy wins early and often. If you find yourself stressing about not getting something, put it down and find a way to get something out quick. Once you have a win, take that new confidence back to your rudiments.
3) Never underestimate documenting your process and sharing it. Blog, draw your problems on paper and in a graphics tool, and keep a physical journal.
4) Try to wrap your head around that the feeling you have now about not knowing IS the state of being a programmer. As you get down the road you will be moving into the exact same state with a new "bigger" things. Something that does change is being able to tab into the sense of discovery and wonder easily. Enjoy it!
I believe in you! You got this!
[0] https://www.fabfile.org/ [1] https://www.djangoproject.com/
Companies want employees who are self-starting autodidacts.
Any mol-bio lab has seen one of these guys around: https://www.sutter.com/MICROPIPETTE/p-97.html
Anyone that has had to pull tips knows how much it sucks. It takes dozens of glasses to finally get all the parameters working well, and that takes an hour minimum. After all that, you then get to start the experiments. And then a storm comes through and messes with the pressure and humidity and all the parameters are wrong again.
So, if the OP could program a calculator-thingy that takes in current conditions, some parameters specific to your lab and your puller, what you want the resistance and tip angle to be, and then spits out a set of numbers to program the puller, that would be SO USEFUL! I'm not saying that I want the exact numbers, but I'd like a pretty good range of them.
If you have no experience at all, take an introductory software course at a local community college. An online course or how-to book would be a less ideal starting point. You will want more access to an instructor to get you past zero. Understand that you will also need some understanding of algebra and formal logic before you get very far, so if you are rusty or never had much math background, you might take a course in that too.
Getting your feet wet will help you understand what "software" means and if you have an aptitude for it. Only then, should you commit to at least 1-2 years of hard work in your spare time to get to a minimum set of skills that are employable. With patience, perseverance, and a bit of luck, you can get there even at 37.
I strongly disagree with that. More money is a perfectly sound reason to choose a career.
It can be soul sucking. Don't make the mistake of chasing money, at least not twice. It's not for everybody.
I have been doing this a long time. There are stories about places that do discriminate on age, but I have never encountered this myself and its illegal to discriminate on the basis of age for people 40 and over, so I suspect this is rarer than many people will suggest.
Really, its all about attitude. If you are entitled and constantly look for things that are easy you will be treated as a beginner. If you have confidence and are ready to accept more challenging work at risk of failure you will be treated as more of an adult. Some people figure this out at an early age and some people never figure it out.
The above advise might sound like common sense. Perhaps in other programming disciplines it might be common sense. As a JavaScript developer all I ever hear about are people wanting to make things easier and panic if they aren't isolated to their single pet framework. Since these behaviors are the norm, in my line of work, it doesn't take much to stand out.
I would suggest starting with Processing. It's a very simple programming language with very easy-to-use tools which was made specifically for learning by non-programmers. Just go through the video tutorials at https://hello.processing.org/ or at Khan Academy.
You may never use Processing again, but the concepts will carry over and it will give you a feel for what learning to program is like.
One of the most underrated things I think about learning software, and I'm sure many things, is the ability to easily match yourself with a perfectly suited problem and feel the feedback very, very quickly... just make sure you can understand the basic grammar, like assignment (=) or keywords like 'let' and from that sentences will begin to cluster in your mind :)
And maybe as an easy practical thing, maybe don't add the whole weight of a label so early, and just enjoy some problems on https://projecteuler.net/ like you might enjoy playing with blocks or magnets as a kid
Have fun and enjoy the triumph, solving the problems can be very rewarding
The next thing obviously is that you'll need to learn how to write software. I'd recommend you work through a few beginner tutorials and then pick a project and just start working on it. I don't have a huge sample size, but people I know who've started learning to write software because they wanted a problem solved and thought it could be done with software have generally succeeded in learning, while those who just have a vague desire to learn generally don't.
If you can't find a project that interests you, I'd look into boot camps or just going back to a traditional college for a degree in CS. Those paths will have the additional advantage of putting you at the start of a pretty clear pathway towards getting a job.
As far as finding a job, I suspect you can leverage your lab/bio background. Domain expertise is very useful in software development. Looking for jobs with companies that can use your background can help you compete with others who might have stronger software backgrounds.
I got a 2 year degree at a local college and took the first programming job I could get ($21/k year). 10 years in and I make 6 figures working for a major bank.
How to get started? Pick up some classes? Pluralsight, udemy, etc? College classes?
Do you have wife? kids? car/house payments? or can you afford a low paying job? Are you stuck where you are or can you move to a tech spot? Take risks accordingly.
Leverage your experience - programmers make stuff for... businesses. You have experience. Connect the two.
But more populated areas will mean larger talent pools. Unless you're in a tech hub or a fast growing mid-size city, the amount of software jobs might not serve the pool. Credentials will matter more. Practically speaking :)
In my case, my employer happened to hire people from my particular bootcamp, and had good experiences with those hires. Coming from that bootcamp is what got me in the door, no amount of "projects" would have done the trick. It's very hard to say "I'm legitimate, see all these projects I've done", because unless you can have a very clear timeline of "I did this project two years ago, and I've been diligently learning ever since as noted by this, this, and this project", it's just another person with another github with another project. Absolutely zero reason to bring that person in when you have other applicants with actual backgrounds + a project or two.
All this is to say, I don't think this advice applies nearly as much as people believe it does anymore.
It's like they know how to use a hammer and a screwdriver, but they don't know why you would use a nail instead of a screw (or which thread pitch why) instead of a bolt instead of a jointery technique.
Maybe it is just that our company has a bunch of old timer generalists that aren't very good at interviewing someone with a narrow skillset? I know we try to, but it feels like the bootcamp people we've interviewed didn't have very good problem solving skills. We've successfully hired more junior people, but not from bootcamps.
What are we doing wrong?
In a company of generalists, this is very likely how you operate, and you'll see little value in bootcamp folks.
As a generalist, I tend to be in that camp - seeing little value in bootcamp folks. Or, I should be more precise - the way I operate I don't see that I could get much value from bootcamp folks (I'm either independent, or work with other generalists). I'm not set up to be able to get much value from narrow-skill bootcamp folks early on.
Their value will be for shops that have teams of people where dropping in one more pair of hands has some incremental value. From there they will get more experience and can learn to be of more value in more situations.
That's just been my own observations talking with some folks about their 'going through a bootcamp' experience over the last couple of years.
You also have one thing that might work to your advantage, which is all your design experience. There are a lot of smaller jobs that require a little, but not a lot, of each skill. Basically, anyone needing an inexpensive, relatively simple web site or application would be a good candidate. I, for example, would be more than capable of creating one for just about anyone, but not by myself. I have absolutely no design skills.
You could start pretty quickly by researching which languages/platforms most fall into the small project category, and choose one on which to focus your studies. If you want to start with web site, you should probably look at PHP + WordPress, or an e-Commerce platform like Shopify + Ruby on Rails, or maybe something with Python. If apps are more interesting to you, IMHO it's a steeper learning curve, but you could get by with Java for Android, or Swift for iOS, or maybe try to learn an all-in-one platform like Titanium, etc.
Good luck!
In his early 30s, he decided to leave the public school space and pursue software development. He found specific things in the field that interested him and aggressively consumed information about those things. He read about and tinkered with code on his lengthy bus ride to work each day. He began presenting little things he was building at local meetups.
One night, after presenting at a meetup, a developer approached him and asked if he might be interested in interviewing for a new position which hadn't even been publicly posted. He agreed to interview and was hired shortly thereafter. All of this happened within a year's time.
You're definitely not too old to start! I would recommend you follow your curiousness and not simply follow where the money is at some given point in the industry cycle. Curious people go far and are less likely to quit. People into the idea of software development typically become overwhelmed and try something else because they lack a sturdy base.
Age discrimination does exist, but so do companies that actively look for age diversity in their junior engineers. Unsurprisingly, success in this field has much more to do with your mental attitude (i.e. fixed vs growth mindset) than with age.
I empathize with your preconceptions about this field (I shared them in my newbie days), but I can't emphasize this enough- I believe that almost anyone with a growth mindset and a certain amount of grit can become a software engineer.
If you acquire the right knowledge and the skills to communicate that knowledge succinctly, it will be easy for you to demonstrate why you'd make a good hire.
- Web Development
- Data Engineering
- Mobile Development
Web development is probably the easiest to get started with so let's focus on that. If your interest lies in Data for example, then the tech stack would be quite different.
For web development - My suggestion is to skim the basic protocols and standards (HTTP, TLS, HTML, CSS, the DOM e.g.) and build the simplest possible React application. This will give you a base to build on.
Once you have some basic knowledge of how to build a simple web app, its important that you learn the basic developer tools. E.g. Being able to use Chrome devtools to debug your application, being able to see the network traffic between the browser and your web server etc. These will help you in development and also deepen your understanding of javascript, http and other web standards.
Its also important to master a good editor. For web development today, I would suggest using Visual Studio Code. Learn how to navigate your code well using the editor, refactor code, get into a productive dev cycle.
After this, there is an endless ocean of stuff to learn. Web Security (OWASP), various features of Javascript - a constantly evolving language, perhaps even Typescript, managing images and other assets, how to modularize your code, learning about the event loop in Javascript, mastering asynchronous programming in javascript and so on and on. That is a lifelong journey - you cannot learn it all at once. I would suggest taking a structured course online which could walk you through the basics in one or more of these areas.
Wish you all the best!