Ask HN: No formal software education – is there hope for me? - <AUTHOR> 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? <comment><USER4> > _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._

That's because you _are_ a junior developer and you're only worth a junior engineer's pay. Sorry if that's harsh, I'm a bit blunt; but it's not a value judgement or a criticism, it's a statement of fact. Go work at a place that pays you a junior engineer's salary and learn the industry skills you need to earn a better salary.

> _I 've got lots of projects I've done in the last year._

That's really great, and it'll give you a leg up on the other junior programmers who are applying at places. But projects don't confer industry experience with a team, which is what places are looking for. It's a world of difference between "I've done projects on my own and I can complete them," and "I've worked with engineers, product managers, managers, designers, non technical people and together we have shipped software." All of the stuff you're doing is setting you apart from your competition, but realize your competition is for junior roles.

To answer the question:

> _Is there hope for me?_

Absolutely. You seem smart and driven and capable of communicating. In my 14 years of coding professionally, I've worked with people who studied communication, linguistics, a foreign language, creative writing, IT, electrical engineering, mechanical engineering, electrical engineering, music composition, etc. Some of the best engineers I've worked with had no formal training. It's totally doable. Being able to teach is a really good indicator of at understanding complex issues and being able to communicate them, all valuable skills for a software engineer.

Also, don't get discouraged during the pandemic. A lot of places are buckling down and if they do hire, it'll be an experienced person who normally wouldn't be on the market but is because of the virus. It's gonna be tough for junior engineers for a while until the economy spins back up.

<comment><AUTHOR> Yeah I'm sort of hesitant to enter a new career during this pandemic since a lot of companies are going under. I'd rather wait it out at my current job while I keep working on side coding projects.

<comment><USER5> That's totally reasonable but just be aware side projects have severe diminishing returns after awhile. Unless you are shipping complex software as part of a team it is not preparing you more. You will still be junior. The exception being if you invent NPM or some similarly massive FOSS contribution. But if you could do that you wouldn't be asking if there is hope for you. The sooner you write code with other professionals for money, even part time, the better off you will be when you make the switch. Personally I haven't done side projects in years and it has come up zero times in startup, consulting, and FAANG interviews. Once you have experience pretty much nobody cares and until you have experience no matter what you do, you will still be junior. Writing code and building things is the easy/fun part of being a developer but its the other stuff that matters.

Also I came from a non-traditional background and have lead teams on quarter billion dollar projects. Once you prove you can ship nobody who matters remotely cares about other, preliminary or proxy credentials.

<comment><AUTHOR> Yeah that's why I feel like I may be at the point of applying now. I'm thinking of maybe getting a few leetcode problems under my belt for a few weeks just in case that comes up. But yeah, the pandemic being what it is, if I'm applying for a job I want to make sure that 2 months in I don't get let go cause the industry isn't doing well anymore.

</comment></comment></comment></comment><comment><USER6> > 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.

Truth of the matter is that you're going to have to do the junior role for a year or two. However much you think you've learnt, you're going to have holes in your knowledge if you've not done it professionally. For example around reliability and handling edge cases, making things work when the underlying platform is buggy, etc. Good news is, if you're good at it you'll progress up the ladder quickly.

I'm self-taught, and I'm pretty good at what I do: at my first job I was already teaching my boss things he didn't know (I'd been programming for about 5 years as a hobby at that point). BUT I also made a ton of stupid mistakes. 3 years of professional experience on (broken up over a few different jobs, with breaks and Maths & Philosophy degree in between), and I'm leading a small team. But I definitely needed particularly the first year to fill in the gaps in my knowledge before I was ready for a senior role.

</comment><comment> kube-system > 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.

</comment><comment><USER7> 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.

</comment><comment><USER8> 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".

<comment><USER9> > 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.

<comment><USER10> 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.

<comment><USER11> 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.

<comment><USER10> 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

</comment></comment></comment></comment></comment><comment><USER12> Another poster said "well you _are_ a junior developer" and while that's true there's a major "but..." in your favor.

It's true you are junior in programming skills as you acknowledge. But you also talk about other experience: mech e, modeling, electronics, and teaching.

You may enjoy a job that values those other skills _in addition_ to programming. E.g. a robotics company; car startup; a company like Coursera or Udemy or Kahn academy which are educationally oriented (the three have very different models) — even LinkedIn's Linda division.

In these places you can probably add value beyond what a mere junior developer could, and after being at a place like that for a while you could go anywhere.

Good luck.

