Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

In fighting games, characters are sometimes described in terms of their “skill cap” and “skill floor”. The “skill cap” is how well you can play, if you really invest in this character. The “skill floor” is about how bad things can get if you don’t play that well.

Some characters are very approachable and easy to play. If you don’t know what you are doing, it’s alright — you can muddle through. If you play them in a really exceptional way, it doesn’t make all that much difference.

Some characters are really tough to play at all; and once you figure it out, they aren’t particularly exceptional and don’t reward further investment.

A “high skill cap” character is one where you can keep learning and learning and your performance at the game will actually get better and better. Some of these characters are also approachable — they have a gentle learning curve. Some of these characters are basically unplayable until you can play them really well — there is an inflection far to the right where you go from dying all the time to actually winning a fair number of matches.

Haskell is like one of these characters. Until you’re really good and know a lot, you’re basically going to ship nothing. This effect is sort of invisible to senior programmers learning Haskell because they are already so skillful and are used to having to skim a CS paper or two, once in awhile, to be able to get their work done. Once you are good at Haskell, vistas really open for you in terms of the kind of programs you can design and build. Many year after setting it aside, I still rely on what I learned about Haskell API design and effects modeling to design reliable, transparent and modular distributed systems (it all starts with the types).

“High skill cap” characters tend to be admired, but not frequently played.



I have never read a CS paper.

I do not know Category Theory.

I failed high school maths.

I run three business on Haskell.


In Super Smash Brothers, there are some people who play and win with Zelda. Just not that many.


I don’t say “I failed high school maths” because I’m proud of it. I’m not special. I’m not particularly clever. I don’t know how else to drive the point home that you don’t need to be a genius to build software and enjoy doing it in Haskell.


No one is arguing that you need to be a genius to use Haskell. How does my argument come across that way?


> No one is arguing that you need to be a genius to use Haskell.

I’ve come across this sentiment so many times. Haskell definitely has a reputation for being an “ivory tower” language.

> How does my argument come across that way?

I’m not too familiar with Zelda, but it sounded like you were saying “some people are just able to do these things that most others can’t.”

If that isn’t what you were saying, then I am sorry for misinterpreting. I’m genuinely not trying to argue or take you out of context or anything like that.


I think anybody can write Haskell and anybody can play Zelda or similar characters in fighting games.

What the skill-cap / skill-floor thing is about, is how often do people bother. When the base level of skill required to play at all -- not necessarily play well -- is really high, often those characters don't get used as much. People find a character that demands less up front investment and play that character instead. It's not about ability, it's about time.


Ok, I think that's fair. I won't deny there was a significant time investment on my end.

Thanks for clarifying.


Nice. Tell more?


Summaries of my projects are here: https://jezenthomas.com/


Great, thanks Jezen!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: