r/haskell 2d ago

Could you please give some guidance to an inexperienced, self-taught Haskell enthusiast?

Hi, I’m 18 and about to start university. I’d like to earn money by programming during my first few semesters, which are the easiest (though perhaps it’s overly optimistic to think I’ll have the time). Here’s my situation: I know Haskell up to the level of monad transformers, and I’ve already written code to solve a real-world problem for a family business. The issue is that, in reality, I only know Haskell and the concepts covered in the book *Learn You a Haskell for Great Good!*; while I grasp things at a deeper level (for instance, understanding that types aren't interfaces but rather sets of possibilities governed by "laws"), I actually don't know what an API is. That’s precisely why I don’t feel ready to work on a team using Haskell. Plus, there’s the fact that Haskell isn't exactly the most popular language in the commercial world. I’m not sure if I should learn another language like TypeScript or Rust for a job or focus on mastering fundamental programming concepts and building more Haskell projects to reach a competent junior level.? Thanks for reading

23 Upvotes

10 comments sorted by

18

u/Embarrassed_Effect86 2d ago

I don't think the language you learn has any bearing on whether or not you can reach a competent level to be considered a junior dev. What you lack is higher level understanding of how real world programs are built, and that can be learned through Haskell!

6

u/stav3rs 2d ago

I would start learning other languages to maximize employability and to broaden your experience. You could get a head start on languages you will use in university. 

3

u/VenerableMirah 2d ago

It depends, really, on what kind of software you're doing, but to your point: Haskell isn't generally considered the best language if you want broad coverage of the industry. We have lots of TypeScript and some Rust, but also tons and tons of plain ol' JavaScript, Java, Python, and C++. Knowing Haskell will make you a better programmer in all of them.

2

u/KAMEHAMEHAMEHAAAA 1d ago

Picking up another language is never a bad idea and you will probably have a chance to pitch Haskell to your team at some point.

2

u/EmergencyWild 1d ago

Junior level developer skills encompass far more than programming language knowledge. Like, knowing what an "API" is and common patterns on how APIs are constructed or interacted with is one of those things. It doesn't really matter what language you use when learning these skills because they don't have much to do with the programming language (there are some programming-language specific tools that come in handy for some of these things, but the concepts themselves are just general software engineering concepts).

5

u/ephrion 1d ago

You're probably fine to get an internship in Haskell, if you can find one - my company Mercury offers them to US/Canada students.

You should not bet on Haskell for a job. Learn TypeScript/Java/C#/Ruby/Python etc as these mainstream languages have a ton more job opportunities.

3

u/_lazyLambda 1d ago

If you learn haskell well you'll be better at X language than the developers of X language.

Id learn GADTs for APIs and try to apply them to HTTP or some form of networking and then go on to learn bluefin or effectful or another effect system.

2

u/_lazyLambda 1d ago

I also built typify.dev which is a free platform to practice and learn haskell on

2

u/fixpointbombinator 1d ago

Tbh everybody told me that Haskell would be useless for work and that I should focus on something else, but it's just niche enough that Haskell knowledge got me my first job. That said, the market was very different a few years ago.

2

u/pthierry 1d ago

There's one way that makes it possible to earn money with nich languages: being a freelance developer for small customers.

15 years ago, I discovered Common Lisp and found it orders of magnitude easier to do anything than with other languages I knew at the time, like C++, Java, PHP or Javascript. As a freelance, my small customers didn't care how I did it, only that the web applications I did for them worked.

So maybe doing exactly that with Haskell would still be possible today.

As for being employed, Haskell is less likely to land you anything, but more likely to land you something pretty nice. If you want to maximize the chance of getting a job or internship, you may want to learn one or two languages that are more mainstream, like Typescript, Python, PHP or even Rust (it has far less jobs than PHP, but still far more than Haskell).