Hardest Things in Programming