</comment><comment><USER13> 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...](https://blog.codinghorror.com/nobody-hates-software-more-than- software-developers/)

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.

<comment><USER14> > _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.

<comment><USER15> > _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.

</comment></comment></comment><comment><USER16> 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!

</comment><comment><USER17> 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.

</comment><comment><USER18> 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

<comment><USER19> 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.

</comment></comment><comment><USER20> > Is there hope for me?

Yes, but you might have to adjust your expectations.

It is not quite clear from your question whether your gripe is with having to apply for a junior role or that the pay is bad?

If it is the former: Why do you expect to enter a field above an entry level? From your self-description it does sound like you are in fact at junior/entry level (not meant negatively). I would expect you to grow out of that level faster since you do have prior working experience in a different field and maybe already in the interview process I'd put you higher. But I'm not going to take your word or cv for it.

If it's about salary. Depending on the area, I don't think there is much if any shortage of developers looking for their first jobs unlike at the more experienced levels. It can be that you face quite the competition for the jobs you are applying, many of which will look better on paper(especially from the perspective of automated resume scanners). So I think the options are:

\- Keep going with the grind, finding the first job is probably the hardest. It gets a lot easier after that.

\- Consider just taking any job to get the foot into the door, even if it is not sexy and not well paid. Having say 6 months industry experience as a developer can already easily outweigh all your github projects.

\- Try to find a job, where your specific background gives you an edge over others. For example instead of going straight into a developer job, you could find a role as a mechanical engineer that can code and from there slowly transition into software engineer. Or a developer job in a company that deals with mechanical engineering one way or another. Domain knowledge can be a huge bump in hiring considerations.

Lastly regarding github profile. What recruiters will do varies a lot. Some really like looking at them, others never do it out of principle. Personally, I never look at profiles, I only look at specific projects if they are mentioned in the cv / cover letter with a description of what it is and what the candidates contributions are.

</comment><comment><USER21> I think there's an under-noticed property here: you have an engineering degree - an ME degree.

Hiring boards will often be concerned that the person applying doesn't have an engineering level degree, and may not have the intellectual horsepower to do the work. (I'm not defending this - I'm saying it is a thing).

You have an ME degree - which, say what you will, is, intellectually speaking, a lateral move, as compared to software engineering. They are comparably hard.

This is great! You won't get dinged nearly as hard, which will make your transition vastly easier.

You will have more opportunities than someone without an engineering degree, so that's a bright spot on your resume.

<comment><USER22> As a hiring manager, this is completely true. I've interviewed a lot of mechanical engineering / physics graduates as well as humanities & other non- technical people who have gone through a boot camp. I am a self-taught developer with a humanities background, so I absolutely support people without technical backgrounds, but the reality is that rigorous math and science backgrounds are a good signal.

That said, the other comments about having to deal with a year or two in a junior dev role are also correct. No way am I recommending someone for a senior role who hasn't had hands-on experience building and deploying software professionally. I will happily teach that person and argue for them to be promoted quickly once they prove themselves, but I can't just gamble and fill a role with someone who looks like they might have an aptitude for it.

</comment></comment><comment><USER23> I'd look maybe in an area where your Mechanical Engineering degree is a big plus, that is areas where familiarity with math and linear algebra is a must. Computer vision, machine learning and software for industrial robots come to mind. Obviously you would start out in junior roles there as well, but you will be able to grow and work on interesting stuff. Databases, servers, React and Linux may sound like fun now (it was fun for me about 20 years ago, replace Linux/React with Java/Swing though :-)), but that stuff gets pretty boring pretty quick.

<comment><USER24> Combining your existing competences is definitely the way to go. Like someone posted on HN a while ago (I'm heavily paraphrasing): Being a developer is boring, but being a lawyer/teacher/engineer that knows how to code gives you a superpower.

There's room to improve things by coding in every field, so don't get locked in the coding part. Think about what you know and how you can use that to write code that solves real life problems.

If you're having a hard time finding jobs, maybe try a hobby project that is somehow related to what you've done in the past. Having "domain knowledge" is crucial for writing software that is actually useful. Like Linus Torvalds said once, "without users, your program is pointless".

</comment></comment><comment><USER25> 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.

</comment><comment><USER26> I used to be on the side of no college, but as someone who almost dropped out and decided to finish I'll give you the following advice:

I have many friends who have arguably more successful careers in tech, they did not finish college. However, they are also incredibly talented and driven people (more so than me in many cases). If you don't finish school or don't have formal education know that there will always be certain forms of "high risk" or "critical" work that no amount of effort will qualify you for in the eyes of the people hiring you. Outside of that, the world is your oyster. But know that the lack of a degree will put you in the back-seat for raises, new jobs, and always be used as leverage AGAINST you. The reason I finished college was I knew I wouldn't have the drive / energy to always go up against this and knew that I'd never be okay knowing that something like that could've closed an unknowingly large number of doors on my career or startup ideas. It sucks but it's reality.

Companies like Apple and Google saying they "don't care about education" really just means they're excited to have another reason to pay employees less.

<comment><USER27> > Companies like Apple and Google saying they "don't care about education" > really just means they're excited to have another reason to pay employees > less.

Interestingly, not having a college education will often get you passed over there.

<comment><USER28> For a junior position, probably. If you have 20 years of industry experience, but no degree, Apple, in my experience at least, couldn't care less. So long as you can do the work. I have several friends without degrees who work there. But they also didn't start there.

<comment><USER27> Yes, of course. Trying to enter the industry without a software engineering degree is fairly difficult. If you have work experience, it gets much easier, and most people don't really care about your degree at that point.

</comment></comment></comment></comment><comment><USER29> My experience suggests that it is entirely possible. When I started college the plan was to major in Aerospace Engineering, with a minor in Psychology. (My university required that you do a minor in a field completely different from your major.) When I got to my junior year I discovered that I really didn't like Engineering that much, so I switched to a major in Psychology with a minor in Computer Science.

When I graduated I got a job writing computer programs for the Psychology professor I'd done my senior thesis with. After a couple of years I got a job as a software engineer with a defense contractor, and the rest of my career was spent working for defense contractors.

So it is possible to get a job as a computer programmer without a computer science degree. I would think that there would be a lot of software involved in Mechanical Engineering applications, and your degree and software experience would make you a good fit for those kinds of positions.

On a side note: I've often thought my background in Psychology was a big help in in dealing with my co-workers.

</comment><comment><USER30> The formal education does not matter. Your actual experience in commercial software development does (i.e., working on and getting paid on projects developing software in a team with all that comes with it). Code written for class, or as a small hobby project carries a little weight but not enough to bump you up the ranks. It is just not the same as being a part of a team working for a common goal.

In well over 20 years I have never once had my education (or complete lack of) be an issue. I don't even think I was once asked about it. So don't worry about that. I suggest to up your game and build something with commercial potential. Go through the whole life cycle. Release it. Pick a domain you know (education? 3d modelling? Electrical prototyping etc.). It's possible you might luck out during the process and land a job you like (or decide to take a low paying junior role), but if you don't, by the end of it you'll have a complete project notch on your proverbial belt, and your chances will improve.

<comment><AUTHOR> Yeah about releasing something I recently wrote and released an online game that gets around 2000 plays a week. It's probably the closest I've come to making something "commercial"

<comment><USER30> Give your self more credit then. Building _and completing_ ANY game and having it played that many times a week is a very handsome achievement indeed. Link up and share :)

<comment><AUTHOR> Oh I've already shared it here on HN but here it is: http:those.codes Enjoy :)

<comment><AUTHOR> Dang, and I call myself a budding developer. Forgot how to do URLs properly...

Http://those.codes There :)

</comment></comment></comment></comment></comment><comment><USER31> I've spent a part of my life interviewing candidates for a former employer of mine. It was big tech, so we got our fair share of candidates in. I understand that you feel like you are not the most qualified candidate but I think you are selling yourself short. My advice is to find maybe ~10 companies you would like to work for. Look them up, read info about them and find openings you like. Tailor your resume for each position/company and send it. Empirically, most candidates fail getting an interview because they send in a resume that's either huge or highlights parts I'm not interested in. Highlighting experience basically means writing "I'm polishdude, I developed blahblahblah using this technology, I tested my code using this, I configured a CI/CD, pushed changes to git during my work as an instructor. Also, as part of my teaching I taught blahblahblah and picked up such skills.". Show them what you've done basically. All the best :)

</comment><comment><USER32> I left a job as a chemist at the the age of 41 (with family & 3 kids) in order to start in iOS development a few years ago. I got a job as a junior software developer that did not pay a lot, and like you, no one was interested in anything I had out on GitHub, nor an app I was working other than the fact it showed I probably had actually written some iOS code.

But I was confident then as you should be now, that if I stuck around and pursued improving my skills as I worked over the next few years, I'd become a valuable asset that lots of employers would gladly hire. In fact, I did. I eventually had recruiters contacting me!

There's a lot to learn and it simply takes time and a commitment to doing good work. If you are excited about programming, then it's a bit like a dream come true, that is getting rewarded for working hard.

</comment><comment><USER33> 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><comment><USER10> I transitioned from marketing to software development at the age of 37yo. I studied full-time for 8 months until I got my first job as a junior frontend development. I had a few very basic projects on the personal portfolio (not Github though) that I do think helped get the job. But most important is that I applied to jobs that had code assignments to do at home. As a junior with time, those were a blessing. I could prove my skills without counting on college credentials or experience.

I accepted what you would call a _" super low pay"_ though, and I think you should too.

I think it is ok, and actually fair in most cases to accept as low pay as a junior development for your first job. Once you are in, you can get promotions/raises on your company or apply to different jobs for promotions/raises.

</comment><comment><USER34> Yes, definitely. I dropped out of college to be a missionary. While I was there I taught myself programming and servers and took care of the ministry's websites.

When I left, because I was still living overseas, I applied to many remote jobs with no success so I just started doing lots of freelance work on Upwork. Essentially I got paid while I was learning.

The pay was lousy and a couple clients were terrible, but two years later I landed my first 'real' software job for a startup in SF doing Rails and React.

So yes, it is possible. If I could make it so can you, especially since you have a degree in engineering and I had no degree at all, I don't think it will be as hard for you.

Of course, as others have pointed out, your pay will be in line with real world experience, but it will go up over time.

</comment><comment><USER35> 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 - <USER2> 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.

</comment><comment><USER36> 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.

</comment><comment><USER37> 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.

</comment><comment><USER38> I am a software engineer, now engineering project manager for a FAANG. My degree was in humanities. Degree might matter for entry level jobs at established companies, but skill and hustle can get you in the door at smaller companies which you can then leverage to go bigger if you want. In my experience, after you get past the junior/entry level barrier, nobody cares about your degree after that. As an anecdote, one do the premier Ruby on Rails guys, one that literally wrote the definitive books on it, only graduated high school. My advice — dig deep and become an expert in something rather than trying to be good at everything. "Well rounded" might sound good on paper, but when I need an expert on a particular thing, I am looking for an expert in that particular thing — not simply a generalist. If you are really great at build systems for instance, I'll hire you without any consideration as to degree or school. If I have an itch, I need to scratch it as quickly and skillfully as possible. If you are a great scratcher, I don't care how you got there. I got my start at being really good with fixing test suite technical debt in Rails. I developed a minor reputation as someone who could rescue Rails projects that, pun intended, went off the rails. I had a profile on Dice.com and pretty soon, I was flooded with inquiries for high paying contract work. One of those contracts was to fix some esoteric thing for $major_tech_company — that then turned into a full time offer.

Be fearless. Don't waste time worrying about what you haven't done and start worrying about what you can do.

</comment><comment><USER39> 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.

</comment><comment><USER40> > 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!

Programming is fun and exciting when it's a hobby or you are learning it. It's an entirely different beast when it becomes your job. There is a reason why burnout is so high in the tech industry. It's less "cool hacker" and more "code monkey". My guess is mechanical engineering was fun for you while you were learning it or it was a hobby. Then you got a job and it killed all enthusiasm you had for mechanical engineering.

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

Junior dev with super low pay? Where are you based? Maybe you should expand your search to other locations with better prospects?

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

Why not? Put whatever you want, but just be able to back up your claims if it comes up in an interview.

Also keep in mind that even if you start off as a poorly paid junior dev, you can rise quickly in an organization ( senior dev/team lead/etc ) if you are competent and increase your salary accordingly.

</comment><comment><USER41> It's absolutely possible. I have an art degree and what I have found to be important is to have some impressive personal projects to show employers. Maybe not all of them will look at your portfolio but enough do that you should be able to get a job if it's good.

Falling in love with programming has been very fortunate for me because it is one of the few professions where you can show your skills with a portfolio instead of a piece of paper, and it pays pretty well

<comment><USER42> How did you manage to make the transition? I'm doing a PhD in music tech, lots of coding but not necessarily commercial applications. I'm not sure academia will work out for me as the jobs are so scarce and hard to get not to mention the insanity of things like impact and the REF (UK). Any insight would be great!

<comment><USER41> I made a bunch of mobile games with Unity that worked as a porfolio for Unity Development jobs. I had been wanting to transition into more traditional software development, and I was fortunate enough to be able to learn a front end stack at my previous job. I made this project over nights and weekends, and it was a significant factor in me getting my current job doing react development:

[https://bitmelo.com](https://bitmelo.com)

My best advice would be to try to make projects that are undeniably good. So good a company would be dumb not to hire you. Def easier said then done though.

</comment></comment></comment><comment><USER43> Heya,

Just wanted to let you know that I don't have a degree (nor do I know know FEA, transducers or electrical prototyping are)

I've been in the industry for hmm, a little over two years now, getting on perfectly well so if I can get in, so can you B)

I actually applied for a graduate role (after being turned down plenty of times) and partly through sheer luck, an opening in a different city being unfilled, and a bunch of self directed learning, I got an offer

Partway through, I actually left the graduate program through a bit of sneakery (I applied for a regular dev role and passed the interview) and have been working as an SRE ever since.

I happened to have a decent background with the skills required (Python backends) but my brief experience with React came in handy as we've flipped some internal APIs into self-service internal products and so on

Personally, I'll usually poke around people's Github profiles out of personal interest, as part of the interview prep process, but I don't assign any weight to it if there's not much to see. More like a cool added bonus but nowadays I don't publish much that I work on :)

For reference, I think I was 22 when I got my first role and I wasn't someone who had been programming since a young age (although I had picked up a bunch through osmosis reading eg; HN and so on) but there are people who make career moved even later in future

None of the above is necessarily actionable but I guess just know plenty of people have been in your shoes before so don't think it's impossible or even improbable!

</comment><comment><USER44> 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!

</comment><comment><USER45> This is how you transfer to a software role when nobody knows who you are and you have nothing in production to show for it. You learn everything about company app X, and then you start at the bottom as 'customer support engineer' or even lower as 'customer happiness' or w/e they call it these days.

When you are not putting out fires of angry customers, you learn everything you can from the developers that work there even starting to write features, starting to find bugs, optimizing the software, creating new tooling, whatever. It's simple to transfer around internally, impossible to get in externally. Then from there you transfer into a developer role because now you're not just some unknown guy they don't want to risk hiring. Once you are no longer junior, meaning you put in the work at that imaginary place moving around roles internally you jettison out of there to the higher paying positions because now you're an experienced developer and probably have a little network you can use, in other words no longer a risk.

</comment><comment><USER46> 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]

<comment><USER47> 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.

</comment></comment><comment><USER48> I don't know how things are in Poland, but in my country, you can get a great junior SWE job with your background.

The problem with GitHub profiles is that they tend to contain a lot of noise that nobody has the time to go through, and when they do, the projects are usually not very impressive. They tend to look like they were made by a project generator with little subsequent work by the actual human.

My advice to you would be:

1) keep applying to jobs

