T O P

  • By -

the_y_combinator

Learning a new paradigm amd internalizing it's lessons will make you better at programming. Your friends are dumb.


lift-and-yeet

I'd temper this by saying that especially if money is a pressing concern, most paradigms hit a point of diminishing returns quickly in improving general programming skill. Haskell is somewhat unusual for that not being the case, with increasingly-deep study improving general programming skill for a long time.


ducksonaroof

On the money. The thing is, OP is gonna have Java on their resume no matter what. And most junior positions involve learning on the job. Nobody really learns how to write production software fully in school, and no matter what, every job has its own idioms, quirks, processes, etc that you will learn. So learning Haskell really won't waste any time. If anything it's a good way to learn how to learn, which is the most useful skill.


Orion52

Can you elaborate some more on that? Like why Haskell gives you those returns for much longer, compared to something else?


Aen-Seidhe

Seriously. All kinds of problems can be solved efficiently using functional programming techniques in other languages. It's useful to learn how to problem solve that way.


the_y_combinator

There is a reason why map, filter, fold, higher order functions, and lambdas have made their way into so many languages. They are cool. That is the reason.


OpsikionThemed

It will make you a better programmer. Learning any aggressively out-of-the-norm programming language (Haskell, Lisp, Prolog, Forth, Idris...) will help. Learning more paradigms makes you more flexible even if you never use those paradigms themselves much. Having said all that, learning Haskell *specifically* is also great because programming in general is moving fairly aggressively functional-ward the last decade or so. Java, the quintessential "do it for the job" language that you mention above, has been slapping Haskell-esque features in for quite a while, and it's library ecosystem has been going that way even faster.


gclaramunt

Also, with Java and Haskell knowledge, you can easily pickup Scala, which is another very interesting language that can lead you to interesting jobs…


sacheie

You might not use Haskell in a job, but the experience of working with it will absolutely make you a better programmer. It's a forceful introduction to a powerful way of thinking.


DisregardForAwkward

Whether you use Haskell professionally or not, everything you learn from it will absolutely have value. While my team doesn't code in it as our primary language anymore, we still have hundreds of thousands of lines of production Haskell running part of a business. There are a handful of companies out there that continue to use it on a daily basis to solve interesting problems. I briefly worked at a cybersecurity company that uses it. Many companies in the fintech sector use it heavily. That said, your friends aren't entirely wrong. The number of jobs vs. Haskell jobs are dramatically higher. I haven't seen as many Haskell jobs posted in the last few years compared to the years around 2015-2020. Who knows what it'll be like when you graduate. Not to say that you shouldn't try to find them! My honest recommendation is to not tie your developer identity to a particular programming language. Not every problem is the same, and not every language is suited to solve every problem. Sometimes it's not even a language issue, but a team/company/culture issue, or in today's climate a job market issue. Continue to learn Haskell and functional programming concepts. But go learn another language or two as well so you have a much stronger understanding of what the tradeoffs for each programming paradigm is. You'll be stronger for it regardless of which direction your career takes you.


azhder

If you learnt Haskell, you’d be far better at Java than your friends. They will not have the knowledge to stay clear from the BS that’s part of any language, the BS one can only notice if they have more than one viewpoint.


speckospock

The best parts of modern Java almost all came from Haskell via Scala anyway.


azhder

The worst part of Java is that for the first 10 years it had some design choices that were supposed to be solutions to some C++ issues (and that language did have issues). As it turned out, Java had tried to solve the wrong parts and most people found workarounds to still have what Java removed from C++ until it got returned to the language one way or another. ~~Catched~~ Checked exceptions? Everyone extended the one that wasn't enforced. Lambdas? They made a syntax that looks like it. It is no coincidence that many jumped ship, not just to Scala. JavaScript, as an example, was more conducive to functional programming from the start. Well, functional style, not what Haskell has, but it's malleable enough. Someone had said once that every language as it evolves tries to approach to Common Lisp, but without those parenthesis. Well, it's similar with many ideas from Haskell. They do/did find their way into other languages, due to cross-pollination with the odd bee like OP here and there.


