https://sysadmincasts.com/episodes/51-mechanics-of-building-...
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.
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.
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.
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/
Or, you could go to college and get a master degree in CS. Colleges then have on-campus-recruiting and some set of companies that will basically hire anyone who graduates from the university with a CS masters degree. It's the same idea as the bootcamp; go somewhere with the connections/infrastructure in place to help you get your foot into the industry.
Now, once you have your choice of companies to choose from, I tend to recommend startups. That's the one place where you have the opportunity to do things that you definitely shouldn't be doing given your experience level. But, since they have so few employees and so much to do, you're it. Then with those rapidly acquired skills, and with a year or two of relevant experience now on your resume, you can more easily get a cushier, more stable job at a larger company, if you wish.
Many people have had success with bootcamps. But remember, there is no guarantee of a job by attending one. Personally, I would only recommend a bootcamp to someone who has a) the disposal income to spend on one, and not get burned if things don't work out, and b) the person has the time and work ethic to devote to it 100%.
When you pay for a coding bootcamp, you are paying for the focused hands-on learning experience. If you don't feel that you can be disciplined to do it by your self, or think you can network better in one - it may be viable. Do your due diligence in researching bootcamps as well. For every good bootcamp there are two or three scams out there.
Personally I would advise that anyone looking to make a switch spends 10-12 months self-teaching and learning as much as possible. Build a few projects in whatever domain you're interested in, and then start applying. If you find that you aren't getting past the HR filter - it might help to go for a bootcamp or masers degree. But, I don't think dumping 15k+ into either one of those off the bat is a sure-fire way to make a career switch.
I don't have any experience working at start ups so I can't speak to that, but working for a smallish established company (~ 300 employees total) has been wonderful. Good support system, resources to encourage career growth and learning.
It also depends on your career goals and location. Breaking into a small or medium sized unknown company in the mid-west may be easier than trying to career switch into big-n in the bay area.
It also depends a lot on where you are from, or if you are willing to relocate.
In the UK, for instance, you can get MSc in Computer Science in 12 months, and the tuition fees are much lower than in the US.
In Germany, MSc in Computer Science takes 24 months, but education is essentially free.
I see bootcamps as the best solution for people without a BSc degree, who are not eligible for MSc.
So my advice is keep learning (because that is the one thing about this field that is fun and exciting), but figure out how to do so in a way that is sustainable and makes you happy, and take care of your mental health.
Data science is eating the world. Everyone wants data scientists.
You’re a microbiologist. It’s hugely credible that you’ve done some crazy data crunching for your science work. Spin that into an increasing interest in the pure data science.
Voila, you’re writing python for a living at the top of the market with a hugely valued differentiated skill set.
I tend to hear from actual data scientists that the field is a lot harder to get into than what the press is reporting.
I've talked to a lot of data scientists, and I can't recall any without a PhD said they were initially hired for that role. I have met quite a few that were initially hired as a support programmers then moved into data science once they had their foot in the door though.
"Hugely credible" and actual experience in data analysis/statistics are completely different things. And if you don't have the statistics/math background, you'll find out that now instead of just programming, you need to learn programming and statistics. Which might be too much for someone who doesn't know where to start.
Thus, it's dirty easy to get a job in this area with a background in biology. It's just a relatively small pivot that can be done smoothly.
Best advice is just build stuff, and always work on your portfolio and resume. The more you can showcase that you've accomplished the better.
Tell me why someone picking up Python/JS should learn the above mentioned things, rather than learn basic security principles and not pip/npm install blindly all the packages without checking the source? Change my mind.
The generalisability is more obvious in something like physics where the same physical laws apply in different domains.
Computer science doesn't have axiomatic physical laws, but it does have recurring concepts. If you learn about memory hierarchies in computer architecture, you can apply similar principles in dealing with caching systems in web-applications.
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.
Then 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.
Do you use excel for anything at all? Whatever it is, you could start by building that.
- Do you put data into a spreadsheet and then email it to someone else? Make a web app where you put in the data using your account, and the someone else can view the data using your account.
- Do you have different spreadsheets with separate data than then gets aggregated/summarised manually into a single spreadsheet? That's a job for a computer program, not a person, and you can add that as a feature for your web application.
- Once you've done that, you have a website that can work with the new data, but some people will want it on spreadsheets, not on the website, so write a spreadsheet export/download feature.
- All your new data is in the website, but the old one is still in excel spreadsheets on your hard drive. Write an importer to read the spreadsheet data into your application.
- Is some of the data for your lab in a format that's also machine readable (barcode format?). Add to your app support for reading barcodes, either via phone cameras or laptop webcams: https://github.com/serratus/quaggaJS
I could go on, but I guess you know your next step better than I would.
A recommendation is also that you do all your development at home, not on company time, and not using any company resources. A lot of profitable business are website implementations of existing spreadsheet workflows. In the past three years, I've worked on two such applications, three if you count a physical device UI where the prototype UI was developed on Excel + Visual Basic.
Have you tried programming? I got my start with python courses on coursera and udacity, then moved on to solving problems on Project Euler. A few years after my first taste of python, I started going to meetups, then researched and entered a boot camp, graduated, and got my first job.
I went into the boot camp knowing that I liked programming, and that was important. I'd strongly recommend you see if you have that inclination as a first step.
Personal projects are great, but as a project manager told me in an information interview, a well chosen boot camp can provide you with structure and accelerated learning.
"too old to ever get a job in the field": I was only a few years younger than you when I started my boot camp. I don't think your age should dissuade you from trying. Your age = experience you have in a different domain, and in my experience, helps with the learning, application, and working process.
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.
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 :)
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.
1. identify something that you do on a computer that is repetitive and boring, and think hard about how to automate it;
2. learn any language/tool that's most accessible to you and build something that at least partially automates that task;
3. start using it yourself every day;
4. every time you run into an issue, don't work around it, take the time to improve it;
5. put it on the internet so others can use your tool;
6. get other people that you work with to try it out, listen to them;
7. talk about your new tool to everyone that you encounter or tangentially work with, at meetings, conferences, colleagues, etc;
8. go back to #4 a couple hundred times
9. Eventually, a potential paying customer will appear, do whatever it takes to get their business.
10. Go back to #4.
34 is definitely not too old. While in school, I had classmates ranging in age from early 20s to late 40s. Everyone I graduated with is now employed and doing well. (Including those who started a decade later than either of us.)
Getting a 2nd Bachelor's degree in Computer Science worked for me. It only took 2 years, because I had a prior bachelor's degree, and it sounds like you'd be in the same situation.
Employers have generally been respectful of my prior experience as well (it was business focused, project management), so I don't think having worked in a different field is a bad thing at all.
Moreover, I work with plenty of software developers who started off in other scientific fields and made a transition to software more organically -- so it certainly can be done.
Ultimately, if you can pass programming interviews, you will be able to get a software dev job. It will be challenging, but you'll be happy you invested the time. Wishing you the best of luck!
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.
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.
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.
Fully agree that you could compete with them on an even (to superior) footing well inside of a year of reasonably dedicated off-hours effort.
I just switched from being in bioinformatics to software engineering being 30 year old. The problem isn't that you're getting old. The problem isn't that you lack experiences, either. I have none of those. On top of that, I'm just an international student, I have zero advantage compared to other applicants.
I think the most important problem/question is how bad you want to change your job/career? Do you come home everyday after work feeling like shit? Do you feel like you don't do enough work to deserve a break, but you feel like bored all the times at work? Do you feel like you hit a brick wall, not sure what is up for your future?
At one point in my life, I felt all of the above. I wanted to kill myself. I figured out if I wanted to stay alive, then no one else will help me besides myself. So after years of depression and worrying, I decided to instead of sleeping through my fears, I would do something to get myself out of that. Many things I did at that time turned out to resonate with people somehow.
One year and about ten days ago, one of my submissions got on the front page of HN. That changed my life forever. I wish you have the courage and grit to do the same for yourself, if you feel that way too. Doing anything, you don't know what will stick, but when you do enough, you will have a feel of what will.
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.
- 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!
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
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.
Build some stuff yourself, whatever it might be. Website, automation of daily tasks, it doesn’t matter. Make something that works. Most people can’t complete a project, so if you can, you’re valuable.
Take some free online computer science courses. I really like the MIT intro to computer science for non-programmers. You’d be shocked how many people who work as developers can’t do basic stuff you would learn in even an intro course. If you have some theoretical formal knowledge and combine that with the ability to execute in the real world, you are rare and valuable.
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!
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.
The advice given elsewhere to solve a problem in your current role is really important - but it might not need to be work related - a personal project that you have a clear vision for and users other than yourself will do.
Having stuff on github helped me with interviewers. I did not find, in the UK at least, that lack of a CS degree or development experience was a barrier - in fact, interviewers seemed interested in my story. However, where I live (the north) there is a developer shortage.
The biggest advantage of your move is that as you dig into software development you will be equipped with two advantages:
Dual skills set plus a unified understanding of two different fields you might even be able to create new knowledge.
My advice would be to develop something in the field you already know, something that made your life more cumbersome but that technology could solve.
That way you will be using your intuition from a field you know to solve a specific problem while learning a new field.
You aren't too old! Keep in mind competing against 22 year olds for a job means you're also competing against many who have never held a real job yet, don't understand anything about professionalism, or have never had to wake up before 10AM on a daily basis, etc.
I honestly think the main concern is salary. You will almost certainly need to be flexible as you are starting from the bottom. You also may need to work to ensure that employers know you won't be too expensive to hire.
The first programming I did was Excel formulas and then SQL queries which I was fortunately able to learn how to do at work (I was in a non-technical role at a software product company), so this was more or less paid training. I then got into learning some basic Linux commands.
I was able to further dip my toes in by taking two programming classes online at a local state university, Intro to Programming with Java and Intro to Shell Scripting. I think these classes were about $1,000 each, which is a lot, but still a lot less than a bootcamp and didn't require me to quit my job. (I personally think Java is a great place to start programming but I don't know if this view is shared among most)
After that I finally had the courage to quit my job, attend a web dev focused bootcamp, and I started my first job about four months after that.
Since development is problem solving, find something that you can solve in your field, a tool for other microbiologists maybe (web, app, content, tool), and build a prototype. Keep iterating on projects, and ship to the world in whatever tech you find fits your style. Or do something entirely new in a field you want to work in, I prefer gaming, promotions, household management and more, but find one that you will enjoy.
Having a project to work on will propel you through all the walls, from design to develop to ship to maintenance, the full cycle. The projects might be subpar initially as with anything newly learned, but they will be very empowering because you will hit some shots on the fairway and green even if you spent some time in the rough and sandtraps. I still love the feeling of solving problems and shipping games/apps that people play or use, almost a drug.
Don't worry about age or your field, you are too old when you are dead, and you clearly are alive with motivation to want to make a move.
A great coder who shipped solid products and fun stuff that I worked with was an agriculture major and worked on farms initially.
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.
In my case I had existing knowledge of the basics and had programming experience (but not as my primary job role, nor in a team).
Here is what I can suggest: if you can at all leverage your existing domain experience it will serve you well. Try to figure out whether your employer can place you in a role where you can contribute in some way using your existing skill set while you further your software development skills.
Having taken some computer science classes, read programming books, and having programmed off and on in small things for many years was helpful to me, but I can't overstate how much that was all eclipsed by raw experience doing the job day in, day out. I quickly realized that there is simply no replacement for hands on programming experience, and having a team around to help fill my knowledge gaps was invaluable.
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?
A friend quit his PhD into medical psychology and entered a training program for developers where he got exposed to PHP, C#, Java, and maybe another language. He got into PHP development at a startup, and after a poor experience with some lead developers, he's now their lead developer. Some of his co-workers are superficially better developers, but they're cowboys who quickly deliver untested, hard to maintain code, whereas my friend works slower but more thoroughly.
Either way, getting into a program where you can learn how to do it right, seems to be an important step.
1. Alternate writing programs with classwork or book-learning. Back and forth.
2. Learn a programming language that a friend knows, so you have a place to get on-the-spot help. Ideally, somebody sitting next to you.
3. Have a computer available. Almost any home computer will do, no need for something expensive. There's plenty of free software you can download, free tutorials, free books...
4. There are cheap classes at some nearby community college or something like that. Finding the time is harder than paying for them.
5. The most important first courses are about a particular programming language, like "Python Programming 101".
6. The most important second courses are probably "Algorithms and Data Structures" and "Computer Architecture".
Your bio background will definitely count for something at biotech companies, and they hire plenty of software developers. But you need to add some sort of credible training or experience in software. I know there are community colleges offering two-year programs; that would probably be enough. Then go looking for an entry-level software development position at some bio-focused tech company. Someone who knows both bio and software will be a very attractive candidate.
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.
If it’s any encouragement, I started cold with iOS at age 40. I knew nothing but a little bit of C.
If you learn the program, there will be people who need your skills.
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.
All my friends that studied stuff I thought was silly are getting married and I’m stuck in a cube farm full of men.
https://www.railstutorial.org/book
If you would like to focus on frontend dev, this is a great place to start also:
I started by making websites that were useful to me in my previous field. When I got good enough at it, I quit that job.
That strategy worked out really well.
If you don’t have a requirement for a high salary I suggest taking a look at the YC companies that are hiring by clicking “jobs” at the top of this page. See what specific engineering skills are in demand and then start to play around with them. Find what seems the most interesting to you.
It wouldn’t be a bad idea to work for a company that hires software engineers in a field where microbiology would be a big time bonus.
That last bit would probably make the membership pay for itself, since you are going to need to do a lot of reading and studying.
Our iOS curriculum is (IMO) among the best in the world, and it’s completely free until you’re hired and entirely online. Syllabus is here - https://learn.lambdaschool.com/syllabus/cs-ios.
We don’t focus purely on swift, but you’ll be very good at it, and we dive into a bit of Onjective C and C.
Actually, our first iOS class graduates in two weeks, and 50% already have job offers!