This wiki is associated with Cognito Mentoring, an advising service for learners run by Jonah Sinick and Vipul Naik. The wiki is very much in beta, so you're likely to find many broken links and incomplete pages. Please be patient with us as we continue to improve our offerings.
Please connect with us to offer feedback on the wiki content.
- Basic familiarity with programming is likely to be of considerable practical importance in a wide variety of jobs, including jobs that do not ostensibly require programming. Often, jobs may benefit from people's ability to maintain existing codebases, so a rudimentary familiarity with programming can be helpful here.
- A large number of people have absolutely no programming experience despite being cognitively capable of it, demonstrated by their having mastered academic material (such as calculus) that is comparably difficult to and draws on a comparable skill set as programming. Estimates suggest that only about 5-20% of first-years at elite colleges have programming experience when entering college.
- There exist many online resources to learn programming and hone one's skills in programming. The space is likely to expand significantly over the coming years.
Familiarity with programming
Many people who do not think of themselves as "programmers" do need to do some level of programming -- whether it's customizing the settings on their phone or computer, setting up an Excel macro to create company sales charts periodically, creating a website using an off-the-shelf solution such as WordPress, or providing complicated instructions for a tricky photocopying job. As more and more tasks get partially automated, the scope for tasks within one's personal and work life that use such rudimentary programming skills will increase. In addition, even though actual code is likely to be written by professional coders, having the ability to maintain a codebase and understand how it works to the point that small errors can be debugged might be skills that it would be useful even for non-coders to have. The programming mentality, where one thinks in terms of how the system would process instructions, is very useful.
There is considerable debate regarding the extent to which formal knowledge of full-fledged programming languages is necessary to acquire the right programming mentality for most people. If you will work in a cognitively demanding occupation, however, the level is likely to be quite high, and learning a programming language is probably desirable. This is a strong argument in favor of learning programming.
Low penetration of programming skill
Informal estimates suggest that about 5-20% of the entering undergraduates at top US colleges have had prior programming experience. Many more learn some programming in college, typically as part of a college course. The vast majority of students at top US colleges would be cognitively capable of learning programming -- it's probably easier to learn a programming language than to get through AP BC calculus, despite many more entering students having gotten through the latter. Although it is important to learn math well, programming is also very important.
While the low penetration of programming skill is sad from a societal point of view and also unfortunate if you're looking for people in your peer group to learn from, it also means that programming is an activity where the return to investment (in terms of the "wow factor" or superficial appearance of accomplishment) can be considerably high for the same amount of effort. Also, programming skills can be useful indirectly to yourself and your friends: once you learn the basics of command prompts, filesystems, and writing code, it will be easy for you to handle the mechanics of creating webpages, for yourself or for your friends.