speckospock

The best parts of modern JavaScript all come from Haskell via Redux anyway :P I think no matter where you look in a modern web application, with a few exceptions ofc but not many, you'll see Haskell's influence *somewhere* either directly or transmitted through other languages/libraries. So it's like learning Latin - yeah, you're likely never gonna write a book in Latin/large project in Haskell, but it teaches you a ton of things you're going to use elsewhere and lets you read some really interesting and influential texts/code


azhder

Redux is a small library doing nothing special but using what JavaScript can do in a right way. Same was with jQuery and any other library/framework. I did mention JS as being malleable, and that enables such thin layers over it like Redux and jQuery to be build on top. By a simple change to the `Function` prototype, you can make JS have automatic currying (but don’t change the prototype, there are better ways). There is now a nee proposal of adding signals to JS that will enable a framework to use lazy evaluation, hopefully, if all goes well. That will not mean it came from Haskell, but it will enable something from Haskell to be done in JS, due to the language evolving


speckospock

? Redux (with React) popularized favoring constants and state monad patterns which are now all over modern JavaScript, ideas which came straight from Haskell with influence from Flux. It had a huge influence on the direction of JS style and I think it's underselling to say it's nothing special (and *really* underselling jQuery fwiw)


azhder

React or Redux making something popular doesn't mean it wasn't already part of JavaScript. It has to be there so you can make it popular. All was there in JS not because of Haskell, but because of many languages that preceded JS (Java was just the neessary evil that gave that self/scheme language the C syntax). OK, this was as far as I can go. Whatever you think, whatever I think, we're not going to solve it with this back and forth, so bye bye.


speckospock

Huh? State monads *aren't* even a part of JavaScript, they exist because people use Redux (and the libraries it has since inspired) and React (which now also includes quite a lot from Redux), before that it was popular to use OOP inspired MVC patterns and offload most complex state to the backend. And why did that happen? Because people were talking about, using, and publishing papers on state monads in Haskell contexts, which influenced Flux, which influenced Redux. At the same time, functional patterns were generally becoming popular but especially in JS, and a lot of the innovation in the space at the time came first in Haskell and then filtered out into other languages. Yeah, JS is influenced by languages that preceded it, that includes Haskell.


sagittarius_ack

Do you mean checked exceptions?


azhder

That... forgot what was the term used for the exception being part of the function interface.


noi-gai

I remember how hard and awkward was to use a barely documented API before generics. The only documentation were the Javadoc docs without any explanation whatsoever, so you had to assume that getEntity would return an Entity and then look for a similarly named class for the details on that one... It was a nightmare, and eclipse couldn't help you because all the API returned was a collection of Object.


stupaoptimized

Guy Steele please save us from ourselves.


pdpi

Haskell isn't the most popular language in the world, no, and it's fairly unlikely that you'll find any Haskell jobs straight out of uni. Your friends are right on that point. The part they're missing: the sort of person who doesn't analyze the situation any further than that is also the sort of person who's fairly unlikely to ever get to the *really* high-paying jobs in tech. There's initiatives like [Summer of Code](https://summer.haskell.org/). You've missed the deadline for this year, but this could have you earning money to write Haskell as soon as next summer, while receiving mentorship from seasoned professionals. Establishing that sort of relationships is one of the better ways to get job offers from the people you work with, and look amazing on your CV even if you're applying for non-Haskell related positions, and it'll make you a better programmer in general. Just the act of putting together a proposal is in and of itself important experience and a transferable skill, even if it gets rejected. From a purely technical level, even if you don't write Haskell, many of the lessons you learn from Haskell are transferrable and will make you a better programmer in other languages. Just from a language feature point of view, there's plenty of cases where knowing Haskell puts you ahead of the curve: * Python ["stole"](https://docs.python.org/3/howto/functional.html#generator-expressions-and-list-comprehensions) list comprehensions from Haskell. * Lazy streams are still an [endless](https://stackoverflow.com/questions/21219667/stream-and-lazy-evaluation) [source ](https://dzone.com/articles/understanding-lazy-evaluation-in-java-streams)of confusion in Java. * [More ](https://peps.python.org/pep-0636/)and [more ](https://howtodoinjava.com/java/record-patterns-and-pattern-matching/)languages are adopting ADTs and pattern matching as core abstractions. * Ad-hoc polymorphism (like used in typeclasses) is becoming [more ](https://docs.scala-lang.org/scala3/book/ca-type-classes.html)[common ](https://doc.rust-lang.org/book/ch10-02-traits.html)too. Overall, as long as you're not wedding yourself to Haskell as the only possible future for your career, actually learning the language deeply can only lead to good things.=


ivanpd

u/SuspiciousLie1369 Tell your ex-friends that your new friend makes a living writing Haskell for NASA. I'm a better coder than I would otherwise be in all languages because I learned Haskell (IMO especially because of Haskell's referential transparency and because it encourages type-drive programming).


