Ask HN: No formal software education – is there hope for me?

143 points by polishdude20 ↗ HN
In 2015 at the age of 21 I got a Mechanical Engineering bachelor's degree. Afterwards I worked for two years at a place I didn't like very much and I learned some Python. Then, there was an opening at the school I graduated from for an assistant instructor and I took it. I then went on to teach in courses such as 3d modelling, FEA and transducers and electrical prototyping. I have great fun with it and learn a tonne as well as I get to interact with lots of smart and ambitious students.

So why leave a job like that?

It's mainly the pay but I also sort of fell in love with software this year. I started learning JavaScript last year, learned about databases, servers, React and Linux stuff. Loads of really exciting fun stuff!

So now I don't know how to transition to a software role. Many places I apply to want people who have experience in software development or they want to hire a junior for some super low pay. I can't put the words "software developer" on my resume but I have written a lot of programs for my classes and in hobby projects.

It feels like nobody looks at your GitHub profile though. I've got lots of projects I've done in the last year. But maybe that's just the grind? Just need to apply to enough places?

166 comments

[ 3.0 ms ] story [ 234 ms ] thread
Why don't you look for a software role that would put your ME training and experience to some use ? There are tons of web developers but we live in a physical world and there's certainly a need for better software in virtually all fields. I think even 3D modelling experience should open a lot of doors for you, it just probably won't be web dev roles.
Go to a hacker school. They have machinery in place to get past the level 1 filter.

Or maybe write a lot of public code. This is highly risky, though. Few places consider those credentials.

Respectfully I’d dissagree. The OP has (at least I would read it this way) that they can allready code. Hacker school time could be better spent searching for the right fit of employer
That's fair and if I think about it an alternative path may actually be finding a startup that will take a risk on someone.

To be honest, he just has to get past the L1 filter. Once he's in the stage where he's interviewing the predominant dominator of whether he'll get the job is interview performance not resumes.

So yeah, I've changed my mind. Probably well worth searching first before falling back. I guess in my head I'd assumed he'd already searched unsuccessfully but he never mentions that.

I'm not sure how hacker schools will look on resumes in a recession.
you're 26 you got heaps of time. You didn't include all sorts of info like your location, your target pay, and any identifying markers. The industry has a lot of bias; whether or not you need a degree is a question of the existing biases in the place you live and your status within that system.

> or they want to hire a junior for some super low pay

probably still better than what you were making in another field.

get a recommendation for a recruiter from another developer in your city.

(comment deleted)
I'm a self-taught programmer with a Mech E degree (1993) as well. I've never worked a day of Mech E in my life (well, an internship at Mercedes was writing code for vision and control systems, which was maybe 10% Mech E, 90% SWE). e Everything else was pure software.

Has never detectably held me back and I very rarely even got questions about it. It was entirely "can you code? let's talk about it to be sure..." [just like anyone else]