2) clean up your GH account to only contain 1-2 extremely great projects. Hardly anyone would look beyond that. Get rid of the CRA based CRUD projects if you have any, they will not impress anyone.

3) use your unique background to stand out. Make sure your projects are unique, interesting and draw attention visually. Use your background in 3D graphics. Use your ME background where there's a wealth of data to be analyzed and presented. Be creative. Put up informative and interesting READMEs for your projects, as they will be the deciding factor in whether anyone decides to spend more time on your project.

Good luck! Feel free to contact if you need advice or guidance.

edit: can never get HN formatting right

</comment><comment><USER49> 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

<comment><USER49> 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.

</comment></comment><comment><USER50> 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.

<comment><USER51> 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.

</comment></comment><comment><USER52> 20 years ago, I was looking for a software developer job. I had quit university, because I didn't feel like I was getting anything out of it - <USER3> had no previous formal experience, and now no degree either. What I did have was a love of coding, and I'd been part of an online "clan" selling commercial Quake mods, but as silly as it sounded, I put it in my CV/resume. What I also did was try to stand out, so when sending my CV, I also included a CD (20 years back, mind!) and URL, showing some programming stuff.

Eventually I got a break - and it was all because of the CD!

Just as most hirers today don't look at Github profiles, most back then would have binned the CD - I reckon if your Github profile checks out and you keep at it, you'll get a break eventually.

