Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Haskeller competency matrix

Haskeller Competency Matrix

See also List of materials about Software Design in Haskell

Junior Middle Senior Architect
Haskell level Basic Haskell Intermediate Haskell Advanced Haskell Language-agnostic
Haskell knowledge scope Learn you a Haskell Get programming with Haskell Haskell in Depth Knows several languages from different categories
Get programming with Haskell Haskell in Depth Functional Design and Architecture
Other books on Software Architecture in Haskell
Haskell Lambdas, functions, composition Advanced composition (point free, applicatives, functors, monads) Some type-level Haskell (TH, Generics, GADTs, FunDeps, Type Families, HKDs...) More focussed on the big picture rather on the language features
Base types (String, Int, Float...) General types (Text, ByteString...) FFI
Main ADTs (Maybe, Bool, Either...) Basic lenses Parametrized types
Basic IO in the IO monad Main monads (State, Reader, Writer, List, Either, Maybe) FRP
Lists, tuples Monad transformers & monad stacks Concurrency (STM, MVar, threads)
ADTs Advanced IO Laziness & its implications
Pattern Matching Advanced type classes (Foldable, Traversable...)
Basic type classes (Show, Eq, Ord) Higher-kinded types
Recursion
Base high-order functions (map, filter...)
Base collections (List, Map...)
General knowledge scope Basic programming Clean Code / Code Complete Domain specific languages Books on Software Architecture
Refactoring Domain-Driven Design
Data structures and algorithms Test Driven Development
Software Development methodologies
Books on Design Patterns
Main activity Learning Writing code Requirements gathering Understanding business problems, strategy and direction
Testing Understanding project tasks Cross-project communications
Writing documentation Designing the code, interfaces, subsystems, services Cross-team communications
Managing the complexity Architecturing cross-project systems, frameworks, foundation libraries
Organizing the project Communications with stakeholders
Establishing coding standards Architecture governance
Managing the development process
Managing the risks
Communications with stakeholders
Responsibility Responsible for own code & its quality Responsible for project, its parts & design Responsible for multiple projects
Responsible for achieving goals by the team
Teamwork skills Working with mentor Team player, relative independence Team leading & mentoring Cross-team leading
Completely independent
Able to drive the project from start to end
Problem solving skills Can solve simple, local, small problems Can solve local problems within the well-established project Can define project-wide problems and solve them Can define cross-project problems and solve them
Ability to not fall into perfectionism
Ability to refrain from playing with Haskell
Ability to handle uncertainty
Fancy stuff Doesn't know about it Can recognize it Knows how to avoid it
Can follow ready patterns of usage Can use it when unavoidable
Mitigates its impact
Provides patterns of usage
Code quality, testability and maintainability KISS, DRY, YAGNI SOLID, The Law of Demetr, Rule of Least Power
Testing within a ready testing environment Low coupling / High cohesion
Property-based testing IoC & DI approaches
Functional, integration, unit testing Application architectures (3-layer cake, onion architecture...)
Performance & load testing Layering & separation of concerns
Design Patterns
Integration patterns (circuit breaker, leaky bucket...)
Testable architecture
Accidental & essential complexities
In-project testing frameworks & environment
@sobolevn

This comment has been minimized.

Copy link

sobolevn commented Jul 23, 2020

HKT is listed twice:
Снимок экрана 2020-07-23 в 22 29 39

@graninas

This comment has been minimized.

Copy link
Owner Author

graninas commented Jul 23, 2020

@sobolevn, thanks

@typetetris

This comment has been minimized.

Copy link

typetetris commented Jul 24, 2020

Cool!

@nikita-volkov

This comment has been minimized.

Copy link

nikita-volkov commented Jul 24, 2020

Seems very useful for hiring! Thanks!

@graninas

This comment has been minimized.

Copy link
Owner Author

graninas commented Jul 24, 2020

@typetetris @nikita-volkov

You're welcome!

@jonathanfishbein1

This comment has been minimized.

Copy link

jonathanfishbein1 commented Jul 26, 2020

this is great! thank you

@Hakimba

This comment has been minimized.

Copy link

Hakimba commented Jul 27, 2020

Awesome, very helpful

@gautamr

This comment has been minimized.

Copy link

gautamr commented Aug 1, 2020

This is very good guide , thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.