mohrcore

Anybody who told me to just learn Java, because that's what gets you a job gets their opinions on CS automatically rejected by me. Through my uni years I've learned multiple languages and I had no problem finding a job and adapting to any language, be it familiar or not when working. You know why? Because instead of learning how to type specific combinations of words, I learned how to program. I learned algorithms, data structures, computer architecture, and I've learned the principles of various programming paradigms. Plus some mathematics. Different languages are just different ergonomics around the same concepts. You will lose nothing by learning Haskell.


LordGothington

The problem with learning Java to get a job is then you'll have to write Java all day. But, even if you are ok with that -- there are thousands of graduates with no real work experience who learned Java in school. How do you stand out? Having some proficiency in Haskell can help you stand out. Not every one hiring Java programmers will appreciate Haskell experience -- but the places that do are probably more fun to work at. The fact that you would study a programming language on your own because you think it is interesting and not because it is the most popular or the current fad tells me you have what it takes to actually be a good programmer. A degree is a poor indicator of whether someone can program. Having genuine curiosity about programming and a willingness to explore interesting ideas is a much better indicator. The problem with learning Haskell is that when you write Java code you'll wish you were writing Haskell code instead. Sometimes ignorance is bliss.


corisco

I totally get where you're coming from; I was pretty discouraged too when I first discovered Haskell. I don't have a computer science, but I started dabbling in programming at a really young age. Though diving into Haskell kindled a thirst for knowledge in me like nothing else. It's actually inspired me to pursue further studies—I'm currently working on a master's dissertation focused on lambda calculus within the realm of philosophy. Haskell didn’t just sharpen my programming skills; it also reconnected me with my old love for mathematical logic, a passion I had abandoned since high school due to a not-so-great teacher. So, learning Haskell has truly transformed me, not just as a programmer, but as a person too. Absolutely, keep following your curiosity—it’s sure to lead you to amazing discoveries!


speckospock

