14 (fourteen) habits of Okay Programmers
Tags: programming
Published: 2019-06-29 17:27:51

---
title: 14 (fourteen) habits of Okay Programmers
published: true
tags: programming
canonical_url: 
---

![](https://cdn-images-1.medium.com/max/900/1*4XemvUaTPkKwQ48PfaJAng.jpeg)<figcaption>Mastery is Grind</figcaption>

Setting the stage: you are a fresh mind entering the field. You don’t want to suffer from imposter syndrome or bear the dreaded mark of a “pleb”, but are confused on how to navigate the bewildering array of chaotic undercurrents in Real Programmer subculture. By practicing these simple steps you can ride that tiger all for all it’s worth.

1. Master the command line. You will be running lots of scripts and launch stuff from there, so why not get fluent at it?
2. Never have spaces in file or directory names, or anywhere else for that matter. If you get caught using one, you will be assumed to be “GUI-clicker” and beyond all repair. If your code is under a directory with a space in the name (or two in some extreme scenarios, I kid you not), it’s assumed to be garbage regardless of whether it was written by John Carmack himself.
3. Learn to think in types. If you are only doing dynamic programming languages at work, use a typed one at home. If you can’t think in types, your skills are assumed to be lacking regardless of your proven productivity or success in private life.
4. Learn a **typed functional programming language** (OCaml, F#, Scala, ReasonML, Haskell…). No matter how bad a programmer you really are, or however “unpopular” programming language (PHP, ES5, Java, …) you are forced to crank out at your day job , you are assumed to be on the top tier if you can comfortably sling one of these. Using Clojure or Elixir doesn’t count because1) these don’t have types and 2) they are perceived as “trend hopper” targets for the now-disbanded Ruby tribe. If you can be productive in Idris or other dependently typed language, you are assumed to be a Programming God despite never having closed a ticket you were supposed to work on. **Extra caution** : using Haskell may be perceived as “trying too hard”.
5. Only drink on Fridays. This ensures you have regained your mental acuity and creativity by Monday lunch time or Tuesday morning (depends on your age and stamina).
6. Solve as many problems as you can. If you don’t encounter interesting problems in your current tasks, help other people solve their problems or create side projects where you can practice solving new interesting problems.
7. Code as much as you feel like. 8 hour workday can only fit certain amount of coding, and you can certainly be “good enough” for your employer if you stick to that. But if you code more, you will be better. Programming is practice, practice, practice. People will routinely tell you otherwise, but parents also tend to compliment the singing of their children.
8. If you have to draw pictures to understand something, draw them on pencil-and-paper. Git is where your work output should go. Like the sound of tree falling in the forest without anyone listening, work that didn’t end up in Git will be perceived as work that didn’t happen. **Exception** : if you helped someone land something in Git, you can rationalize having sort of kind of done useful work (maybe).
9. If you are male, try growing a beard if you can. You don’t have to wear it at all times, but at least ensure there is a verified scenario where you, in fact, were seen as having sufficient amounts of beard. If you are a woman, moderation is advised regardless of whether you can grow one or not.
10. Do not use shell scripting languages (bash or .bat/.cmd files, or Powerhell) if you have more than 2 lines of “code”. Use Python (or Ruby if you must) instead. If someone doesn’t have Python installed, he’s not worthy of running your scripted masterpiece anyway.
11. Have hobbies outside programming. At least read a book or play some video games sometimes for chrissake.
12. Acquire a good arsenal of so called “thought leaders” you follow in Twitter. They should mostly consist of battle-hardened veterans aged 35 or above. The younger ones will lead you down the swamp of Node and other subcultures that are not perceived to be sufficiently programmer-y. On the other hand be wary of exceedingly old thought leaders that are perceived to be out of style (like “Uncle Bob”, or SOLID patterns in general).
13. Follow programming news. On Reddit, [/r/programming](https://old.reddit.com/r/programming/) and [/r/programmingcirclejerk](https://old.reddit.com/r/programmingcirclejerk/) provide affordable value at good regularity. HackerNews (also known as the “orange website” because the maintainers [can’t do CSS](https://news.ycombinator.com/)) has a small cult following, but 1) you can’t get “just programming news” from there and 2) the community (a.k.a “[webshits](http://n-gate.com/)”) overall is annoying and verbose, and reading too much of their output can lead to reduction of social skills, such as they are.
14. **“It’s nice to be important but it’s more important to be nice”** , to paraphrase a [German philosopher](https://en.wikipedia.org/wiki/H.P._Baxxter). If you are an Okay Programmer but arrogant or mean, you will be like that clunky old cog in a machine that just gets to stay there because yanking it out would require disassembling too much other stuff.

Your mileage may vary, and this blog post should not be treated as Gospel. For one, it was written by single author (as opposed to Gospels, of which there are four at the time of writing this).