</comment><comment><USER53> Software talent is not in demand but fairly high wages for untalented seat- fillers are sticky for a number of reasons. It's pretty hard. If I were hiring right now, I'd consider hiring you, but I'm instead looking to be hired, so sorry.

</comment><comment><USER54> I went to art school for college, which has zero math or science. So my math/science education is at a high school level. I was able to shift my career from art to programming just by studying on nights and weekends. You can do it for sure.

</comment><comment><USER55> Keep going. More side projects, more interviews (with startups). If you get a "resident" offer to work your way into fulltime, take it. Maybe the pay isn't ideal for 6-12 months, but the gratification of building yourself into a legit software engineer should make it worthwhile.

My path: undergrad and masters in MechE, learned a little machine learning with matlab in grad school, taught myself python and hacked at AI/ML side projects while working at a startup doing FEA for about a year, eventually got an internship with an ML startup... eight years later I'm Chief Scientist at a near-unicorn AI startup.

</comment><comment><USER56> Droped out of collefe, self taught programmer. I've been coder at a big multinational, tech lead in state and federal government, currently VP at one of the big three. Don't worry, try to be a good coder.

</comment><comment><USER57> >> It feels like nobody looks at your GitHub profile though

Of course they don't. Unless you built something that many other developers use, nobody will know you exist. The industry is extremely competitive.

Given your current optimistic frame of mind, I would say yes, there is hope for you but you're going to have to work yourself to the edge of insanity to get a shot at getting your GitHub profile noticed at all.

If I were in your position, I would try to work in some area of software which is related to your expertise (mechanical engineering). That can give you an upper hand.

</comment><comment><USER58> Check out [https://www.nocsdegree.com/](https://www.nocsdegree.com/) made by a friend of mine. You'll see that there are plenty of cases where you don't need formal education as long as you have the drive.

For applying to jobs, consider being creative in your application. Can you speak directly to the hiring manager? Can you make your application stand out somehow?

The best engineers I've hired have usually been ones with the drive and without formal education. Best of luck.

</comment><comment><USER59> 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.

</comment><comment> a-saleh Can speak for my employer.

At RedHat, we mostly don't care, if:

a) you still are a student of at least a vaguely relevant field (we had someone from Linguistics, I'd think Mechanical Engineering bachelor is fine)

b) you have some relevant experience (i.e. I had 2 years as a sysadmin on friends projects?)

c) you don't need the degree for employability (i.e. we had people needing degrees for visa purposes, but you have bachelor's so that is fine)

So, you should be fine. Ask friends for entry-jobs, or start building a pipeline for consulting projects.

</comment><comment><USER60> >super low pay

I changed careers from one where I was making 6 figures ... but tired of that line of work and decided to try my hand at coding and start over as a jr. developer.

I got paid very little when I joined but proved my worth and QUICKLY my pay rose.

The key as a Jr. is to get experience, get your foot in the door, do the work, and then evaluate your pay / options.

Really your first job doing a thing is less about up front pay, than it is experience, resume, and then deciding what to do next.

</comment><comment><USER61> Don't be discouraged at the moment. A lot of places aren't hiring. That being said, i myself don't have a formal comp sci education either, but I haven't let that stop me from being a dev. Comp sci is the one field where regardless of your former education, you can still make it based on your own merit. Plus the way i look at it if you have an undergrad is engineering i am sure you can learn comp sci. Keep on learning and don't give up.

</comment><comment><USER62> Back in 2015, we hired someone who is an undergraduate ME student. I trained him, and I was amazed at how fast he learned, and he is now one of our devs. Your background in Mechanical Engineering will help you a lot, with the right training, you can learn a lot of things fast. Knowing the technologies, you stated above already gives you a solid foundation. If you need help getting training materials to strengthen your skill set, feel free to contact me.

</comment><comment><USER63> Been a bridge between two fields is a differential factor in your favor that you can enjoy and monetize.

One of my first projects was a lisp + cad + export bill of materials + inventory + versioning. I was the younger and the only one they can find to automate the workflow. That was a big lever for next salary negotiation.

Software in industry is always applied software, being able to speak mechanics and software place you in an invaluable place. Use it on your favour.

</comment><comment><USER64> 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.

</comment><comment><USER65> You have an actual Engineering degree!? You're miles ahead of any "boot camp" or self-taught people that lack formal training in math. Many of the software people I work with have degrees in EE. There shouldn't be a problem and it wouldn't be seen as a negative by anybody.

</comment><comment><USER66> Juniors dont get super low pay. Just lower than seniors. Hobby projects don't count as work experience, but i don't doubt your experience in teaching will count for something. It's a bad time to be asking a lot of money though. You might have to settle for less.

</comment><comment><USER67> Well, I got there with a cello diploma.

Maybe you could leverage your domain knowledge to get some software-adjacent gigs to pad your resume? I started my software career in musical audio signal processing, which branched out to mobile, games and machine learning, gradually opening more and more doors.

</comment><comment><USER68> Honestly just start applying and make it clear, in your CV, that you can code along with links to some code you've written. A lot of people applying for junior dev roles are far worse than you'd imagine, you sound like you'd have a shot if you show enthusiasm.

</comment><comment><USER69> Omscs, or other online ms programs, could boost both your self confidence and career chances.

</comment><comment><USER70> Totally doable, I work for a large (public) corporation in the bay area. I dropped out of school about 10 years ago. Take contract gigs, hustle and grind. It sounds like you just need to prove yourself.

</comment><comment><USER71> I love the freakonomics podcast, especially when it gets into behavioral economics. There's a ton of good episodes. If you've never listened before try the Trader Joe's episode.

</comment><comment><USER72> I have no degree at all and I've got a leg in. Keep looking in unexpected places like forums, fellowships, and FOSS. Keep making true friends. They will come through when it counts. I am more fortunate than a lot of people.