There are many Physics/Maths graduates in FAANGs from my experience (and you only find it out if you ask them, i.e. there's no noticeable difference otherwise). Your degree is certainly not holding you back, this is not medicine or law.

I had to explain how to use std::function and lambdas to a fairly high level employee once (we were using C++). A Maths graduate (a PhD, actually). Problem? No, he was really good otherwise, and he got how it works in less than an hour. It is not complicated compared to what he normally did, he just happened to never need to use it in the past.

Needless to say he wouldn't know how to do find-union or how to write a compiler or write a formal spec for a programming language or how to compute GCD with C++ metaprogramming or any other "theoretical" fun things you would learn before you get a CS degree. It's not that important.

An engineering degree probably gave you a leg up over, say, a History degree.
I came from a mech eng background, got a master's in computational and applied math (no formal computer science), and have since had two different software dev jobs. There are lots of places that don't require a formal CS education. If you have programming experience, have done projects, and have demonstrated an ability to learn and solve problems, that goes a long way. There are also places that hire mechanical engineers and the roles involve a lot of software development; maybe not the exact role you're looking for, but it can be a pivot.
I did a robotics degree, (half mech eng and half elec eng) then I helped out my dad with a software side project of his and turned the experience into my first job.

I did 5 years of elec hardware design and then got a job as a software dev. Been doing it now for 7+ years.

My advice, look for a scale-up. A business with a proven product market fit, but still looking after the pennies. The one I found was willing to take the risk of a good find because the “formal education” lot were more expensive. I’m reasonably sure my first boss would back me up in saying that the risk was well worth it’s. Apply, show them real world work, I’m sure you will go far. Engineering mindset is actually a real skill, most formal education backgrounds I talk to don’t think of things like failure modes or really understand the importance of good requirements like mech/elec engineering I’ve met.

Also, email me whenever to talk chris at matheson dot it

Just as an aside, for those of you looking to hire, I think engineers like this are an untapped goldmine. Most are paid 2/3rds or less of an average software dev (at least in the uk) but most have had experience programming and all will have the sort of mind needed to ferret out problems at the design/ideas stage of the dev lifecycle.

Hire all of them.

Apply to lots of places, be honest about your experience. You might have to take less money for a year or two but you are still young. The first job is by far the hardest but the challenge of interviews never goes away because as you get more senior people expect more from you in the interview.

Do you just have code in Github or do you have an app running somewhere that people can actually interact with as well as the code for it on Github? If you don't have something live, push something live. Use Heroku or some other simple hosting solution if you want to get it live quickly.

You can also try to get involved with an existing substantial open source project. Try fixing a bug or adding a feature. Get advice from the project maintainers and work from there. That's as close as you can get to work experience of collaborating with a team. Get something merged to an OS project. And then when you interview you can talk about that experience so the company knows you can work with others to get production code shipped. You might have to log into IRC or Discord or send a bunch of emails to get started with the kind of direct communication necessary to do this. But learning how to take that kind of initiative is valuable in a company setting as well. If you do good work those open source maintainers could even become leads or references to help you find a first dev job.

Lots of people change careers into software development with less technical backgrounds than yours (I've met former actors, artists, lit majors...). You have much more than hope, if you're persistent you will find the job you're looking for, it just takes some hustle.

I don’t have an engineering degree but worked in QA for 4 years before becoming a SEIT and then an actual full-time engineer. Took a long time but if you’re heart is in it you’ll find your way in eventually.
Omscs, or other online ms programs, could boost both your self confidence and career chances.
What's worked for me is what I retrospectively have come to call "Trojan Horsing", whereby you use interdisciplinary fields to move diagonally through one or more institutions. Being lucky doesn't hurt, either.

[incoming potentially helpful, very self-indulgent summary of what that looked like for me]

I was one of those teenagers who always wanted to be a web dev but ended up majoring in biochem because I felt that, while both were interesting to me, self-teaching web dev was working for me and it's not easy to get your hands on centrifuges.

I made sure that my masters (experimental medicine) would encorporate wet lab work, as well as a big machine learning part (since that got me closer to code) and wound-up falling in love. After I submitted my thesis, I applied on a lark as an ML dev after I saw an ad on HN for an oppening at large-ish software company. This was a scary time and I was sure I wouldn't get it. The hiring manager had a PhD in CS, it was a Scala job and I never wrote a line of it, and I had a hard biology background. But I aced the take-home technical they gave me and snagged the job.

I'm now doing my PhD in Electrical Engineering to get that formal background in ML and could promise you I never knew exactly how I would make this diagonal move, but always felt it was likely.

[how I see that drawn out anecdote to apply to your case]

You have a background in 3D modelling and FEA, and I would suspect (though may be wrong) that there are plenty of positions that are looking for tools development for e.g. Engineering or Animation (the Autodesks of the world). Do you think that's something you'd be interested in/can learn? You seem to be a self-starter, which is key in this sort of thing.

Include in your search positions that don't have developer in the word but are technical roles in e.g. 3D modelling that would require you or benefit from you coding now and then.

Finally, the GitHub stuff is largely ignored from my understanding. It's great to give back to the community, you can meet great people (some of them who hire people), but short of that it isn't really an application boost.

Best of luck!

For an industry where talent is supposedly in such high demand, it seems surprisingly hard for newcomers to break in that don't follow the traditional college->internship->junior hire path.

I think there are a number of factors that cause this:

1) Even juniors get paid quite a bit compared to many other professions. 2) Software engineers have an uncanny ability to be worse than useless. A bad software engineer means you need several other software engineers to clean up their mistakes. 3) Given the above points, generally speaking, the companies that actually can afford to take a chance on someone without a proven track record are also the ones that don't need to. FAANG companies can attract top talent using their brand and deep pockets.

