Skip to content

Instantly share code, notes, and snippets.

@silviogutierrez
Last active January 2, 2019 19:40
Show Gist options
  • Save silviogutierrez/38996b3421ff946d6eb00d84fb8ed331 to your computer and use it in GitHub Desktop.
Save silviogutierrez/38996b3421ff946d6eb00d84fb8ed331 to your computer and use it in GitHub Desktop.
Shibboleths. Add these up and if you have an opinion on five - agreeing *or* disagreeing - we’d love to hear from you. Do these elicit strong feelings? See the note at the bottom.
- You understand discriminated unions, and how to use the type system to enforce exhaustive checks and other useful patterns.
- You can describe good and bad use cases for single page applications.
- You can describe why nullable types and a type system that enforces it are advantageous over type systems like Java’s.
- You can and have extracted declarative implementations out of imperative code. You know when it’s worth it and when it’s not.
- You know what the right time is to add unit tests to your code.
- You can describe a list comprehension, and have strong opinions regarding when and when not to use them.
- You know the benefits of generators and the yield statement.
- John is in many bands. We want to keep track of them. And we also want to track when he joined them. You know exactly how to model this in a relational store.
- You understand higher order functions, and sometimes secretly wish your language of choice had more of them.
- You know when to use composition over inheritance.
- You understand the article “What Color is Your Function?” and can discuss it with us.
- You think comments are a last resort for documenting an algorithm.
- You can describe a pure function. Bonus: you can explain referential transparency. Even I can’t.
- You hate repeating yourself. DRY not WET.
- You understand the illusion of complexity and why simplicity is always better.
- You know the different types of automated testing there are, and when to use each.
- You have strong opinions on handling nested resources in REST and can espouse all the benefits of your take.
- You have strong opinions on handling versioning in REST and can espouse all the benefits of your take.
- You know what a shibboleth is.
Note: when these were first posted on HN, they got great feedback. On subsequent posts, others pointed out that maybe they were over the top or self-congratulatory. That really wasn't the intent. These are only meant to promote a healthy discussion.
These aren't facts, but they are what some, subjectively, see as traits of a good programmer. Just as valuable as agreeing with them is disagreeing with them and explaining why. Or forming an opnion around them. In the end, it's all in good fun.
Or better put: at least it's not whiteboarding.
You may see the above comments here: https://news.ycombinator.com/item?id=16970529
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment