I think everyone in this country should learn a computer language because it teaches you how to think. It’s like going to law school — I don’t think anyone should be a lawyer, but going to law school could be useful because it teaches you how to think in a certain way. So I view computer science as a liberal art.
At the time the Symbolic Assembly Program (SAP) first appeared I would guess about 1% of the older programmers were interested in it—using SAP was “sissy stuff,” and a real programmer would not stoop to wasting machine capacity to do the assembly.
Everyone who interacts with computers has in important ways always already been programming them.
Every time you make a folder or rename a file on your computer, the actions you take through moving your mouse and clicking on buttons, translate into text-based commands or scripts which eventually translate into binary.
Why are the common conceptions of what a programmer and user is so divorced from each other? The distinction between programmer and user is reinforced and maintained by a tech industry that benefits from a population rendered computationally passive. If we accept and adopt the role of less agency, we then make it harder for ourselves to come into more agency.
What I’ve learnt through experience is that the number of languages I’ve learned or the specific frameworks I’ve gained experience with matters very little. What actually matters is my ability to up-skill quickly and effectively.
If you focus on:
learning how you best learn, and
practicing effectively communicating the things you've learned
you can't go wrong.
APL font based on Adrian Smith's APL385 font with a fun, whimsical look, inspired by Comic Sans Serif.
APL (named after the book A Programming Language) is a programming language developed in the 1960s by Kenneth E. Iverson. Its central datatype is the multidimensional array. It uses a large range of special graphic symbols to represent most functions and operators, leading to very concise code. It has been an important influence on the development of concept modeling, spreadsheets, functional programming, and computer math packages. It has also inspired several other programming languages.
I once read a good definition of aptitude. Aptitude is how long it takes you to learn something. The idea is that everybody can learn anything, but if it takes you 200 years, you essentially have no aptitude for it. Useful aptitudes are in the <10 years range.
Your first short story takes 10 days to write. The next one 5 days, the next one 2.5 days, the next one 1.25 days. Then 0.625 days, at which point you’re probably hitting raw typing speed limits. In practice, improvement curves have more of a staircase quality to them. Rather than fix the obvious next bottleneck of typing speed (who cares if it took you 3 hours instead of 6 to write a story; the marginal value of more speed is low at that point), you might level up and decide to (say) write stories with better developed characters. Or illustrations. So you’re back at 10 days, but on a new level.
This kind of improvement replaces quantitative improvement (optimization) with qualitative leveling up, or dimensionality increase. Each time you hit diminishing returns, you open up a new front. You’re never on the slow endzone of a learning curve. You self-disrupt before you get stuck.
The interesting thing is, this is not purely a function not of raw prowess or innate talent, but of imagination and taste.