I think 2) is somewhat misguided, though. The ones making terrible, costly decisions probably aren't junior programmers anyway.

Jeff Atwood has a really good post that I think is relevant: https://blog.codinghorror.com/nobody-hates-software-more-tha...

Re: your post in particular:

> I can't put the words "software developer" on my resume but I have written a lot of programs for my classes and in hobby projects.

This can certainly go on your resume, just don't misrepresent it. A common pattern I've seen is for folks to have a "Projects" section on their resume that mostly takes the place of what they would list as their relevant employment. If people don't look at your github, put your github where they do look.

> A bad software engineer means you need several other software engineers to clean up their mistakes.

This also sounds like a problem with incompetent management. If an engineer can spend so much time building bad code that it takes multiple engineers to clean it up, it means that there was a long history of ineffective code reviews and inadequate training (e.g., nobody bothered to give the engineer an overview of the architecture of the system they were hired to work on).

And if the engineer is truly incompetent, it's also management's failure that the employee wasn't let go before they could create that amount of damage. Not to mention that management's interview process wasn't good enough to detect glaring incompetence.

If management takes their jobs seriously, the risks of a bad hiring decision can be minimized to the point where it's not that risky to hire someone without a CS degree or inside connections.

>And if the engineer is truly incompetent, it's also management's failure that the employee wasn't let go before they could create that amount of damage.

In some places it's not that easy to get rid of people. I know there's someone at my current workplace who I secretly wish was let go, but I know that the only realistic option I have is find a new job myself.

Yes, in a well run organization it should be difficult for any one person to cause too much damage. Thats one of the benefits of bureaucracy! But at many startups, especially in the early stages, developers have a lot of autonomy (and rightly so). In a small environment like that, you need folks you can trust, and a mis-hire could be devastating.
(comment deleted)
(comment deleted)
(comment deleted)
> For an industry where talent is supposedly in such high demand, it seems surprisingly hard for newcomers to break in that don't follow the traditional college->internship->junior hire path.

Is that really true though. It seems to be one of the only, if not the only, high pay fields someone who never went to / completed school can enter.

I agree that it is easier than most industries, but I still think the degree to which it is easier does not accurately reflect the alleged demand for talent.
Not that this is helpful in the moment, but the first job is going to be the hardest.
You can absolutely do this, many of the best programmers I have met are self taught, and you have an existing college degree that's just going to make you more valuable.

You are going to need to sell it though, you need a good looking website highlighting all your projects, link to github and keep your github clean.

The way I started was doing freelance projects until you're confident enough to move into enterprise ( somewhat ironic because freelance work typically involves more understanding of every part of the system ... and better skills ).

Do projects in the language/technologies that you want to work in and highlight those.

