Hacker News new | ask | show | jobs
by saalweachter 1575 days ago
Firstly, finish your degree.

For most employers, just checking off the degree is more important than exactly what it is. This is especially true for software engineering. You will have many, many coworkers who have degrees in physics or bioinformatics or mathematics and work as SWEs. Most of their stories will be exactly the same as yours, although "...but there weren't any good paying jobs so..." will be in the running.

9 comments

To OP:

Good advice.

Listen to this.

Focus on finishing the degree, and if possible, get as good grades as possible.

That will open a lot of doors.

____

To this comment:

I have switched from Physics to Deep Learning. This is more because of "getting to know myself better" than money.

I grew up being good at math (scorewise when little, and later, actually getting and understanding) and science. And I had a lot of biographies and a-little-harder-than pop-sci kind of science articles at home. I thought that I would become a Physicist and become a Professor.

College was a big disappointed. The beaurocracy aside, the college system relies on memorizing numerical problems, proofs, and regurgitating them during test.

And also, the field of Physics is highly saturated. It feels like all the stuff has been done. Need a field where I can contribute, rather than just watch passively.

In college, for the first time, I got to work in a real Electronics lab in my Physics major class. Absolutely loved the experience.

Reading theory by bigshots in books, and applying them with my own hands! Building stuff! That's when I first found out I loved building things and applying things on my own hand rather as much as, or more than I loved the ivory tower of pure theory.

Coupled with my frustration, I decided I will become a programmer because that is where I got to build things and not just regurgitate text.

My metor-friends (older) told me that Data Science was hot. Better get into that. Although they meant analysis type work, I soon transitioned to Deep Learning. Vision particularly.

I am on brink of publishing two research papers independently, and worked in two jobs where I developed Deep Learning systems.

I am very happy that I gave up Physics.

I may not even stay here. This transition has taught me to be less stringent on life's choices.

I have also learned that I don't particularly like Physics or Math or Deep Learning. I like esoteric things that not many can do, pay well, give intellectual kicks, opportunity to work with hands, and are math-y.

Agree except possibly the 'good grades' part. I'm self-taught and work at a FAANG. I'm also a technical interviewer. I have never once asked for or looked at a candidate's GPA.

Looking at someone's GPA honestly wouldn't help me much at all. It's not like I know how rigorous <insert university here>'s math or economics departments are.

Unless you went to a college that's a household name in your geographical region (for example, Harvard in the United States), I'd leave off the GPA from the resume.

Try to learn as much as you can, but don't fret about getting the best grades. Very few people will honestly care about your grades; they care that you graduated and whether you have the technical and interpersonal skills to fit on the team. If a person won't hire you because your don't have a 4.0, trust me that's not someone you want to work for in the long run.

Totally agree. I do a lot of interviews for my employer and no one cares about your GPA or really even your degree once you have some work experience.

I've been working in IT and software development since I left high school; it was never a barrier that I went to school to be an aircraft mechanic and don't have a tech-related degree.

Hmm, re-reading your post and thinking more about the specifics, I think the next steps vary a lot depending on your personal experience and resources.

You can basically break a "software engineering" degree down to three components - writing code, "core theory", and "specialist knowledge".

You may already have "writing code" down well enough for entry level gigs; if not, side projects are a fine way to get you there. Look over job postings that interest you, see what languages they ask for, try writing some code in that language.

For "core theory", there are three basic classes you'd ordinarily take: algorithms/data structures, an introduction to compilers, and an introduction to operating systems.

If you've taken these courses already while in your current degree program, great, you're done. Don't worry about all of the extra specialist knowledge, you can pick it up later if you need or want it. You'll know as much as any other entry level generic software engineer.

Algorithms/data structures tells you why some code is fast and why some is slow, and the theory of fast code. Compilers teaches you how programs work under the hood, how the computer actually interprets and executes your programs. Operating systems teach you how the computer as a whole works what happens when you write to a file or a socket or a screen.

You don't need to be able to write a compiler or am operating system from scratch to be a good generic software engineer, but having a rough overview of how the entire system works is one of the things that elevates you past being "just" a self-taught coder. It helps you understand what your code is doing as well as how to write it.

If you haven't been exposed to the "core theory", you're probably best off just trying to pick up books or (free) online courses on the subject. Unless you have just fantastic financial resources you shouldn't try to change your degree or get extra formal schooling in the subject. As long as you can write code, there will be people happy to hire you as a SWE, so you don't even have to wait to master the core theory to start applying to jobs.

Start with algorithms/data structures. It's the most useful and a good opportunity to get more practice writing code in, especially in new languages.

For a basic intro to compilers/OS I'd recommend the Nand2Tetris course.

It's the best course I've ever done tbh, and is actually interesting. I never felt like I was forcing my way through it.

Thank you for this amazing comment. It has helped me reorganize my understanding of the relationship between computer science and software engineering.
> algorithms/data structures

Certainly someone can recommend a good resource here?

The Wizard Book maybe?

Agreed. Speaking as someone who has hired hundreds of software engineers, I can tell you that having a degree at all tells me a lot about your work ethic. Sure, I'd prefer a comp sci background, but your degree is nearly as good. It's an indicator of how you think.

You know what other degree I see a LOT of in SWE? Music. I've hired countless music majors.

I have the opposite experience, almost. I've hired and trained lots of people with CS degrees who think they know everything and barely know the basics.

I massively prefer people who flunked university and just got a job writing code because they could. University no longer trains people to think, instead it's about jumping through hoops and dealing with pointless administrative bullshit [0]. source: I have a Master's degree.

And yes, even better are the people who wrote code as a hobby, and then decided to switch career to become professional developers. Some of the best coders I know are in that category (though the best coder I ever hired taught herself to code while getting off heroin in a Glasgow slum).

[0] Ok, so yes if you're hiring for a large corporate I can see how this would appeal.

Sure universities train people how to think. But they're in the liberal arts, which is why OP finds some many SWEs with music majors. STEM is very transactional. Liberal Arts is more about teaching you how to think and communicate.

The problem is too many tech bros have been pissing on liberal arts for 30 years. And now people are looking around and saying 'we have too many tech bros'.

My college years were spent reading various viewpoints, bringing them together, and synthesizing them into a coherent narrative. This turns out to be very helpful when it comes to solving problems and analyzing security incidents. I've found it more useful than that semester of C+ the new hires took for their CompSci degree.

> STEM is very transactional. Liberal Arts is more about teaching you how to think and communicate.

Are you able to elaborate on what you mean by these statements? What does being able to think mean and how would one be able to demonstrate that?

Do you think the only way to learn this is in the liberal arts?

> too many tech bros have been pissing on liberal arts for 30 years.

Your comment seems to be pissing on STEM. Am I completely misreading what you're saying? STEM and the vocational or mechanical arts have been pissed on by the liberal arts for a lot longer than the last 30 years.

> the best coder I ever hired taught herself to code while getting off heroin in a Glasgow slum

Those words bust the biggest bias I realized I had/have - against addicts. Thank you very much!

I said she was a great coder. I didn't say she was trustworthy. She eventually left the industry to go be pretty at gamblers in a casino where she could earn a lot more money for a lot less effort. My co-manager's blatant sexism also contributed to this. I often wonder whether she got back into coding, but lost touch years ago (this was pre-LinkedIn obviously).

"Never trust a junkie" is still very good advice.

Talent at coding doesn't automatically come with the personality or the temperament to be a good career software dev.

To provide a third vote: My midsized company barely considers people without degrees, even if they have extensive technical work experience. Example: I had to battle hard to get somebody considered for an entry-level non-technical role, and they ended up being rapidly promoted within engineering once they got past the recruiting screens.
This is my current difficulty - I work as a neteng for a large MSP in my area.

I quit university after my 2nd semester co-op during undergrad (to work at my current firm), I have since been promoted four times and now work as a senior engineer (though I cannot technically use this title). Trying to move firms now after working for 5 years, It is incredibly difficult for other firms to accept that I've been working in the field successfully given that I do not have a completed degree. On one hand, I have skill now that I could have never earned in school - on another hand I may have gimped my ability to move deep into the upper half of the first six figures salary.

