I'm not after FANG money but would love a job in a functional language.
I'm not after FANG money but would love a job in a functional language.
I did it this way: Learned Haskell in university, found it lot better than other languages in many regards, decided that I don't want to waste my life time using worse tools for 40 years of career when there are better tools around, and set out to get a Haskell job. I taught myself enough Haskell to write real world programs besides university, and got the desired job straight after uni.
I found my job from, surprise ... the Haskell Reddit; in fact, my first job is in the raw data linked from the repo.
It is possible to onboard onto Haskell jobs without knowing the language, but it is way easier and more likely to get a job when you know it reasonably well first.
So do learn it.
If you are interested in a job using a functional language you can pick basically any of them and then jump ship to a different one. I wrote Clojure for many years before switching to Haskell.
Agree, but I would even recommend to start with a simpler one (Scheme, OCaml...). Haskell is harder.
Everything is worth learning, especially if it interests you.
That being said, you should be aware that outside of hyper niche applications, most Haskell jobs are in projects where Haskell was chosen because some lead has an affinity for it, not because of any real practical benefits in comparison to other languages.
Higher-Kinded Types seem complex to me but until I have a play I wont know.
The other thing that makes me think Haskell is harder is that functional code is enforced, while in F# it's simply the default. I'm not sure what impact this will have on complexity of real world applications. But in F# it's really easy to have an imperative shell and functional core.
That being said, expertise in FP can open the door to some very interesting jobs. I remember when I was a student (20+ years ago), the word was that FP was pretty much useless in the real world. While it's true that it's more niche than C++/JS, some teams use it, and it can give you an edge.
One data point - I get paid to solve problems by writing OCaml code. I am a self-taught programmer with a linguistics undergrad degree.
I hope this helps others who are interested, but are feeling insecure because of the stereotype that one needs a PhD to write programs in a particular language.
This isn't what I said. Even a high school student can write programs in OCaml, it doesn't require any degree and is no harder than other languages.
My point is that if you want to work at Meta, Jane Street, Standard Chartered, or other selective companies that use Haskell/OCaml, just having "Haskell" listed on your resume is probably not enough to be considered for interviews. You will need other skills to distinguish you from other candidates. Could be a PhD, or being good at grinding leetcode problems, a recognized expertise, a prestigious degree, domain specific knowledge and so on.
I suspect companies using these languages tend to be more selective on average than those working on more common tech (e.g. php, js).
I agree that listing Haskell or OCaml on one's CV isn't enough. I think this holds the same way for other languages, at least in the company where I interview.
To the people who are interested in solving problems using functional languages. You should apply, even if you think you are not part of the "selective" in-group like PhD or language expertise
> feeling insecure because of the stereotype that one needs a PhD to write programs in a particular language
One certainly doesn't need a PhD to program in a functional language. But I can tell you, there is a big gap between being able to do it and convincing someone to hire you. I even have a PhD in comp sci, and AFAICT, it hasn't convinced anyone that I can do anything in particular.
To you. Not to everyone. Personally, I wouldn't work in PHP for anything short of the Apollo program. The gap between Haskell and the best mainstream languages is not quite that large, but it's not negligible either.
And I get what you’re saying, but most places are not hiring PHP, they’re hiring boring languages that aren’t that bad to work with.
I know F# and think Scala or Ocaml might be a better choice as the next language I learn.
Purescript also looks promising.
I could invest all the time in Haskell first but there is an opportunity cost that I'm trying to maximize.
It seems so paradoxical.
It's a bit like someone saying, I'd love to be a hairdresser, do you think it's worth studying to be a hairdresser? There's something which blows up my brain to read that. If you love it, do it.
Nothing makes sense here!
I like the idea of hairdressing, however I hear there are not many jobs in that field. Is it worth studying this, if my intention is to use it professionally?
There is no paradox in wanting get some meta information on a subject before investing in learning it.
What do you mean by this? I've been out of school for decades.
Learn out of curiosity, not for money. Money will come.
There is no expectation that a job will fall on my lap. However, if I have a better chance of winning the lottery than landing a job in a technology I'm not likely to bother learning the technology.
I'm not convince Haskell will do more to making me a better programmer than another language could. If that other language has job prospects I'm going to lean into that.
(We could talk about other languages too, but here we were talking about Haskell. It's a particularly interesting choice for growing as an engineer because it's a purely functional language, which means it will force you to unlearn a whole bunch of things and give you a lot more perspective-- it's not difficult, it's just very different than most other languages you likely have exposure to. I also recommend Clojure, that's a great language.)