I was a tech recruiter, and I was able to transition to becoming a software engineer. I'm pretty confident you can do it, too, if you want to.
MechE here as well (B.S and M.Sc). I don't think it's as bleak as you think it is. I would argue a MechE degree is one of the most versatile engineering degree out there. I have plenty of friends who ended up not even touching anything MechE related out of college. As for me, I'm a couple years older than you. I did apply to a couple positions at FAANGs with the hope to transition my career (I've been in hardware design for most of my career). I ended up getting a couple interviews for a SWE/ML researcher. But funnily enough I ended up taking another hardware role before my interview rounds ended because I learned I wanted to do a hardware+software role (60/40 maybe?). End of the day is to work on projects and upload them to some sort of a git repo (GitHub or gitlab). Also prepare to leetcode/CCTI like it's your job. I had to for about three months before I felt like I was ready for interviews.
When I was 27, I picked up and moved from the Midwest out to San Francisco kind of on a lark. I didn't know anyone, and despite having a CS education it was from a no-name school and I had basically zero relevant experience. I had an exceedingly difficult time "breaking in". I eventually found a job with a startup at a relative pay cut, and some time after that was able to find an actually-decent job. Every job change since then has only become easier.

Looking back now I can see why it was hard for me to break in. The factors holding me back, in descending order, were:

1) No industry connections 2) No relevant experience (.NET didn't count in SF at the time) 3) Wasn't really "plugged in" to the prevailing tech culture 4) Nobody had heard of my university. 5) Frankly I wasn't very good.

5 almost doesn't count; very few people are any good when they start their career.

The single most significant factor (the dominating factor, really) was simply a lack of connections. Nearly every significant job I've ever had is a result of a referral from a friend, and this is true for basically everyone that I know. I have coworkers now who not only have no CS degree, they just don't have _any_ degree, and we happily hired them on reference.

I guess my point is that yes, it'll be tough for you at first. Not having those magic "CS" letters will definitely hinder you. That said, it's not an impermeable barrier. The best thing you could do for your future is make friends in the industry. The second-best thing (in my opinion, others may not agree) is to participate in a well-managed Open-Source project. Not to burnish your resume, but to learn the processes people use to collaborate - source control, issue trackers, code review practices. That stuff doesn't get taught in CS programs either, but it's essential knowledge. Having it will help get your foot in the door.

Skills are important, to be sure - once you get the interview you still need to be able to successfully sell yourself - but IMO getting the interview is the hardest part when you're new.

It's doable! I never even went to collage and I'm doing just fine, currently doing systems development at Mojang. I learned to code online, did some free classes, then built my first application using nodejs and mongodb. My application wasn't amazing, and neither was the job it helped me land, but it was a start, that job helped me land the next and so on. Today, about 6 years later I introduce my self as a senior Java systems developer.

If you really want to do this though, you might want to buckle down for a couple of less than glamorous years. You can get into the software industry without qualifications, but you won't get in at the top with your first gig. You're gonna have to work your way there.

Some advise: keep doing hobby projects, keep learning new stuff constantly, and if you have a choice, pick the jobs that will serve to evolve your skills, not the jobs that pay the most.

It's been ages since anyone even asked me about my education, the only thing that matters is my current and previous assignment, and that I can demonstrate logical thinking on the interviews.

I'll add as a disclaimer that YMMV, we're currently in difficult times, and it affects even software Devs. I also don't know where you're at geographically, here in Sweden I'd go so far as to say that if you can land a software job before going to collage/university doing it is a waste of time, as you'll learn far more relevant stuff way faster while working. But I hear in the States that diploma is more important, so I can't be sure.

Believe in yourself and don't give up! You can do it!

My experience: just try to land a programmer job first, even if the company/job looks shitty.

I only had an Economics degree with no formal IT education and now I had a software dev job.

Like you, I was self-taught and only had built some personal projects, but it was enough to land me my first IT job in a shitty startup. And then you can have easier time finding other software dev roles.

I’m curious to the degree culture plays in hiring practices for SWEs in different countries. It’s not uncommon at all for tech companies in the US to hire engineers without a software engineering background or a college degree (I know an engineer at Google with no formal education whatsoever).

But, I’ve heard of people from other countries talk about getting “certified” in a particular coding language or technology. I can’t tell if that was just a scam, or things like that have some weight in other parts of the world.