</comment><comment><USER73> Not that this is helpful in the moment, but the first job is going to be the hardest.

</comment><comment><USER74> Whenever I'm hiring, I consider an engineering degree equivalent to (if not a little more impressive than) a CS degree. Of course, you do have to be able to show you know what you're doing.

</comment><comment><USER75> 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.

</comment><comment><USER76> 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.

</comment><comment><USER77> i'm a 39y old ex-banker (>15y in banking). finished a bootcamp in 2018. now working for a startup as a frontend developer for the last year. i'm not saying i'm a success story. but if i was able to come this far, i'm sure you'll do much much more better than me. i actually envy you :-) good luck and have fun

</comment><comment><USER78> Have you considered consulting? You sound like a driven individual, so why not set your own rates and cut out the middle man?

</comment><comment><USER79> maybe you can try something thats not a developer proper

i have absolute zero of formal software education, and i'm pretty senior devops i bet there are other near-software fields that could be relevant and hiring managers are more flexible

</comment><comment><USER80> You're in good company with Steve Jobs, Bill Gates and Larry Ellison.

</comment><comment><USER81> My background is in pure math. I've had a total of about 4 CS courses throughout 4 years of undergrad and 3 years of grad school. My first software role was 6 or 7 years ago, in SoCal, at a salary of $70k with no stock options or RSUs. I did have a bit of an advantage in that I had been playing with computers since I was 7, and started using programming as a tool in my 20's. I also had a copy of CLRS that I had studied large portions of, and that helped quite a lot, especially with concepts like Big-O notation.

If you're going to follow my example (and I'm not necessarily suggesting you do -- my path did not feel close to optimal), then you should start applying for those "junior for some super low pay" jobs, for at least a year or 2, as long as it's enough to support yourself.

What I did after that was move to the Bay Area and ended up taking a job at a startup for $105k and some worthless options. From there, it was a steady progression. Next job was $140k and some probably worthless options, until now where I'm over $200k total comp at a public company.

I'm not saying any of this to brag, either. If anything, compared to online salary and comp resources, I'm probably around the median for 6 YoE in the Bay Area. But, the median SWE comp is still really good, and you can live quite well on it while maxing out 401k's, paying off student debts, or whatever your financial priorities are at the moment.

If you go this route, be prepared for a lot of rejection looking for that first job. Some companies will see no CS degree, no tech internships, and no coding-related work experience, and just bin your resume. Even on my second job, I was finding myself getting rejected or ghosted for positions where I felt my resume was nearly a perfect match to the job description [0]. Persistence is the only way through.

Stuff I would advise you to do that I didn't do so well would be things like get a LeetCode premium subscription and start solving the problems. I don't mean "grinding LeetCode" like you see people bragging about on /r/cscareerquestions; I mean start with the easy problems and use those to learn more about programming, then move on to medium problems and use those to learn about CS, while also gaining insight into interview questions you'll see in the wild.

If you have friends in the tech industry who are at companies you'd like to work for, try and get some referrals. This can get your resume looked at, even if you wouldn't appear qualified on the surface.

If you land a position that's primarily coding/software-oriented, but it's not literally called something like "software engineer," consider putting it on your resume like "$ACTUAL_TITLE (software engineer)". Part of my problem after my first job was that the position title wasn't called "software engineer" even though writing software was literally all I did.

There's probably more, but those are the main things I can think of right now.

</comment><comment><USER82> Generally speaking, yeah, without directly-relevant industry experience you'll get stuck entering a more junior or intermediate role.

The vast vast majority of job postings are looking for experience in particular areas, such as programming langauges, game engines, commonly-used libraries, software suites etc. Some places will literally not even consider candidates who don't match some of the stricter requirements, like a certain number of years writing C++ or whatever. Fortunately, many places will overlook a "miss" in key categories if there's a lot of good stuff elsewhere.

As someone who has been programming for work for over 20 years, I'm going to disagree with some suggestions you got on here about getting a master's degree. My personal advice, based on my own experience, is you're better off getting in the industry as soon as possible. You will be literally getting paid to learn, and making contacts who can inevitably be your "in" at other companies over the years (if necessary).

Everyone's experience is different of course. I'm one of very few people at my job who are at my level and have no degree at all. On that note, I know many people who say their degree was completely useless for getting to where they are now (other than maybe looking good on the resume).

I think most places will look at your Github profile if you link it -- depending on the company. Even if I didn't mention it to them, I've looked at the open source contributions of every single candidate I've ever evaluated, if they linked it.

From what you're summarizing, you can absolutely put "software developer" on your resume. It sounds like you've done a bunch of programming over multiple years and built a bunch of real, working projects. Though unfortunately, those are not usually given much weight because most companies want to see your experience building shipped products, with a team, over some period of time. Regardless, you're applying for a certain role, so tailor your resume (skillset and experience) to correlate best with that role.

Anyway, yes, search around for places that seem interesting and look for the roles they have open. You may have to apply for many! There were many places I was so sure I'd get an interview at, who didn't even respond -- even when I had quite a bit of experience. It's not a big deal, just keep trying man.

When you get asked about stuff you don't know in interviews, don't worry about it - just say something like "Ahh I don't know about that, but I'd love to learn about it". I mean, assuming you actually would like to learn more stuff, and excel at new programming/technology skills! :)

If you want to discuss further I'm actually totally glad to talk, though my experiences might not be directly relevant to where you're living. Either way, take care and best of luck!!

</comment><comment><USER83> I realize I'm not doxable so you can consider my comment "fake" but I am a contractor SE making $83K/yr in midwest, no degree. Granted also means I have no health insurance(personal choice).

I went to school/failed out, left with some debt(still in debt). I was going for Phys/Eng co-op program(5 years).

I got into web development luckily(personally trying to make high traffic ad revenue websites) that didn't work out but I became a full stack developer(can build an interface/make matching backend with auth in LAMP).

I freelanced online(UpWork) then got into a local web developer agency(WordPress... templates...) then I got lucky to make the jump into a local corporation in my state where I'm now an SE. It was unreal to me at first as my previous job I only made $50K/yr and mandatory 45 hrs for "salary".

Now I just keep learning so if I lose my job I can hopefully get hired elsewhere.

I was washing plates/worked in a factory/did data entry... yeah I'm super lucky I made it.

So it's entirely up to you and I'd say with a degree the odds are even more in your favor since that always bothers me as a lot of jobs I can't apply to "no degree".

It's entirely up to you, you have to want it. For reference I was not into computers when I was younger, we had one and I just played Runescape on it. My journey in this field started in 2013 so it's not something I just pulled out of my ass overnight.

Use LinkedIn by the way it works, but be truthful as well, don't game the system.

...

Personal rant