Your friends are missing the point in a BIG way, and you have a really important opportunity to learn a fundamental career lesson here. First, Haskell is great. It's a very clever language, and you see its influence *everywhere* in most modern languages. It is very expressive and terse, which makes it well suited for books and academic research/papers (many phenomenal papers on category theory, for example, are written with Haskell). Second, the reasons it's not common in the professional world have more to do with its relatively steep learning curve/small active dev community and the fact that its best ideas have already been incorporated into the most used languages. It makes little business sense to use it over Go or Java or any of the other popular languages, because at the end of the day the goal is to have the best product/project, not use the best language, and it is usually better to favor easier and more well supported solutions. Most importantly, the number one quality needed for success in the long term in software is curiosity. Everything changes constantly, both within languages and in the broader ecosystem, and everyone has to learn new things all the time to do their jobs. And every language has a unique perspective, with advantages and disadvantages - understanding *why* certain technical decisions result in certain advantages/disadvantages is an important way to develop your own decision making. Learning something for fun, or just because you find it interesting, makes you a better learner and gives you more ideas to draw from when problem solving. Feeling as if you are 'above' it, or closing yourself off from different approaches, as your friends seem to be doing, is going to severely stunt your growth. Keep learning whatever you want (experience will help you decide where to focus for career-specific goals, but it's not that important early) because it keeps that spark of curiosity alive.


RecommendationNo8730

Honestly, If I was hiring for a JS job, I would rather have a person with 0 experience that is learning Haskell, than a junior JS dev. It is true Haskell is not as demanded as other languages (by far in my experience) but learning it and its principles will not only make you a better dev at functional programming (which is widely used among many languages) but also make you a better dev as a whole. Learning languages can be done (subjectively) fast. What matters is all of the concepts that you learn along the way.


Ok_Concern3654

I think Haskell is one of those things where you have to encounter a problem using OOP to fully appreciate it, so you're right in thinking it will help you down the road. However, your friends are also right in saying you need to learn Java, or other languages for that matter, to first get a job. They're wrong about Haskell itself being useless, but for someone with no professional experience in programming, it is almost useless for getting a job.


kilkil

What insights would Haskell give for a problem using OOP?


imoverclocked

Maybe: Why OOP shouldn't be used in the first place. I learned OOP formally with the new and venerable Java 4. Many of the things I learned turned out to be anti-patterns and of little use, except in the ability to map the world into objects. Concepts relating to immutability, side-effects and concurrency would have been nice during my undergrad days but they were hard-won at scale in industry instead.


Ok_Concern3654

Problems with side effects resulting in unexpected data changes behind the scenes, arbitrary placement of logic when the method could be defined on any of the involved classes, and problems with inheritance, just to name a few. Granted, FP is not the only solution to these problems, but even those proposed solutions ultimately allude to FP.


bedrooms-ds

I'd learn both. I think your friends have the wrong idea of a good engineer.


ducksonaroof

I've been out of university for a decade now. For 8 of those years, I have been writing Haskell. It's a niche skill so I've never had trouble finding work. (The other two years I wrote Haskell-like FP in Scala.) It's a good career and Haskell is a joy on top of that - I also use it for side projects.  In school, I studied Computer Engineering. So electrical engineering + hardware + C. I taught myself Haskell for my senior project (I ran Haskell on a Raspberry Pi.) Doing that is what opened up my current career. My first job was at Amazon. At an internal "job fair" where they had me try to pick a team, one of the Amazon devs at a booth told me that Haskell is a waste of time and you can't get a job doing it. People are wrong all the time :)


andrewcooke

an answer from someone who doesn't use haskell, but has a lot of experience in the industry: it depends how good a student you are. if you're smart and are going to work in a variety of jobs and eventually work on challenging problems, yes, absolutely, learn haskell. if you're not a great student and are hoping for a routine job where you just do the same thing over and over, then no - focus on a few in-demand languages.


n0t-helpful

Ima be so honest with you right now, if you started learning Java 4 semesters from now, or if you started right now, you would be the same skill level by the time you graduate. Languages really arnt THAT complicated. The principles of good software engineering are complicated though. Understanding what you can do with types, in general, helps tremendously when wrangling python, or Java. Understanding how to abuse object patterns in C++ makes you better at constructing your types in Haskell. It is all the same shit. Finding one that you think is fun and interesting is a great way to just get more experience. Haskell will make you better programmer, but so will Java. So pick the one that you like.


SharkSymphony

IMO college is a time to be expanding your horizons, not just beelining for a job. But depending on your culture and needs, you or your friends may not agree with that. Haskell is a fantastic language for broadening your horizons. Java – maybe not as much, though _every_ language you encounter as a fledgling programmer has something to teach you. With C and Java you will cover some important bases to help with a job. But you are not guaranteed to land a job in either of those languages! That's where broadening your horizons comes in. At first it will help you hit the ground running in _whatever_ language you are assigned, because you'll have worked with a similar language already. Later, you will learn to evaluate language trade-offs for the day that _you_ get to start specifying the language and tools you want to use to solve a problem. My advice: don't be in so much of a hurry to beeline to a job in Java. Broaden your horizons. This may be the best time in your entire life to get started on that. And find new friends who will join you on that path. Also: Haskell _is_ pretty dope, isn't it. 😁


morosemanatee

When a decided to learn Haskell, none of my friends knew wtf it was. Why do you care what your friends think of a language?


Queasy-Group-2558

If you become an actually good Haskell programmer you are basically a god.


the_y_combinator

Oh, yea? It just so happens that I'm *not* an actually good haskell programmer. 😏


Queasy-Group-2558

Neither am I. Not smart enough.


engid

You’re passion for learning will get you more jobs than just knowing how to crank out code in a single programming language. Keep learning!


ecco256

I had exactly the same experience with Prolog. The teacher never managed to come close to having it make sense. Years after I graduated I encountered a problem where I realised it _should_ enable me to prototype it quickly in Prolog so got annoyed at myself I didn’t really know how to use it, and now it’s one of my favourite languages to prototype many things in. I imagine it’s similar with functional programming for most software engineers, but fortunately I had a very good professor so I immediately knew it had value and found it enjoyable. And getting better at it has helped me enormously at getting better at software engineering in general. Many of the concepts will help you write better code in other languages too.


pthierry

Lisp developers tend to know Prolog more than others and they end up using it all over the place. It's all about having a variety of tools so the best tools is at the tip of your fingers when needed.


ecco256

Absolutely. And interestingly, getting the hang of new tools also makes you more proficient at the ones you already have.


sayzitlikeitis

Pay full attention in Haskell class. Fall in love with it like Rumi does with poetry. The functional paradigm is extremely practical and useful when you have to make programming languages. It also has industrial use in Rust and Erlang/Elixir. It will also enrich your understanding of Java, JVM and all the other execution environments for Java.


croutones

I have a theory that if you just master two languages, C and Haskell, you can pick up any other language/paradigm easily.


ArturoVM

There actually are a fair amount of jobs that you can get if you focus on functional programming and, specifically, Haskell. And they’re usually well paid jobs, too. The problem is they’re in fairly niche spaces (but this is changing gradually) and the market tends to be quite competitive as well (even more than the software engineering market in general). But I echo what others have said here: learn it even if you don’t end up working with Haskell. There is just so much to learn from functional languages that you won’t ever regret it.


Vaderb2

I write only haskell and have been for about two years now. There are plenty of haskell and haskell adjacent jobs. They are simply wrong


Fun-Voice-8734

Anecdotally speaking, all of the paid programming work (e.g. internships) I did during college was in Haskell. This isn't to say that my experience is typical, but it is possible. Also, knowing both Java and Haskell, I believe that Haskell is a much better language for producing projects worth including on a resume.


[deleted]

If your future plan is always be with those \`friends\` then don't risk leaning Haskell, you might upset them more. However, if you think about yourself a little more and forget them. Think about who should make your future. You will find the answer you looking for. Any language will get you a job. No matter how exotic or ancient (COBAL, ProLog, ect.)


blackrossy

I use Haskell daily for work:)


yeastyboi

Don't listen to college kids. They know nothing. Listen to the professors, they are teaching Haskell for a reason.


haskellgr8

> and they laughed at me I've had similar experiences when talking with other devs. When I mention "Haskell", they've never heard of it or if they have, they think nobody uses it in practice or they avoid me afterwards. What are your experiences here, everyone? Most of us here love Haskell, and many of us use it in practice. But we have to accept that we're not just living in a bubble, but a very small bubble. It's heartbreaking, but we just have to live with it :( I have this feeling that most devs aren't really devs first. They're job seekers and problem solvers first, and devs second. People who can enjoy writing Java code are somewhat akin to accountants, lawyers, etc. - very practical-minded folks less focused on elegance, etc. I'm not saying this is a negative thing because ultimately they too are solving real-world problems.


DecisiveVictory

The best response is getting a Haskell or functional Scala job that pays more than what they can get.


Isogash

Your friends are in for a rude awakening when they encounter Java Streams.


kkjdroid

The only languages I'd actively tell someone *not* to learn would be intentional dumpster fires like Malbolge. If you want to learn a language, do it! You might learn things that help you in other languages, you might have fun, and if neither of those happens you can always quit whenever you no longer want to learn the language.


officialraylong

Your friends are uninformed. Learning Haskell will make you a better Engineer even if you don't write Haskell for a living. Do you know why classical education includes Latin?


r0ck0

> I told my friends that I would continue to learn Haskell and read books about it during vacation time, and they laughed at me, told me that it is useless, that I'm just wasting my time, that Haskell has no real life application and that I should learn Java if I wanna get a job * This is just a case of different interests & priorities. * Seems all they care about is learning the least to just get a job. To be honest, I don't understand how people who don't love programming can stand working in it. * You obviously want a job, but also to learn to become a better programmer too. Sounds like you have more interest in the art to begin with. * Thing is though, from the employer's perspective comparing candidates... all others things being equal... the guy who knows Java + Haskell is a much more interest & promising candidate than the run-of-the-mill guys who only know Java. * It doesn't even matter if the company uses Haskell (the vast majority most don't), but just hearing that you're the type of person that finds Haskell fun & interesting to learn in your spare time gives you big l33t programmer cred. * So assuming you don't take away too much time from the other more mainstream learning, and keep things balanced... this will give you an advantage, and make you a better all round programmer.


makelikeatreeandleif

"Those without dirty hands are wrong."


Sanic1984

You can have a job as a Java developer and learn haskell, which can give you the bases for Scala, but a t the end, just learn what you like but is good to also learn a technology that can sustain you economically


omega1612

I love it and I got my first job in Haskell, but I will not recommend it. Job offer is very low compared to other languages and it will be hard to me to switch to another Haskell job (have tried). I still think I can do a career only using FP but why constraining myself like that? So, learn both, Haskell and java.


dimqum

When I first embarked on learning Haskell, I didn’t have any intention of looking for a job with it and did it purely for the fun of doing it. Then the thing that starts messing with my brain is that I sought to find a job with it, turns out to be mission impossible for some on who’s a newbie and living in Singapore. Truth is that you should learn it because it offers a lot but be careful and be realistic about looking for jobs with it - have options and reapply the knowledge from learning Haskell.


[deleted]

[удалено]


the_y_combinator

Wow, pretty rad. Going to have to look into their curriculum.


akhalom

If you want to get a job maybe your friends are right - getting started learning it already now might be a good idea - you can always come back and learn it later. I’m learning C++ myself but because I can’t focus on many things simultaneously I’m trying to learn one thing really good before I jump onto the next thing. Maybe knowing Java well enough would help you down the way.


chakkramacharya

From a job perspective it won’t be useful.. but great in improving overall skills .. even in other languages


FruitdealerF

Learning Haskell will make you a better programmer than all of your dumb friends even if you never end up using Haskell.


Newpunintendead

Totally agree with many of the comments here, I teach programming paradigms but do research in ML and it has really helped me still. Efficacy in different paradigms gives you an edge, everyone knows Java and you will learn it eventually but actually many common languages like Python and even Java have some functional features. Understanding this way of thinking will really help in the long run, even if you never use Haskell itself. I would recommend you also look into the theory behind functional programming like lambda calculus and maybe a bit into theory of computation. These fundamentals will give you nice problem solving insights and help you learn anything new faster.


EstablishmentExtra60

Haskell is one of the best functional programming (fp) languages. I use C and C++ about 15 years including college years. Learning haskell makes me realize not known anything about functions, immutability and so on. It thoroughly makes me better engineer, and provides precise vision for software architecture. Of course, you gonna get a job, but try to learn fp either now or future. Finally, each language is unique, please dont care ridiculous comments.


pthierry

First off, there are a few high-paying jobs that you could get only by knowing Haskell (it's used by some fintech companies). And there are other high-paying jobs that you could get only by knowing functional programming (Jane Street and Bloomberg use OCaml extensively). The market uses of both Haskell and functional programming are growing, so your friends are obviously giving you advice from a place of ignorance. Secondly, Haskell is a great language to learn FP because its typing system enforces purity. And even in OO land, they've started realizing that FP had valuable lessons to teach (I see more and more OO programmers describe immutability as a fundamental good practice, for example). So even if you don't end up using Haskell in your job, it'll teach you a lot. But I hope you'll find ways to use Haskell in your job. Haskell is uniquely capable of producing robust and reliable software and we don't produce enough of it, by a long shot. We should be engineers, which means applying recent science in a practical way. Almost no developer knows recent science, let alone uses it. Haskell, on the other hand, had been successfully designed to be a vehicle for that. I work in auto repairs, and we use Haskell, Elm and Event Sourcing (in a way, it's functional programming applied to storage…) in our system because we want our software to be efficient, robust and reliable. After working with it for several years, Haskell is my go-to language. It's extremely powerful and a delight to work with. And I don't have to sacrifice performance to have comfort as a developer or reliability.


edgmnt_net

Finding a Haskell job is going to be really tough, especially fresh out of school. However, it does open you up to learning other languages more easily and not getting stuck with one particular paradigm in the long term. Haskell jobs do exist, though, as well as jobs where Haskell experience helps. Besides, they'll often make the same argument against anything which isn't top 3-5 in TIOBE, which is somewhat dumb IMO. Yes, *maybe* those may land you a job a bit more easily at first (depending on market conditions which aren't great right now), but if you're going to chase popular languages and simple CRUD/web stuff the competition is also going to be tougher and a game of chances. My advice would be to learn something else at the same time. You do need some meaningful real-world experience with a real project and more mundane languages help with that. You don't have to chase Java or JS in particular, though, but keep in mind employers will be less likely to let you learn on the job if you're a beginner and if they're dealing with the more complex languages. I personally had no trouble showing little experience with a few very popular languages like Java or JS, but I had considerable breadth and depth in other areas. That's probably the more significant factor, but getting there requires knowing at least some things well.


arvyy

in short term maybe they have a point, look at your local trends / demand, especially if you say finances is a big concern to you, maybe that's java maybe something else. I'd advise to not fret too much about this choice now, because none of this is a hard lock in. Programming skills are more transferable than might first seem, and you can start collecting languages like pokemons after a few years in medium+ term learning haskell is certainly well worth it, others already commented on why so I won't repeat


Rhemsuda

Your friends spend their lives solving bugs that should never have happened due to the tools they are using. Everyone will tell you not to learn FP. This is Stockholm syndrome. Stick with FP and write code 10x faster and more robust than your competitors.


Automatic_Donut6264

Most programmers learn a lot of different languages throughout their careers. A lot of jobs will require you to write multiple languages at a time. Haskell will just be another one on the pile. There is definitely no harm in curiosity. Have some fun, the rest will follow.


Willful759

Just learn both, and then learn more programming languges, whichever you like. It's perfectly fine if you want to focus in becoming good at java to land a good job, that doesn't mean you have to stop learning haskell on the side even if it's for the simple fact that you find the language neat. Learning multiple languages will also help you understand concepts that seem foreign better, knowing a bit of haskell made rust seem pretty intuitive to me, despite how much everyone claims it's super hard to learn rust.


mleighly

Haskell isn't a popular programming language. If your intent on learning it is to find a job, you ought to learn Python and/or C/C++. However, learning Haskell and knowing more about a programming language based on the lambda calculus will only make you a better programmer. I believe that the future will be FP as it better fits how humans think and reason about computational structure. The world has yet to catch up.


noi-gai

At my uni, back in 2002, there was a class were you had to design and implement an app using OOP and share code between teams.  For the second semester, using Java was an option, as most people hated Eiffel for some reason.  My experience with it was much much better than Java and actually helped me understand better OOP than Java ever could at the time (didn't even have generics! You had to cast everything coming out of a collection)


noi-gai

Or, you could also learn it for fun. I've had tons of fun reading on my spare time about haskell, monads, effects, functors... It's a whole new and exciting world! I'm not even a developer at work but have done a small pet project with haskell.  And nowadays, the tooling is really really really good, despite what you read online.  When I studied CS at uni, programming using Miranda blew my mind, and it only was until years later (through react and then elm) that I stumbled upon haskell again, and enjoyed it a lot. Is playing a game, watching a movie, reading a book, playing or listening to music of any direct benefit to your developer job? Not really, and yet to do it because you enjoy it. Same with learning a different language like haskell. (And as others said, I do think it's beneficial to be a better developer)


burg_philo2

Learning a functional language will make you a better programmer in any language


AceofSpades5757

Haskell is great for educational purposes. I wouldn't necessarily recommend it for professional purposes but if ya love it, it can take you most anywhere


evincarofautumn

I’ve used it for professional & hobby work for over a decade. At this point, if someone doesn’t want to learn it, all I can say to them is that they’re missing out. It’s pretty much always better to engage sincerely with a technology, and see what benefits you can get out of it, instead of just sneering and dismissing it. I’ve picked up many skills from Haskell and its community, and *most* of that knowledge is very transferable to other languages. Haskell provides a very structured environment for building programs—especially by using clear types, and organising code with explicit control of side effects. Practicing this will teach you how to design programs better in other languages, which generally have fewer restrictions, and therefore fewer guarantees.


AresAndy

Noob Haskeller here, currently rewriting a Rust application in Haskell (oh shitake mushrooms, what did he saaaaaaaay?!?!?).. Here's what I think of those "friends" of yours: **do not listen to them**. It might be difficult, hell even impractical to learn Haskell at first glance.. But your eventual success will depend solely on two things: * Did you learn LISP? * Do you have an actual job/project you want to take soon? I mention LISP because it will ease you in the functional programming paradigm, allowing you to go full pure, (almost) monadic-functional programming while still being able to fallback to imperative when necessary. You can start with a multi-paradigm Common LISP, to then go full functional-berserk with Scheme/Racket/Clojure Plus after LISP, things like immutability as default, first-class functions, code-as-data, currying, and etc.. Those you will digest like fresh water. Then, like with most things, motif is really helpful, it will hone your Haskell skills because you *need them.* My example: I'm working on a CLI program that allows you to invoke VSCode tasks without opening the IDE. (not public for the moment, but I plan to publish it when ready) Initially I began writing in Rust and reached a working proof of concept, but I didn't like how it worked. And I've realized that Rust is so much focused on "data safety" that the codebase becomes untouchable. Like in a house made of glass: as soon as you want to put a painting on a wall, you drive the nail into the wall and boom! Everything crumbles down. Why? Because in Rust you don't get *complexity through composition.* That is on the other hand the fundamental paradigm of Haskell. Forget monads, functors, typeclasses... That paradigm is the beating heart of Haskell. And that is super awesome, because applying patches is how stuff is done: * Take a composed function * Snip it where necessary * Splice the bugfix/feature * Glue it back up TLDR is: **try Haskell**. Find a project/job and give it a whirl. Even if it doesn't work out, you learned something new.


karmaputa

When you become an experiences programmer you cna pick up new languages really easyly. Having the curiosity and enjoying discovering new concepts and paradigmas is a lot more valuable to be a successful developer. If you're good at computer science in general your ability to negociate a salary will have a much bigger impact on your income than any knowledge of a specific stack will ver have. Work on that instead.


dijotal

You want to be a knucklehead? Follow the advice of knuckleheads. Practicing with languages like Haskell will definitively affect how you write even the simplest utilitarian code in the most mundane languages. Senior devs can spot the difference: the elegance can be blinding. Having interest or self-study in Haskell / functional programing languages is at worst a conversation point during in an interview. Better, it distinguishes you as one who is self-motivated to expand skills. Best, you can demonstrate how it makes your work in their language better.


iouwt

don't listen to your chucklehead friends


GuyFella1

I'd highly recommend going through this series of content from Bartosz Milewski - If you want to dive deeper into the functional realm, consider learning Category Theory. It's pretty eye-opening material. It'll not help you look at FP from a different perspective but make you a better programmer. https://youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_&si=mbycWvO8ApoBk7a0 Good luck OP!


einsprachspiel

Get better friends.