I’m sure people here have worked for a small company led by some sales guy who didn’t know what he was doing and would expect engineers to have degrees and certifications. I wonder if in other parts of the world, where those with knowledge of running a modern software engineering organization haven’t risen into leadership roles yet, it’s impossible to become a SWE without a whole bunch of diplomas.

It is not. I don't hold a degree and I've been offered jobs around Europe. Certifications are mostly of interest to capital-E Enterprises.
Just another anecdote, granted this was over a decade ago so YMMV now.

Grew up doing web dev "as a hobby", basically self taught since middle-school. It was my passion, but never thought of pursuing it as a career or anything. Went to college, got a EE degree. Partly because parents thought it was generalized and better able to land me a job out of college. I partly agreed. Went to work at for gov't contractor and hated it. I would still code on the side when I got home. Left after a year and had my mini quarter life crisis lol. Decided to apply for a few jobs around me with zero experience in the industry.

2 interviews stuck out to me. First one was an a small agency. They gave me a coding test and I realized that I know a lot more than I thought I did and shouldn't imposter syndrome myself as much. Second one was a small startup. They saw a lot of apps I built on the side and were intrigued which netted me that offer. Decided to go for the startup and that experience really solidified my confidence that I could actually do this.

IMO, your engineering degree will help you get a foot in the door at least. ME isn't a piece of cake and you've proven yourself competent in that regard. Your lack of "formal" education might be a hindrance to some, but I think it demonstrates the ability to self start and figure shit out and most importantly to just build stuff. Just keep grinding until you find the opportunities; you might have to take a step 'sideways" to get them.

I'll start by saying that I've worked with many self taught programmers and they were all excellent (perhaps there was a selection bias?). They also always had humorous holes in their knowledge (which they were always quick to rectify).

So it's totally doable.

> Many places I apply to want people who have experience in software development or they want to hire a junior for some super low pay

The truth of it is that you'll probably have to take a junior job first. Even with a great GitHub profile, there is no easy way to know if you can actually do it, since there is no way to really know how much of your Github profile you actually created.

The good news is that if you really are good, you'll get promoted quickly (or be able to quickly move to a more senior role elsewhere). But sadly, you'll probably have to suffer at least a year in a junior role to "prove yourself".

> They also always had humorous holes in their knowledge (which they were always quick to rectify).

Can you elaborate on some of these areas? Were there common patterns you have seen? Asking as a mostly self-taught engineer always looking to uncover unknown unknowns in my knowledge.

There was never a pattern but it was usually something that you would learn in an upper division algorithms course that doesn't come up often in practical applications, like Big O notation or Bloom Filters or Depth First Search.

Oftentimes they would know the topic intrinsically (like a search algorithm) but not know it's name or the typical use cases.

But like I said, usually by the next day they would be an expert.

^ as a self-taught dev, this is accurate. I still don't really know Big-O notation or Bloom Filters. But it's never come up as an issue.
I've found that Big-O comes up any time you're wracking your brain trying to figure out why something is taking so long, and then you realize you've created something n squared with some nested loops.

And bloom filters are super cool, you should read up on them. You'll find an interesting set of problems that can be solved with them. The key to remember is that if you ask a bloom filter if something is in the set, and it says no, you are guaranteed that the answer is correct, and if it says yes, it may be there, but it's super fast at giving a no answer.

So if you expect that the answer will be no most of the time, a bloom filter may be a good data structure.

Here is one place it comes up: on reddit (or HN) when you load a page it shows you all the stuff you've already voted on. There are usually many things you could have voted on, and chances are you haven't voted on a lot of them. So when you ask "did user X vote on item Y", the answer is usually no. Storing the votes in Cassandra, which uses a bloom filter, makes answering that query super fast.

