Ask HN: Low level OS-related or ML jobs?

4 points by khuongduy354 3 years ago

Hi everyone, I'm currently coding as a hobby, and have an intend to get into Tech jobs. I don’t really like business stuffs in SWE, I like CS-related stuffs. What I currently enjoy most is to make an interpreter, and contribute to Tauri - a Rust framework, but i don’t think I can make a living from doing only OSS.

So, I’m considering getting into OS devs, compilers, or even device drivers, embedded, hardware stuffs (I’m more comfortable in software). But these fields are rare, and risky, especially in my country, I don’t think I can get a remote job in these fields without prior experience. Another path I’m considering is Machine Learning, it’s more popular, but on the surface level, it's mainly applying prebuilt techs into business (from what I heard). Maybe, I can get entries jobs and find a way to switch into deeper (research-related) A.I areas?

Can anyone suggest me what suitable path I should follow? Deep dive into OS stuffs or A.I ?

badpun 3 years ago

I was in your exact spot ten years ago. I eventually chose to work on boring business software, as the combination of high salary, remote work and not having to leave my home town (not to mention, country) was hard to beat.

As an alternative, I imagined moving to US on the H1-B visa, getting a job at Intel or Nvidia (if I'm lucky), sitting in a depressing office for 8 hours working on some 20 year old god-awful codebase, and then coming back to my apartment to be sad and lonely there. I think it would've been a quite likely scenario. If the job allowed to me to have fun working on interesting, small projects with a low of ownership and self-directing (basically a dream job that almost no one gets), then MAYBE it would've been worth it. But, I spoke to a guy who was at Intel once and his description of the GPU drivers codebase did not sound fun at all (he ran away screaming from there).

So, essentially, at the end of the day, coding job is a coding job and is usually nothing like having fun with technology at your own time. Hence, it makes sense to compartmentalize the two, and treat job as a source of funding for the things you want to do in your life. With this assumption, it makes sense to maximize salary while minimizing the nuissance that the job is in your life.

  • khuongduy354 3 years ago

    I think such jobs should be labeled as Business, or Enterprise Developer. For example, a software to manage a bank is different from Github codespaces , which is a web-based IDE, which may requires CS knowledge to develop and it seems more appealing to me. But what i don't get along is the job title: Backend or SWE or System Engineer? When I google it's always web tutorials, or managing a database,... Hence it confuses me about what to learn to acquire such jobs.

    • badpun 3 years ago

      Developing of business aplications also requires some familiarity with CS fundamentals. You will not be coding the CS algos, but you will utilize them (they will be coded in libraries, engines and frameworks you use), so it still makes sense to e.g. know what a B-tree is and what are it's performance characteristics, as your database indices use them. Also, nowadays a lot of business applications are developed using internet-scale technologies as well (quite often I don't think it's necessary), so you may approach the likes of CAP theorem etc. in your day to day work. It will be slightly artificial and self-imposed, because, at the end of the day, you're not handling a milion requests a minute, but still :)

      The job titles don't help that much and it's always better to go into job description. They'll list technologies they work with and scope of the work for the given position (unless it's some shitty generic job ad for a FAANG, where they won't do it, because they don't know what you'll work on before they hire you).

      Normally, people working on business applications specialize in some tech stack. The best bet is the Java ecosystem, as it's very mature and tons of large companies are (and will be) using it. If you're looking for something much more challenging, but still mainstream-ish, you can go for Scala as well.

      Regarding working on interesting stuff: it's very much an option for people in the US. You can get hired by FAANG (incl. Microsoft, Oracle etc.) and work your way into a team doing interesting stuff. It won't be easy, as most jobs there are mind-bogingly boring as well, but at least it's not impossible, and the money will be great. Outside of US, options get much bleaker. There is a little bit of interesting work in Europe as well, but the salaries are usually much worse than what the best business app development jobs are paying, remote is not an option etc. Overall, not worth it in my opinion.