Hmmm, have you had a lot of coworkers move through over the last five years? Following one of them to a new place is probably the easiest way to change jobs and build your resume.
I feel your pain. I've fought against this before.

I think it's because of the salary level - like HR/management cannot get their heads around paying someone who doesn't have a degree the kind of salary that developers get these days.

Wow. Pretty strong opinions here.

Completing a degree means you can commit and deliver, IMO.

Instead, leaving for writing code just because you can tells me that you took the short path, and that your missing basics (the real ones, which teaches you University) will knock at your door some day.

My 2 cents.

> Completing a degree means you can commit and deliver, IMO.

Not completing a degree doesn't mean you can't so this statement doesn't tell us all that much.

Not sure. As I said in the other reply, if you don't finish it, provided that you don't face major practical or financial issues, to me it is a red flag on being able to commit and bring something to conclusion.
As it stands it's a theory of yours. Now you need some actual data to back it up. It's a bit dangerous to reach conclusions based on a hunch, you might be biased after all.
I don't want developers who continue doing something even when it's blatantly the wrong thing to be doing.

Flunking out of university is not the "short path". It's the hard path. Getting a degree is not difficult, or even hard work. It's the easy choice - the thing everyone expects you to do.

I don't want people who follow orders and do what they're told. I want people who are prepared to make hard decisions, take the less-travelled path, do what they feel is right and not just what everyone else tells them is right.

I want someone who can actually code, and not someone who has a certificate that says they can code.

My 2 cents.

I think we are just talking about two different things, and that you have in mind "coders" and "developers", not software engineers or data scientists. But the OP was talking about the latter, not the first, where I can to some extent agree with you.

I saw it many times: javascript kids or self-taught backend Python "engineers" falling extremely short when it came to scalability, algorithmic complexity, or just abstracting concepts.

Similarly, I saw several self-claimed "data scientists" not even knowing what a non gaussian error distribution means.

Not knowing this stuff jeopardise your work and the projects you are working in.

Then, if you are telling me that your interview process should spot these shortcomings at the same level a university degree can, then to me this sounds a bit unrealistic.

However, if you need someone that can write code to pass the unit-tests that some one else wrote without taking any architectural decision, than OK I can agree with you, but it does not sound much of an appealing career path IMO.

Completing a degree means you can commit and deliver, IMO.

So does a lot of other valuable and still relevant lived experiences, and they come without the price tag.

But we all already know that.

Sure, if you include the price in the equation then this makes things different, you are right. I got biased by the nearly free University we get in Europe.

However, if you start something, I think that it is a good attitude to finish it, provided that you don't face major practical/financial issues along the way.

However, if you start something, I think that it is a good attitude to finish it

I 100% agree with this. I've just got a bit (maybe a lot) of chagrin towards the sometimes strident mentality that college is the only meaningful way an individual can prove they possess such a capable characteristic, or that completing college is an indicator that such a person will retain such a characteristic throughout their careers/lives.

It's useful as a snapshot of an individual's educational accomplishments for sure, and more power to them for that accomplishment, but I will always have a bit of reticence about the application of "has degree" past that.

You think degree is important? I am trying to finish my PhD. But I don't want to stay in academia after I finish. Would my degree be helpful in getting any SWE jobs?
I have a Ph.D. and am not in academia. The higher degree opens up opportunities for challenging positions, but you will probably need to show basic SWE capabilities also
It depends on how far out you are. Finishing what you start is always a "good" sign. That's what a lot of people look for.

