HACKER Q&A
📣 un-tethered

How to get a job as a software engineer?


I know this question has been asked x^N times but now I’m set on the path.

I have become relatively comfortable with JavaScript and Node. Can do basic scripting with Python and starting to dig into Java to have at least one lower level language. I’m a beginner in all of these but I feel like I am finally comfortable enough with code to start contributing to open source and building on my own.

I’m 27 with an analytical science PhD who would have enjoyed a CS degree.

That said my current aim is to start as junior at a company I admire. More Stripe than Big4 but I understand the former is a stretch.

Outside of the soft skills track, what’s the bes dev decisions I can make today to be hired 1 year from now as a software engineer at a respectable high fidelity company?

Also interested in thoughts re committing to Java or picking up FP Haskell/Clojure.

Appreciate anyone who will take the time to answer the oldest question in the book.

Currently going through Cracking the Coding Interview. It’s thought but I feel like it hits the necessary fundamentals.


  👤 gregjor Accepted Answer ✓
Don't refer to Java as "lower level language" in an interview.

With so much demand for programmers you can probably get your foot in the door with a PhD and some code samples, if you can get through the interview process. Not every company does the grueling whiteboard coding and puzzle interviews.

The best way to get a job as I've answered here x^N times is through people you know. If you approach getting a job by filling out online applications you are playing a lottery and competing with thousands of other applicants. Your application will get screened by keyword-matching software and maybe looked at by HR staff. Better to go around that process through contacts. Ask everyone you know about jobs where they work, and make a point of meeting more people in the business by going to meetups, tech talks, etc. You probably have a lot of contacts from school, talk to them.

At this point in your career I would suggest getting fairly deep with one combination of language, frameworks, tools that are most widely used: JS/Node/React, PHP/Laravel, Python/Django/ML, Java/*, etc. It's good to learn other languages but the market for Haskell and Clojure (for example) is much smaller and the people going for those jobs will almost certainly have significant real-world experience. I have recommended learning SQL and C as foundational skills, I think you will need to understand databases. You don't need to know C at this point (that's a real low-level language). If you plan to get into web development there's no way around learning HTML, CSS, and at least the basics of the HTTP protocol.

You will have to know version control (git) and at least the agile buzzwords pretty much anywhere you go. It helps to know your way around the Unix/Linux shell (command line) and the common tools. You should get proficient with at least one programming editor and an IDE.

I wrote a long-ish article about job hunting and interviewing a while back. It's been a while since I interviewed for a job, and even longer since I worked in Silicon Valley, but you might find something useful.

https://typicalprogrammer.com/job-hunting-interviewing


👤 jim-jim-jim
Do invest time in FP, specifically the typed Haskell side of things over something like Clojure. You most likely won't end up in a position writing Haskell, or even doing FP, but you will be incorporating more and more concepts from it as the industry evolves. Typescript's widespread adoption is one telltale sign. If you can demonstrate that you're an agent of this change, you'll be an attractive candidate compared to somebody who is still regurgitating OOP design patterns. It's anecdotal, but I got my first junior position at a large company with no formal CS education because I was able to describe an algebraic data type.

👤 GianFabien
You don't mention where you are based currently, nor exactly what your "analytical science" entails.

Nevertheless, my suggestion would be to identify the companies that could best use your analytical science knowledge and expertise and then approach them directly. This path is more or less what many PhDs have used to land jobs in the brokering/funds industries. Combining two strong skills makes you a more appealing hire.