This is a personal opinion but I've been pretty stressed out at my job, mostly the "bureacracy" like "every line of code" is traceable. JIRAs, design docs, unit test/selenium/regression testing... so much work I can't just "solve this problem" you know... I don't know. It's interesting, my prior job sucked because there was no chance to learn and it got super repetitive building template after template from a design. But there was also barely any sort of structure/no testing... we barely knew how to use Git as a whole.

Clarifying, I'm not against the concept of testing. It's nice being able to run old ones and see the app didn't break when a new feature is added. Just saying there's a lot of "paperwork". Which... get a hobby right or change jobs(what I'll probably do).

I'm at the point now where I can almost make anything I want. Granted I am not a scaling-god or super devops heavy(aside from using Docker)/not an algorithm guy. Also have not bit the ML/AI bullet yet. But yeah, there's a lot to it, the surface area, but a lot of technology now makes it super easy to get into/accessible. Think React and React Native/Electron so easy to build cross platform. Crash courses online to quickly pick something up.

And all the commoditized services eg. Twilio/Mailgun/AWS/Browserstack/etc... (I don't like AWS expensive).

<comment> barry-cotter > I realize I'm not doxable so you can consider my comment "fake" but I am a > contractor SE making $83K/yr in midwest, no degree.

You are making half of a new grad salary at a FAANG, if that. They have offices in the Mid West. Please consider boning up on LeetCode or Elements of Programming Interviews or Cracking the Coding Interview and getting paid much, much more.

<comment><USER83> thanks for the suggestion

> grad salary at a FAANG

I need that mindset, plenty of work/opportunity/more pay

I actually was hit by Amazon/Google but I think that's just recruiters on Linked In looking for "software engineer" matches in profiles. I just thought with my "no degree" thing and that I'm not a heavy algorithm guy, I didn't really see myself as a FANGULTAD person. The $83K is nice with my means(single/midwest) but I'm still trying to get out of the debt that I have/wasted from school that I didn't use with my "savings"/credit.

Since I don't have nice savings/investments I'm not really secure. It would suck if I lost my job but I have a burn rate of close to a year.

> boning up on LeetCode

Yeah I was doing some. I know you should at least know the big O/sorting... mainly so you don't make poor architecture choices.

I am making sure that I have value by learning a lot(granted I have stayed away from Microsoft stuff as I never personally used it eg. setup an IIS server) and I'm sold on React.

I don't know. I also think I'm aware I need to be on some meds or something to be "truly performant" so I'm also looking for freedom as well(my own SaaS products) but I don't have ideas currently and so I'm just a do-er at this time. I also suck at all the scrums/meetings I feel like I make an ass of myself all the time... so idk.

I'm also not a super maths guy eg. linear algebra/ML/AI stuff.

But yeah I know it's up to me "I'm not, I'm not, I'm not, etc..." so I won't haha. And it is all about mindset as you pointed out, it's not a lot of money elsewhere. The rent is insane there(SF) that's my monthly salary ha.

last edit: I would like to break 6 figures, that would be cool.

</comment></comment></comment><comment><USER84> In short, you have no degree and no software engineering experience, so getting hired for a junior dev role with super low pay should be the realistic next step.

I have no degree, but I started my career with a lot of open source projects on Github. If you work hard enough there, and you actually market your projects and your own brand, you will have a chance at getting hired. I was offered my first job at a very, very low salary and I took it. After a year, they realized I was worth my salt and they wanted to keep me, so I got a hefty raise.

If you want into this industry, I recommend you do the same. Make some open source projects which are useful and market them. Make them look good, visually, and do the same with your own website. Meanwhile, apply places and talk to recruiters. If you get an offer and it's a low salary, you should probably take it. The only reason you shouldn't would be if your personal expenses require a higher salary (i.e. you have a kid); you may need to lower your class of living, if you're single and used to making a lot more. However, once you get that first job, do everything you can. Learn everything you can. A couple years in, people won't know you don't have a degree; you'll just be another dev.

There's one key thing about practice that I'll mention here, though: stick with one thing, at the start. You need to make up for your lack of credentials and experience, so it would be good if you're very comfortable with _something_. For me, it was C++ and game engines.

With that said, the lack of degree still bites when it comes to job changes. Even later in my career, I've had teams give me the "okay" and even welcome me to the company before someone higher up sees I don't have a degree and calls the whole thing off. That primarily happens with larger companies, though, so you're better off sticking with smaller companies until you have enough work experience to make people no longer care where/when you went to school.

Lastly, I mentioned this above, but it's the most useful point here and it's worth saying multiple times: market your fucking brand. Firstly, if I spent a weekend making a FOSS project, I'd spend the next week adding documentation, CI, code coverage tests, and everything else which people expect from a Github project these days. Why? Because it looks better and it makes you look better. Secondly, if I make a ray tracer or game engine, I'm not going to show it rendering some spheres; instead, take the time to parse some file formats to show a whole scene. This is because people make up their mind about something they see in the split second when they first see it. It doesn't matter how slick your code is; make it look good to recruiters, team managers, and passers by. Thirdly and finally, know your audience when you're making things look good. When you build your website, build it not for super technical people, but for the most average mouse clicker you can imagine. That's who you need to impress in order to get your résumé in front of a dev.

</comment><comment><USER85> 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.

<comment><USER49> 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

<comment><USER85> 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.</comment></comment></comment>


Leaked audios: US embassy and opposition organised coup in Bolivia (Spanish) - <AUTHOR> https://www.jornada.com.mx/ultimas/politica/2019/11/12/revelan-audios-que-ligan-a-la-oposicion-y-a-eu-en-la-asonada-6709.html <comment><USER2> Evo Morales tried to run for a 4th term against the law (Bolivia has a 2 term limit, but Evo claimed the first one didn't count). He called a referendum to change the term limits and got shot down. He ran for the elections anyway and "won". The day after the electoral body of Bolivia confirmed that election was rigged. The military then asked him to step down.

I can't understand why Evo is viewed so favorably in the USA.

</comment><comment><USER3> I don't know anything about the quality of the source publication* but for anyone who is interested here is a Google translation to English: [https://translate.google.com/translate?sl=auto&tl=en&u=https...](https://translate.google.com/translate?sl=auto&tl=en&u=https%3A%2F%2Fwww.jornada.com.mx%2Fultimas%2Fpolitica%2F2019%2F11%2F12%2Frevelan- audios-que-ligan-a-la-oposicion-y-a-eu-en-la-asonada-6709.html)

* Chomsky described it as "maybe the only real independent newspaper in the hemisphere" [https://en.wikipedia.org/wiki/La_Jornada](https://en.wikipedia.org/wiki/La_Jornada)

</comment><comment><AUTHOR> The article cites this leak which is in English [https://bbackdoors.wordpress.com/2019/10/08/us-hands- against...](https://bbackdoors.wordpress.com/2019/10/08/us-hands-against- bolivia-part-i/)</comment>


World population to hit 11bn in 2100 – with 70% chance of continuous rise - <AUTHOR> http://www.theguardian.com/environment/2014/sep/18/world-population-new-study-11bn-2100

<comment><USER2> Yawn--- I'm pretty sure every continent besides Africa has a sub-replacement fertility level currently.</comment>


Rotate the World - <AUTHOR> http://richarddmorey.org/map/ <comment><USER2> Jason Davies' also did this with many more projections than mercator. Fun to browse [https://www.jasondavies.com/maps/transition/](https://www.jasondavies.com/maps/transition/)

<comment><USER3> Fun indeed.

It would be nice to know the advantages of each of these projections, and why they were developed.

<comment><USER4> Start with [http://www.progonos.com/furuti/MapProj/Normal/TOC/cartTOC.ht...](http://www.progonos.com/furuti/MapProj/Normal/TOC/cartTOC.html)

If you want formulas, [https://pubs.er.usgs.gov/publication/pp1395](https://pubs.er.usgs.gov/publication/pp1395)

If you want to know more, there are many books about cartography.

</comment></comment></comment><comment><USER5> Are we ever going to be able to get rid of Mercator, or are we doomed to having people think that Greenland is as big as Africa until the end of time?

<comment><USER6> You shouldn't want to actually "get rid" of Mercator entirely. Mercator is pretty great for interactive maps on the Web. Conformal angles, north is always up, splits nicely into tiles.

As long as Africa and Greenland aren't on the same map, it's got almost everything that you want from a map.

Of course, what's best for an interactive map is if it turns into a globe when you zoom out, like Google Earth. instead of being a shitty global Mercator. That's a lot more graphically complex, though.

<comment><USER7> Why not have it stay as a globe when you are zoomed in? It will be similar to Mercator, but the aspect ratio would be more accurate especially as you get further from the equator.

Admittedly, it is easier for developers who are adding features if you do it as Mercator, but not that much easier (if it has a good API).

<comment><USER6> I don't know what you mean about the aspect ratio further from the equator. Mercator is conformal, it preserves angles, so the aspect ratio is 1:1 everywhere that it makes sense to say "aspect ratio".

Are you talking about the problem with the shape of a Mercator tile becoming absurd very close to the poles, which I wouldn't call "aspect"? Or are you thinking of the equirectangular projection, where the aspect ratio changes to preserve the distance between latitude lines?

The reason not to use a globe is efficiency. Not only is 2D easier than 3D, but you can make Mercator out of tesselated tiles. You can't do that on a globe without having way too many tiles or obvious seams.

<comment><USER7> Right but things like google maps doesn't really use tiles anymore as far as I can tell, they do it using vectors. Tiles suck for lots of things, for instance scrolling can move the street name off the visible map, while doing it as vectors the name can be adjusted.

<comment><USER6> The tiles aren't static raster images, but they're still tiles, made of vector data. You can see them while it's loading. This allows Google to cache the files they serve.

And when you pan a Google Map, you're panning a flat Web Mercator projection. If it were a projection of the globe, then everything that's already been rendered would have to be adjusted by imperceptible subpixels to account for the curvature of the Earth.

<comment><USER7> Well if it vector data, the "tiles" can simply be a region of a sphere. That alone is not a reason for Mercator.

There may be efficiencies of panning a flat projection, but that is becoming a smaller and smaller issue as devices get more capable.

Also, even when in "map mode", you will often notice that google maps is doing more than that. Go to a place where there are tall buildings (I'm looking at downtown san francisco) and you can see the perspective shift on the buildings as it pans.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Also this: [http://mrgris.com/projects/merc- extreme/](http://mrgris.com/projects/merc-extreme/)

<comment><USER4> For more along these lines, [http://archive.bridgesmathart.org/2013/bridges2013-217.pdf](http://archive.bridgesmathart.org/2013/bridges2013-217.pdf)

</comment></comment><comment><USER9> When I was a kid, getting access to maps and globes was like a revelation. Now look at us, spinning something the size of the earth in web page. If you like looking at things from this orientation, give the celestiaproject.net a try.

</comment><comment><USER10> This is wonderful, some of the first programming I did was to try and do this in GWBASIC on a 286 many years ago. It's magical to see this in realtime in your browser.</comment>


Ask HN: What do you guys think about Shark Tank (the TV program from abc)? - <AUTHOR> <comment><USER2> There are good lessons to be learned from Shark Tank. I highly recommend checking out James Altucher's article about it: [http://www.jamesaltucher.com/2012/02/ten-lessons-i- learned-f...](http://www.jamesaltucher.com/2012/02/ten-lessons-i-learned-from- shark-tank/)

<comment><USER3> In the past, I have found good lessons to be learned from James Altucher.

</comment></comment><comment><USER4> It's encouraging people to start their own businesses, which is a great thing. The quality is terrible though, so the lessons people take from it are mostly wrong.

<comment><AUTHOR> Can you illustrate your argument with one clearly wrong lesson that they gave?

<comment><USER4> The entire premise of almost everything they do and say is wrong because the "Sharks" are clueless jokers. The best and brightest are not exactly lining up to be on Shark Tank, so it's a pile of rich people who got lucky and want to be famous.

One example: they often doom their companies to failure by taking too much equity, making them completely unfundable by future investors and destroying the motivation of employees/founders.

</comment></comment></comment><comment><USER5> I like it for its entertainment value</comment>


Practical functional programming in JavaScript - <AUTHOR> http://extralogical.net/projects/udon/ <comment><USER2> > Currying is the process of converting a function of arity n into a nested > set of functions with arity 1, i.e. making it partially applicable

If a reader knows what the words in the description mean, then presumably they know what currying is...

Wouldn't it be better to have documentation that illuminated, rather than showed off your grasp of programming terms?

<comment><USER2> Also it seems a bit weird to have 'any' and 'filter' without having 'first'.

<comment><USER3> Not really -- "any" and "filter" are total functions, but "first" of an empty list is undefined.

On the other hand, that also applies to foldl1 and {max,min}imum{,By}, so it's probably not the reason.

The reason is probably that in JavaScript you can just say a[0] to get the first element element of a.

<comment><USER4> It seemed unnecessary, yes, although I suppose there are possibly some circumstances where one might want a `first` function—for example if one were folding over a list of lists.

<comment><USER5> There are an infinite number of circumstances where one would want 'first'.

In Lisp terms[1], 'first' is 'car', which, in conjunction with 'cdr'. With that combination recursive logic is regularly implemented.

[1] Some Lisps already include this alias.

<comment><USER6> In most cases the "a[0]" approach works, however. The set of circumstances where you want "first" as a proper function is limited to those cases where you need to pass it into some higher order function (which is still infinite, granted, but it's not 'every time we'd want "car"').

</comment></comment></comment></comment></comment></comment><comment><USER7> As both a functional and a javascript programmer - I don't see the point of the curry function. I understand currying is great, I even use it a lot, but I don't see the benefit of converting a "normal" function to a curried one.

I mean, when I need currying, I just write my code like that.

Everything else looks pretty awesome!

Have you looked at underscore (<http://underscorejs.org/>) a lot of the functionality seems to overlap (and it's what I've been using for a long time to make functional javascript a bit more palatable)

<comment><USER8> I'm with you on the currying thing. The ability to curry functions doesn't enable you to do anything you couldn't already do better and with more flexibility by writing the full anonymous function.

Their example breaks down the moment your argument order matters: <https://gist.github.com/3052264>

<comment><USER9> They seem to simply be missing flip.

      // Lets curry subtract instead of add
      var subtract = Udon.curry(function(a, b) {
          return a - b;
      });

      var five_minus = subtract(5);
      var minus_five = Udon.flip(subtract)(5)

<comment><USER4> Yes, although there is one subtlety here: should `flip` return a curried function, or an uncurried function? This isn't an issue in Haskell since it only has unary functions.

<comment><USER9> Haskell has tuples, so it could use an:

      (a, b) -> c

representation. If the uniform/canonical way to use functions is defined to be curried, then flip can simply return them curried.

<comment><USER10> > Haskell has tuples, so it could use an:

Which it does:

        curry :: ((a, b) -> c) -> a -> b -> c

        uncurry :: (a -> b -> c) -> (a, b) -> c

</comment></comment></comment></comment></comment></comment><comment><USER10> Why would I go with Udon (eager, functional) rather than underscore (also eager and functional, but more popular) or wu.js (lazy & functional)?

<comment><USER4> You probably shouldn't. :)

</comment></comment><comment><USER11> Looks awesome, mainly because all the function names tie up with Haskell, but what's the difference between this and underscore.js?

Also, you might be interested in Roy: <http://roy.brianmckenna.org>

<comment><USER4> It has a few more functions that operate on lists, but it's missing a lot of the general utility functions that Underscore has.

Roy looks interesting, thanks for the link.

</comment></comment><comment><USER12> I'm in the process of writing my a functional utility library myself, and having thought about these things for a while, I think letting everyone curry things themselves make things less intelligent.

For example:

Udon.elem(2, [1, 2, 3]) === true;

As it stands this is simply an accessor for Array.prototype.indexOf. If people know how to use that, this alias is relatively useless unless you want to compose. And even then, you could always compose around the expression, or with a method on the prototype of the result (Number in this case).

However, it's very useful to have a curried version of it so that it can be used in filters:

[1,2,3,4,3,2].filter($.elem([2,4])); // [ 2, 4, 2 ]

This maintains your current javascript indexOf usage, but allows a higher order use that I think should be the default for this function.

If you want you JavaScript to look more like Haskell, then your way makes more sense, but having to write Udon.curry everywhere sort of takes away from that cleanliness you are trying to recreate. I prefer to not mess with existing semantics too much because of it. For reference, here's my library: <https://github.com/clux/interlude#usage>

<comment><USER4> > having to write Udon.curry everywhere sort of takes away from that > cleanliness you are trying to recreate.

This is true, and I considered your approach when writing functions like `elem`. There were two reasons for this. Firstly, I wanted to avoid introducing more closures than necessary. Secondly, I wanted to keep the source code reasonably transparent (if admittedly rather terse).

There is definitely a place for your approach, and it may even be the better one in practise. It's hard to say without writing large projects in both.

</comment></comment><comment><USER13> Is it standard practice in other languages / libraries to have the function argument first and the data argument second, in e.g. map and filter?

In usual PHP fashion, array_map and array_filter take arguments in different orders. From all the jQuery i write it seems more natural to put the function argument last ($.get, $().bind, etc).

<comment><AUTHOR> Putting the data argument second is nice when combined with currying. For example:

      var bigNumbers = Udon.curry(Udon.filter)(function (number) {
          return number > 5;
      });
      bigNumbers([3, 1, 4, 1, 5, 9]);  // [9]
      bigNumbers([2, 7, 1, 8, 2, 8]);  // [7, 8, 8]

</comment></comment><comment><USER14> If you are interested in this you might want to check out <http://gkz.github.com/prelude-ls/> \- it has almost all the functions included in Udon as well as about 60 more based off of Haskell's Prelude module.

<comment><USER4> That's very cool, although you have to use another dialect of JavaScript if you want to modify the source code, with all the disadvantages that entails.

<comment><USER15> True, but taking that aside and focusing on practicality, both underscorejs and Preludejs together provide one heck of a toolbox. I really enjoy functional programming a great deal and have been using it every which place I can the last several years. I totally understand that this is your take on the subject matter and so far so good, though the docs and usage for me are strange. If you have the goal of mass adoption you'll need to convince people like me why it needs adding to the toolbox.

<comment><USER4> I don't think one can ignore that and also focus on practicality. Using these JS dialects _is_ a practical issue. Learning them and remembering how they work imposes a certain amount of overhead, albeit a reasonably small one. Of greater concern is maintaining projects written in these dialects: what if the support around key parts of your toolchain goes away? Of course they're open source, so you can maintain them yourself—but that may be a lot of work, and will rarely be the highest priority. Ultimately it may be more effort than it's worth, even if it's a lot more enjoyable to write than vanilla JavaScript. I'm not saying that this will always be the case, but it's an issue that does need to be addressed before jumping in and using them on a major project.

Anyway, Udon was really just a personal library which I tidied up and documented in case it might be of use to somebody. I think this is generally good practise: it encourages one to write clean, maintainable code, some documentation, and a test suite with reasonable coverage. In principle one should always do these things, but somehow putting it somewhere public makes it more likely that they'll actually happen. I was actually quite surprised to see it on Hacker News today, since I first wrote it two years ago and last made any changes to the source code over a year ago.

In other words, I'm not exactly falling over myself to promote it to the wider world or make it fit people's needs other than my own. Patches to increase the functionality of the library or improve the documentation would of course be welcome, and several good suggestions have already been made on this thread. But I'm not too concerned about convincing people here or elsewhere that they should be using it. In fact, they probably shouldn't: as you and others have said, most or all of its functionality is provided by other libraries which are far more actively maintained (this is really just a corollary of my first point).

However, I would be interested in hearing what you think is strange about the documentation and usage.

<comment><USER15> It's an issue I see when things go public. Public then mainstream. As such mainstream users mean mainstream docs. So my evaluation was in those eyes. The most important thing to gain is refinement that can be learned for the next lib you may or may not start/contribute to.

</comment></comment></comment></comment></comment><comment><USER16> I'd probably throw in concatMap, head, tail and the various scan functions for lists. Maybe init and last as well, although I never really use them.

As far as functions go, uncurry would be neat and create a nice symmetry along with curry.

<comment><USER4> Patches for these would be welcome; I did mean to add them, but I got distracted by other projects, and then by my PhD.

</comment></comment><comment><USER17> i don't see any advantage of using it</comment>