Of course, it's important to note that bloom filters by themselves can give false positives.
Right, I said that. I said that it may return yes when it isn't in the set. But it never gives a false negative, which is key.
You think not knowing about Bloom Filters is a 'humorous gap in knowledge'? Are you saying you worked some place that expected people to know about them and also hired self-taught engineers? I've worked at some companies people here think of as 'elite' and I can't even begin to imagine how this might occur.

In fact, it smells to me a lot like the mentality of certain people at said companies who liked hazing interviewees by testing esoteric knowledge (e.g. twisted DP problems, reservoir sampling) instead of talent and potential. A part of me would have loved to see those companies implement a policy of using those interview questions on other employees, like a kind of 'random drug testing'. I imagine many would have been humbled rather quickly by such a process.

The bloom filter one wasn't really one of the humorous ones. More like not knowing the name "Big O notation" despite understanding the concept. It was humorous that in all that time they never heard the term "Big O" even when using the concepts.
(comment deleted)
Some of mine humorous holes that I learned after getting a job:

- I didn't know any Git command

- I was very uncomfortable working on a terminal actually (I remembering googling what a "terminal" was at the beginning of my studies, by the time I got my first job, I was only capable of following step-by-step tutorials for anything CLI related)

- I had no idea what "cURL" meant, a senior dev told me to send him the "cURL", saying that just had to "copy as cURL in the devtools" and I had no idea what to do it. When he got to my desk I was googling it. He was nice enough to have a discreet smile and teach what I had to do.

- Btw, I was completely unaware what I could do with Chrome devtools too. About as uncomfortable as with CLI

These are just the ones that I actually noticed and remember now, for sure there are others that I never noticed or forgot.

Funnily enough those sound exactly like the holes in knowledge in some formally educated software engineers I know. Unis generally teach you computer science concepts and algorithms, and not tools like Git, cURL, and especially not Chrome devtools. While using they may introduce students to command-line interfaces you're much more likely to become comfortable with it through personal projects than academic lessons.
I wouldn't expect a fresh CS grad to know any of those things.

I personally wouldn't have immediately gotten "send me the cURL" if that was said to me personally, though I know the menu option in question. (It would help if it was a more distinctive word.)

Don't overestimate the average fresh CS grad.

Hm unless you weren't doing web dev before. Those seem like pretty normal things you would encounter daily for any moderately complex project.

I was expecting more HN like answer like the big O notation, data structures and design, algorithms related stuff since those are the holes you should find in someone without academic background as most web tutorials never go into that and neither the bootcamp courses though I have seen a few that do.

Something like, the guy didn't even know his code was O(n^2) or couldn't even implement dijkstra.

Your experience speaks more of academic settings than bootcamps. Just an observation.

My experience is as self-taught. I believe these are different holes from bootcamp or academy.

It might be possible that it is a sum of both holes even

For junior engineers, it's mostly contextual. How to act on a team. How to communicate with engineers and non engineers alike. What your personal coding style is. What you value as an engineer. How to take and give criticism. How to use common tools like git, a debugger, browser dev tools, etc.

A big one: that it's usually a really good idea to say, "I don't know what that means." Being honest when you don't know what someone is talking about is probably the single biggest 'hack' a junior engineer can do to level up faster (provided they have a supportive team). A lot of junior engineers don't know what someone is telling them and end up burning a lot of time googling what could be taught in a few seconds. Any decent senior engineer will understand that you don't know very much and you're going to need to be taught. Exceptional engineers will be able to read you and see that you're confused and help you, but you can't count on having one of those on your team, so you'll have to let them know when you don't understand things.

For more experienced engineers without formal training, by and large the biggest way I've seen they can level up is learning about data structures and algorithms and how the two concepts play with one another. We mostly deal with arrays and hashes in our day to day, but understanding graphs, stacks, queues, linked lists and being aware of more exotic but usable data structures like tries and bloom filters (for example) is a great way to round out your coding skills. Understanding the read and write time of certain data structures and the algorithms that go with them and how you can sometimes trade space for runtime efficiency (e.g. copy your array into a hash/dict/object that is keyed on what you're checking on for fast look ups in a loop) or vice versa will help you write better, more performant code with intent.

