Beginner and intermediate programmers often think that programming is math. After all, a lot of computer science is math, and computers run on math, and core concepts of the field like Turing Machines and lambda calculus are really pure hard math. You can’t get started in this field without knowing some math.
But programming — or software engineering if you prefer — really isn’t math. Programming, as Donald Knuth rightly noted all the way back in the 1970s, is really literature. We tell the computer stories about how to do things: We write plays, and the computer acts out the play for us. Some of the words that we use in those plays are based on math, but most programming is really a form of storytelling. Code is sometimes compared to poetry, but I think it has the most in common with prose — which is arguably why systems like ChatGPT are so good at it.
So if you want to become great at programming, yes, you do have to learn some math, but I would argue the single most important skill in programming is being good at writing — writing in English, clearly and concisely. Being a capable writer is one of the biggest distinctions between an average programmer and a great one. A surprising number of truly great programmers even started out in the humanities first — and not in science or engineering!
Also, some of the worst code you’ll ever encounter was written by mathematicians and scientists and engineers: by people who know the math of their field well — but who sadly neglected their writing skills. Don’t be that guy.
So if you’re a beginner or intermediate programmer who’s trying to level up, you should spend serious time outside of programming working on your writing skills, like —
- Learn how to recognize grammar and spelling errors, and how to fix them. You’ll become better at finding and avoiding simple bugs and compiler errors.
- Learn how to write a sentence and structure a paragraph. You’ll become better at structuring and organizing functions and classes.
- Learn how to explain and debate and argue and describe. Your code will become tighter and leaner and clearer and will be better at handling complex bugs and bad corner cases.
- Learn how to compose a forceful essay, how to pace a short story, how to plan a novel. You’ll implicitly learn how to design larger and larger modules and systems.
Writing skills like these will pay heavy dividends for the rest of your career — and that includes someday in the future when you’ve grown into a leader and have to explain your ideas and designs not to a computer but to businesspeople, to customers, and to other leaders — and also to young beginners and intermediates eager to learn why you’re now so good at what you do.
Also, a related pro tip: One of the single best things I ever did for my career was take a full-year typing class in high school. If you can type faster than your colleagues, you can design, build, test, and debug faster than they can too. The barrier between your brain and the machine is that much thinner when your fingers don’t get in the way. A golfer spends years learning to swing his club; a fencer spends years learning to strike her foil; and as your weapon is a keyboard, you’d be well-advised to spend time properly learning to wield it.