index

Some thoughts on the current computer science higher education

Dipping my toes into Haskell —specially since Rust’s core ideas had a big influence on me early on— has been so incredibly fun and enlightening.

Ideologically speaking, shredding off years of lackluster engineering practices in favor of mathematically sound programming feels rather comforting.

No mention of immutability, algebraic data types or functions as first-class citizens of a language during my five years of university; but a lot of «best practices», «programming patterns» and other quasi-universal techniques, derived from languages that set you on the path of riskiness.

Entering the «real world of programming» turns messy rather quickly. Lots of colleagues burned out due to unstable, unpredictable systems — while having no chance of fixing any of those deficiencies (although that conversation feels more political than technical)

Every mathematician or scientist eventually develops a set of personal tricks employed to reduce uncertainty and quickly point you towards success.

For me, that repertoire consists of leaning into the type system — making illegal states unrepresentable and favouring pure computations.

I feel so at ease knowing that, with a sufficiently sound design (and by design, I mean type signatures) and a decent static type checker —not even a compilation step! I mostly work on Python these days— the chances of me deploying a crude implementation is rather low.

And yeah — crassness aside, the world is complicated: deadlines have to be met, there are no silver bullets in computer science, and so on.

Even so, I wonder how those concepts from a decade ago would have settled with me if, instead of worrying about null pointers or contextless modus-operandi, learnt about monads, category theory and functional programming in general — a more formal, mathematical approach to software engineering.