Given the interest in our last post “The Uncommon Advantage from Training in Unpopular Programming“, we wanted to provide some more details on the Haskell Language Training Course used for full-time staff at Stack Builders. For the past 9 years, we’ve offered Haskell training to our developers. During this time, we’ve taught approximately a hundred developers and invested thousands of hours in learning and sharing Haskell concepts. In this article, we highlight the curriculum and experiences of some of our developers - we hope that it’s useful in your own Haskell journey or if you decide to implement your own in-house Haskell training program.
Our industry-relevant Haskell curriculum
Stack Builders' 10-week Haskell course is crafted based on our extensive experience in the software industry. The curriculum is designed to meet the demands of real-world projects, ensuring that participants gain practical skills applicable to commercial software development.
These are the modules of our Haskell course. Each module offers a variety of exercises that help implement learning hands-on:
* Module 1: Introduction (Getting started and Types and classes)
* Module 2: Functions (Defining functions and Recursive and higher-order functions)
* Module 3: Types and classes and IO
* Module 4: Monads (Functors, Applicatives, and Monads)
* Module 5: Lazy evaluation
We use Programming in Haskell by Graham Hutton to support our course, but we encourage developers to refer to resources including the following to supplement “Programming in Haskell”:
- Learn you a Haskell for great good! by Miran Lipovača
- Get Programming with Haskell by Will Kurt
- CIS 194: Introduction to Haskell (Spring 2013) by Brent Yorgey
- Learn4Haskell by Kowainik
Hands-on mentorship and code reviews
Unlike many online courses that rely solely on pre-recorded lectures, our course offers close guidance, mentorship, and code reviews in smaller teams. Each module has programming exercises that we’ve selected from several resources to ensure our developers are clear on concepts and can apply them later. This hands-on approach provides the opportunity to apply theoretical knowledge to actual coding scenarios. This prepares our developers to work on real-world Haskell projects.
Focus on functional programming principles
Our course goes beyond teaching Haskell syntax. It emphasizes implementing functional programming principles in other languages, promoting cleaner code, improved maintainability, and enhanced software reliability. This approach sets it apart from courses that focus solely on language features without a broader perspective on software development.
This is what our developers say about the Haskell Training Course at Stack Builders and how it has helped them grow:
Jorge Galarza - Software Developer - 1.5 years at Stack Builders
The Haskell training course not only deepened my comprehension of functional programming but also instilled a commitment to fundamental functional programming principles. Whether working in Haskell or other languages, this experience influenced my approach to coding and also caused a paradigm shift in my conventional programming mindset. Consistently applying principles such as pure functions, immutability, and strong type systems has fostered code reliability and clarity leading to more resilient and forward-thinking software development in the projects that I've worked on.
Diego Balseiro - Senior Software Developer - 6 years at Stack Builders
The Haskell Training Course has been a part of our company for several years. It's a unique aspect of our business that sets us apart from others. Haskell is taught to all our employees, including our interns, which is something not many companies across the globe can say.
Haskell is much more than just a programming language. It's a method of viewing computation that can offer a fresh perspective even when you're programming in more traditional languages like JavaScript or Python.
Functional Programming and Haskell are at the core of Stack Builders. We believe that it's this focus that has contributed significantly to our success. Haskell offers a unique way to think and reason about code.
Our Haskell course could provide you with a new set of tools for your developer toolkit to innovate and solve complex problems.
Alex Mejía - Senior Software Developer - 3 years at Stack Builders
Learning Haskell has been a great experience that has allowed me to be a better developer. It gave me the ability to be proficient in a new language and allowed me to be more effective in my current projects. It also gave me the ability to effectively use functional programming concepts in other languages like Python, JavaScript, and more.
Franz Guzmán - Software Developer - 2.5 years at Stack Builders
I began the course with some prior experience in Haskell. However, a certain curiosity persisted about what I could pick up from it, as most concepts were still unfamiliar to me. During the course, I not only demystified the language but also revealed its elegance and power. What stood out for me was the ability to effortlessly build upon existing software through a simple analysis of the function's input and output types. The course also highlighted functional thinking, encouraging us to view inputs as data streams and enabling the seamless chaining of data transformations. This paradigm has proven to be a valuable skill applicable to any programming language, especially as modern languages increasingly embrace the functional approach.
The Haskell training course is a unique part of working as an engineer in Stack Builders. It helps to build our community and helps engineers see problems in new ways, regardless of whether they’re working on Haskell projects, or in languages like Python, TypeScript, or Kotlin. While we aren’t able to make the course available externally at this time, we hope that this high-level overview helps you to find the motivation to learn Haskell on your own or start an in-house Haskell initiative at the company where you work. Feel free to contact us if you have questions or would like information on joining our team.