Email   Blog   Instagram   YouTube   Twitch   Discord   Github

About

  •  CV

Teaching (OTIS)

  •  OTIS Excerpts
  •  Mock AIME

Olympiad

  •  For beginners
  •  For coaches
  •  Problems
  •  MOP
  •  ELMO
  •  USEMO

Personal/Hobbies

  •  Puzzle hunts
  •  Games
  •  Photos

YouTube/Twitch

  •  Discord

plz learn code

  •  Filesys concepts
  •  Learning path
  •  LaTeX style
  •  Asy guide

Publications

  •  EGMO book
  •  Napkin (v1.5)
  •  Course notes

Recommendations

  •  Mentors
  •  Quotes
  •  FAQs

Contact

  •  Rec letters

Buy Me a Coffee at ko-fi.com

Speech on why coding is important

Are you scared by watching Evan’s fingers repeatedly smashing the wrong keys and things would somehow work anyway? Have you tried using LaTeX and found that nothing made sense? Are the lotus-eaters trying to convert you into the cult of Vim? Have you just been overwhelmed by all the black magic that Evan and his orz-ers seems to exercise like it’s nothing?

(Or are you just here because of the $N = p^2+q^3$ question on the OTIS application? Good, it’s working.)

If so, these pages may be for you.

You’re much better off using code as your secret weapon in another profession. People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines.

Zed A. Shaw

This page will attempt to convince you to learn to code and how to get started. For LaTeX stuff, see FAQs on LaTeX. For more advanced thoughts like why Vim or why Linux, see FAQs on Linux.


Long speech

If you found my website, you are presumably someone who likes learning and thinking. If you are such a person, and you don’t know how to code, here is my advice for you: sit down and learn it.

Seriously, learn to code. Learn. To. Code. Learn to code god-damn it!

Tiny Evan knows Python. You can too!

I don’t think everyone should be able to solve IOI problems1. But I am adamant you should at least have a basic understanding of how computers work, and be able to automate trivial tasks. For example, you should be able to write a script that batch renames the files a1.out, a2.out, …, a100.out to output001.txt, output002.txt, …, output100.txt. Or to hack together a program that reads the data from a Google form, and sums the result into a table that you can send out.

Not made by hand

Unlike something like quadratic formula or differentiation, most careers directly benefit from some computer literacy2. Programming is so efficient that, once you achieve a basic amount of literacy, the extra productivity will rapidly repay the time invested in learning. But making cumbersome tasks merely faster is not the true reward; the real payoff is changing outright impossible into straightforward.

I think every single job I’ve had since leaving high school used programming in some way. Here are just a few examples:

  • arXiv:1708.01350 was one of the strongest papers I obtained from the Duluth REU. I got the result by writing a C++ program to work out several million cases and then using engineer’s induction on the output. It took a whopping one afternoon.
  • OTIS was already using Python scripts by the time there were 10 students. Today, there are more than 300 students, and the program runs on its own dedicated Django server, OTIS-WEB. It would simply not be possible to run OTIS without OTIS-WEB.
  • Running MOP involves a lot of Python scripts now for things like collating tests, printing score packets, etc. I think it would be unmanageable otherwise.
  • Running Mystery Hunt requires extensive code not only to set up the hunt website, but even just to manage the problem-writing process, to say nothing of things like interactive puzzles.

    And then even individual puzzles can require code that the audience never sees. The logic puzzles in Flooded Caves used grilops as a way to search for interesting configurations and verify uniqueness; while Escape From Life involved overnight CPU computations to find configurations that produced the correct letters. The list goes on.

    Solving puzzles is, of course, greatly aided by code as well, and in some cases essentially required.

And so on. To put it bluntly, not knowing how to code will severely cripple the space of things you’re able to work on.

Getting started


  1. The IOI is an algorithmic contest, which means that part of the problem is first finding an algorithm, and after that actually implementing it in C++. I’m here to say that even the latter ability alone is valuable, even if you never learn graph theory or Dijkstra’s algorithm. 

  2. I, and several others, also suspect that knowing programming changes the way you think. But this is harder to measure or prove, so I only stated the weaker claim. 

Updated Thu 25 Jan 2024, 16:48:03 UTC by 896b25fff7bb