With the OP, he's 4 months away from finishing his degree. In the grand scheme of life, that's a "blink of an eye". There is no point not to, and (I don't agree with this at all) people judge you differently if you have a degree vs. not.

In most goal-setting advice, Steve Jobs comes to mind, having a reputation for being a finisher is the most valuable attribute.

Employers basically hire staff to get stuff done. The rest is details about specialization, experience, skill-set, etc. All of which is rendered irrelevant if you don't get the jobs you are assigned done.

Re: a PhD -- ideally you should ask the question why you want one is before you start. Cursory research quickly reveals that academia as a career track is very challenging. You don't need a PhD to be a great SWE. A PhD is training to be a researcher and an expert in a specific field.

it's an interesting talking point but that's about it in most cases. If you can find a role where some domain knowledge is related to your PhD subject, or they need the skills a PhD requires (i.e: academic writing) then it'll be very valuable, but a PhD in most places wouldn't actually add much value in the day to day: most SWE work is nonacademic.

Thinking to my own experience, PhDs are pretty uncommon but of those I've worked with, some are brilliant, and some are terrible -- just like non-PhDs. I wouldn't consider a candidate with a PhD better than a non-PhD candidate, but then some people would love to hire someone with a PhD. I'd say on balance, it's a positive to have, but I would never recommend someone pursue a PhD as a route into a SWE role. A year of hobbyist programming experience is enough to get a SWE job.

Depends on where you are. I think in Europe it is more important than in the US.

But I see anything above Bachelors as a personal preference (with a few exceptions). If you want to finish PhD, then go for it.

If you're trying to finish a PhD program, I'd say it depends how much you want to finish. "I did a year or two and academia sucks" is a perfectly normal place to tap out, but full STEM PhD -> SWE is also pretty common. If you just spent three or four years writing specialized code to simulate or analyze your PhD topic it's quite possible to parlay that into an entry level SWE job.
I think it will help you get roles, I don't think it actually helps in doing the job, and in my personal experience has a negative correlation with being a good software engineer (not necessarily on skill, more on delivering what's actually needed).
The negative correlation is because how most PhDs do not focus on SWE skills isn't it? But that group are probably not interested in coming to SWE either.
In my experience its because they are more interested in researching interesting things, rather than delivering the project/task they are assigned to. Basically jump down every rabbit hole they can find!
Yes.
A lot of startups are starving for people who have experience even if they don’t have a degree. I’ve worked with compsci PhDs that spent hours/days doing something that 3 years of experience in a heavy industry will teach you to do in a few minutes using a different method or more tools. Sure advanced degrees are needed for some frontier type things but in practicality they have very little up on someone who is passionate with coding and has worked with veterans in several companies.
It's more that if the only thing stopping you is that you've realized you want to work in a different field[0] then while getting that degree may not be necessary or even useful for itself, it does just make a lot of things easier and more straight forward further down the line.

Any time you have a situation where people are filtering large number of candidates impersonally, from hiring to immigration to dating apps, some of the time you'll be blocked for not having a college degree.

Sure, you can find plenty of start-ups or other smaller shops to apply to; maybe you'd even prefer to work for people who can see past a degree or lack thereof. If your life falls out that you can't get a degree or just have better options on the table than starting or finishing a degree-granting program, it's not the end of the world, you have plenty of options and opportunity. But it's still probably worthwhile to keep all the options you can if it's relatively little extra cost.

[0] If you're epsilon away from completion, if you've already paid for your final semester, if you're not in actual danger from staying in the program, if you don't need to get a job yesterday because you've run out of runway for living expenses, etc etc.

How do you get a software engineering job as a physicist? I'm one and I tried applying for a few (mostly with titles like "machine learning engineer", etc.) and mostly received no responses. For comparison, when applying for "data scienist" or "quantitative analyst" (in finance) jobs, I got many offers. Around here, the SWE people seem to assume that physicist can't write good code.
What country are you in? When I graduated in Elec Eng in the UK there were plenty of big companies like banks, government, utilities taking graduates of all kinds to train them into software engineering. I've met plenty of SWE with degrees in history, music, or people with no degree who've started doing manual testing or admin and got into automation and then software. Equally, if you already have the skills and can pass their test I'm sure they won't care what degree you have, physics shows a high level of technical comprehension and analysis as well as hard work.
The CTO of my last company has a degree in anthropology, so this tracks.
Agreed.

And honestly, finding an entry-level SWE job with a degree in Mathematics + a background in data science is probably easier than finding an actual data science position.

This is very true, software engineering with a Mechanical Engineering degree here...