Why I’d still learn Haskell in 2026 — and why I wouldn’t put it on a job hunt first

Elena Vasquez

Elena Vasquez

September 18, 2026

Why I’d still learn Haskell in 2026 — and why I wouldn’t put it on a job hunt first

I learned Haskell in a winter when I was tired of nulls I had put there myself. I did not get a Haskell job. I got a different voice in my head when I opened a TypeScript file, a Kotlin file, a Rust file. That is still the return I would buy in 2026. I would not buy it as a career plan. The market is small, the interviews are a different sport, and most of the paid Haskell I have seen is a finance desk, a compiler team, or a person who already had the job.

This is not a eulogy and not a conversion pitch. I still write Haskell for a parser, for a little compiler of a config language, for Advent of Code when I want the language to argue with me. I write Go and TypeScript when I want a customer. Both of those sentences can stay true.

What actually rewired

Purity as a default — not as a religion. A function that does not pretend to be math while touching the database. Once you have written IO on the outside and kept the middle honest, you start smelling the same lie in a Spring @Service that queries in a getter. I still put I/O at the edges. I learned that habit more sharply in Haskell than in any clean-architecture talk.

Algebraic data types that are not optional. data Payment = Card CardId | Invoice InvoiceId | Comp Complimentary is a sentence. The equivalent in a stringly type field is an incident. Rust and Kotlin and Swift already sell this. Haskell was where I first felt it as the normal way to model, not as a feature I had to justify. I now reach for a sealed class or a discriminated union before I reach for a boolean pair that can be invalid.

The typechecker as a pair, not as a bouncer. GHC is rude. It is also specific. I started writing the types first when the domain was slippery — not TDD as a brand, just “if I cannot name the states I do not understand the work.” I do that in other languages now. Haskell made the empty type hole a place to think.

Laziness I treat as a power tool, not a personality. I have been bitten by space leaks. I have also written a pipeline that would have been ugly if it were strict and eager. I would not sell laziness to a product team. I would still want a language that made me notice evaluation. It made me better at Python generators and at Rust iterators because I had language for “this is a thunk.”

Quiet desk with a notebook of type diagrams and a laptop

What I would study, and what I would skip

I would work through a book that writes programs, not a book that writes category tweets. Haskell Programming from First Principles or Programming in Haskell (Hutton) plus a lot of compiling my own small tools. I would use Stack or Cabal in 2026 the way the current docs say — I would not start a holy war. I would install HLS in the editor and let the holes talk.

I would write: a JSON-to-domain decoder that cannot represent a bad status, a tiny CLI with optparse-applicative, a parser with megaparsec, a test suite with Hspec or tasty. I would read other people’s modules in the standard library until Maybe and Either felt like breathing.

I would skip, at first: monad transformer stacks as identity, lens as a first library, a custom prelude, and any blog that says you must understand adjoints to write a web app. Those are a second year. Year one is types, IO at the boundary, and a program that exits zero.

Servant or Yesod or Scotty as a “Haskell web career” is a side quest. I have stood up a Servant API. It was beautiful and I would not staff a product team on it unless the team was already that team. I would learn enough HTTP in Haskell to know I could. I would not put “Haskell backend” at the top of a résumé that needs callbacks next month.

Why I would not lead a job hunt with it

Count the listings. In most cities the Haskell roles are a handful, often remote, often requiring a level of fluency that a year of evenings does not buy. The interviews will ask you about evaluation order, about a type family, about a production war story you do not have. Meanwhile the TypeScript and Java listings will let you eat.

There are real Haskell shops. IHS Markit / a few banks, Standard Chartered’s famous history, some crypto and compiler companies, a consulting firm that still believes. If you can get in, the work can be excellent. Getting in is not a funnels-and-bootcamps story. It is closer to “you already write the language and someone will vouch.” I would not tell a junior to bet rent on that funnel.

Putting Haskell first on a résumé for a React job is how you get skipped by a recruiter who has a keyword list. I would put the language I will be paid to write first. I would put Haskell under a projects line: “typed parser for X; GHC 9.” The people who care will ask. The people who do not care will not reject you for a hobby they did not see.

I also would not use Haskell as a personality in interviews. “I learned monads” is not a seniority signal. “I reduced a class of bugs by making illegal states unrepresentable in our billing enum” is a signal, and it does not require you to say the H-word. Steal the outcome. Leave the brand at home unless they ask.

Person writing in a notebook beside a terminal window at night

Languages that already shipped the lesson

If the goal is employable types in 2026, I would learn TypeScript well — including discriminated unions and narrowing — or Kotlin, or Rust if the work is systems. Those are the Haskell-shaped lessons with a job graph. F# is the cousin I would pick if I were already in .NET and wanted the FP voice without leaving the ecosystem. OCaml / Reason / ReScript have their islands. Scala is a different political history; I would only enter it for a team that already has it.

Elm is the Haskell I would still recommend for a weekend if the person cares about frontend and messages. It will not get them a job by itself. It will make their Redux look overbuilt, which pairs with how I now think about client stores: the model is a type, the update is a function, the effects are explicit. That sentence is Elm and it is also The Elm Architecture stolen by everyone. Learning Haskell or Elm is how I stopped treating that as a library and started treating it as a design.

Rust is not Haskell. The borrow checker is not a monad tutorial. But the people who like both often like the same thing: the compiler as a collaborator. If I could only learn one “hard” language for work in 2026, I would learn Rust for the jobs and keep Haskell for the evenings. That is a preference, not a law.

A six-week plan that does not pretend to be a career

  1. Write functions that cannot return null. Use Maybe. Feel the unwraps.
  2. Model a real domain from work — invoice states, not a tree of animals — as ADTs. Translate the same model into the language you are paid for.
  3. Write a small program with IO only at main and at a thin edge. Port that habit to a service at work in the language you already have.
  4. Parse something messy (a log line, a CSV the finance team loves) with a real parser library. Compare it to your last regex.
  5. Stop. Do not start a rewrite. Write down three bugs the types would have forbidden. That note is the ROI.

If after six weeks you want more, read Parallel and Concurrent Programming in Haskell or poke at STM for fun. If you want a job, open the listings in your city and learn the thing they name. You can keep GHC installed. I did.

The honest pitch I give friends

Learn Haskell if you like languages, if you want a stricter pair than your day job offers, and if you can protect the time as education, not as a secret plan to quit. Do not learn it to be rare on LinkedIn. Rare is not the same as hired. Do not learn it because a thread said AI will only spare the people who know category theory. AI is sloppy at GHC errors and sloppy at your domain. The types still help you review the slop. That help works in TypeScript too.

I would still learn it in 2026 because it remains one of the few popular languages that will not let me shrug a partial function into production without writing unsafe or error on purpose. That friction changed how I write everything else. I would not put it on a job hunt first because the hunt is a different optimization: keywords, a stack the team already runs, a service I can join on Tuesday. Haskell is a teacher. Teachers are not always hiring managers. I try not to confuse them, even when I love the teacher.

More articles for you