Another big sleeper skill you can fill in is learning programming language design. It was a really tedious subject in school that I hated, but studying programming languages and how you take a C expression and turn it into an instruction the computer could understand introduced me to a ton of concepts. I don't necessarily directly use them regularly, but they inform my development style - tokenizing, grammars, context, tail recursion, scoping, etc. I'm really glad I spent the time to learn that subject, even though it was really hard at the time.

The other thing I had the benefit of was a formal math education. I don't necessarily use calculus every day, but understanding the idea of a derivative or an integral is very useful in software engineering. A graph of metrics for instance - taking the derivative of a graph that changes frequently will tell you the rate of change - understanding how this works and why it's important helps you make smart decisions, and also gives you a seat at the table when you get into the upper levels of engineering.

Regarding working on a team, communication, handling criticism, and admitting ignorance, I think most of those are really properties of junior employees, rather than junior engineers, specifically. I know I had a few issues in my first couple years, but I worked it out. I'm definitely a much more effective team member now than when I first started.

As math, I also have a pure math background, with an undergrad degree and some graduate study. Other than having that certain rigor of thought, and a problem solving mentality, I haven't really found a lot of use for it specifically in my work. For example, I probably know a lot more about graphs than any of my colleagues, because I took several graduate level courses in graph theory, but, in actual code, not much of that matters as long as you can recognize when a problem is a graph problem and find the correct algorithm (usually some variant of BFS or DFS). Every so often, I know some random fact that helps with a problem that comes up at work due to that math background, but it's not frequent. The last one I remember is that we needed a good way to compute the area of an arbitrary polygon.

Other than that, I can't think of much that I've used in work that was directly applicable. I wouldn't even say the derivative/integral concept is specific to a math background, since a lot of STEM majors require at least a 2 semester calc sequence. CS typically requires linear algebra. Stuff beyond that doesn't seem to get a lot of use, unless you're in the exact right specific field (e.g. writing graphics or other math-heavy software) from what I've seen.

> I'll start by saying that I've worked with many self taught programmers and they were all excellent (perhaps there was a selection bias?). They also always had humorous holes in their knowledge (which they were always quick to rectify).

My guess here is that the selection bias arises because self-taught programmers that get to the point of applying for professional SWE roles have probably put significant amounts of work into learning how to program. I can actually go one better with this though: one of the better junior engineers I've worked with didn't even have a high school diploma.

Full disclosure: I am also a mostly self-taught programmer, so I may be biased here, as well. ;)

Plenty of hope. I've worked with a guy who was an ME although I wasn't a coder at the time. He was doing very well for himself.
> Many places I apply to want people who have experience in software development

> I can't put the words "software developer" on my resume

> I have written a lot of programs for my classes and in hobby projects.

It sounds like you might be selling yourself short. You might not have experience as a professional software developer, but you have experience developing software nonetheless.

Don't forget that your resume is an advertisement. You should absolutely highlight the experience and knowledge that is relevant to the position you want. People spend very little time looking at resumes, if your knowledge of databases/servers/react/linux/python isn't immediately clear in the first 6 seconds of reading, your resume will likely be discarded.

I came from a completely unrelated background in massage therapy and taught myself to code in my spare time. I felt a lot of what you're feeling.

You can absolutely get a job with Software Developer on your resume, but the first one is the hardest. I ended applying for 3-5 jobs per day until I got hired. I applied for the job that hired me over a week in. don't be discouraged, and remember it's a numbers game for sure

This. I have a BS in Comp Sci but have several friends who got in after finishing bootcamps and this is what I've heard from them as well. Just keep applying everywhere and someone will take a shot at you. It gets a heck of a lot easier to move around once you get your foot in the door.
Good job. How many jobs did you end up applying to before landing that first offer?