What is self.masters ?

This is not an attempt to persuade anyone to skip college and self-study Computer Science. In fact, I myself have a Bachelor’s degree in Computer Science from BITS Pilani, Pilani (Tier-1 college in India). I am writing this for a few reasons:

  1. To make my reasons and thoughts more concrete for myself

  2. For anyone considering going on the same path, this might help you decide. I plan to keep updating this blog along my journey.

  3. Feedback and reiteration. By writing this, I am expecting criticism. I want to hear and consider it, come back, and edit this.

Assumptions:

  1. I am talking as someone with a Bachelor’s in CS from India and around 4 yrs of industry experience
  2. I consider myself a practitioner rather than a researcher and focused on improving as a practitioner
  3. By masters, I mean masters in Computer Science.
  4. I do not have anything against college. I think college is still an excellent place for people considering research work, Ph.D., or getting a job in a different country (like many people in India do).

Goals:

  1. Become a better software engineer
  2. Improve myself in the craft of programming
  3. Demystify the tools and underlying systems I use everyday - OS, compilers, database, networks, etc. I totally agree with Julia Evans that this is the only way to do technically innovative work and its a lot of fun
  4. Find people with similar interests, share learnings, expand perspectives
  5. Monetary benefits coming with the upskilling

The good parts of college

College has given me some good things I want to start with.

  1. Friends for life - A group of fun, interesting people who I love and respect

  2. Brand value - While this doesn’t last long, I believe it helps for the initial few yrs of your life (unfortunately, people are biased and signalling works).

  3. Imposed structure and Deadlines - This kept me on my feet and made me study on days I didn’t feel like it, keeping me consistent. Fear is one of the best motivators, and there is nothing wrong with it.

  4. My first job - College placements.

Why not college?

  1. I do not like imposed structure. Every college curriculum requires the student to complete a set of courses and electives to graduate. While it has its benefits (above), I do not like working that way. I want to spend more time on OS or Databases if I am interested and less time on Compilers if I am not, or skip it till I realize the need.

  2. Colleges impose competition over learning. Students are incentivized by design (both by structure and mimesis) to study for better grades and jobs. Designed properly, it might even help learn but is the stress necessary? I do not have anything against competition, but I believe being aware of where it is required is helpful. It misleads the unconscious to think life is a zero-sum game and has implications on mental health as well.

The term “hoop‑jumper” was coined by writer and former professor William Deresiewicz to describe the behavior of his students at Yale, who seemed more concerned about getting A’s and adding bullet points to their resumes than using their time at one of the world’s best universities to follow their curiosity

Excerpt From The Pathless Path, Paul Millerd

  1. Cost - The stress of study loans. Well, this is not a huge factor; the job you get later usually pays well enough to repay those loans. But why would I want to pay and be miserable (above reasons) for a few years of my life when I can spend it on my own terms, learn whatever I want, and earn along the way? Note - this is an arguable point, and you might think the reward (abroad job, research opportunities, etc) might be well worth the sacrifice. In that case, please go ahead, my best wishes.

Why self.masters?

  1. I have always been an introverted self-study type of person. Even in high school, I loved buying books and self-studying. Had lots of questions, but always tried finding answers on my own rather than asking the teacher (I do not recommend this. This is a very slow learning process, and I have changed now). This has improved my self-learning skills, and given any topic, I know where and how to search, collect information, organize a structure that suits me, execute and learn (I abide by spaced repetition), go back and edit my plan and reiterate.

  2. I believe in self-education and homeschooling. I also want to have some impact in this field in the future, and walking this route will give me more insight. The Internet has enabled true knowledge sharing and increased the potential of anyone who wants to learn.

Free education is abundant, all over the Internet. It’s the desire to learn that’s scarce.

– Naval Ravikant

  1. Freedom - I can work on whatever piques my curiosity, on my own terms. While this is good, it also requires a level of discipline and commitment, which I will talk about in the How section

  2. Extra time - The time freed by not stressing over exams and unwanted courses mean free time to either have a day job or work on a side business or improve other skills I lack, write a blog, focus on health, etc. Replace zero-sum with positive-sum games. Also, actually focus on learning.

How?

Let’s unbundle the abstraction that is college.

College = Knowledge + Structure + Motivation + People + Job + Brand + Office Hours

A college implicitly offers all these things, but there are tradeoffs in this implicit nature. Can we do better?

Strategies

Knowledge and Structure

The internet is a fantastic resource for information. We have access to online courses and materials from some of the best institutes and teachers in the world.

We want to escape the imposed structure, but some sort of structure or plan is often necessary for the pursuit of any kind. But now we get to create our structure, taking the good parts from the tons of structures available online (some mentioned in strategies below)

  1. teachyourselfcs is a wonderful resource to get started
    1. The authors of teachyourselfcs run an instructor-led program called Computer Science Intensive. While it is still a paid program, the curriculum is ideal for anyone willing to be a better practitioner. It can be taken as an inspiration to create our own! (Do check out their interesting example projects)
  2. Few other notable mentions
    1. A self-learning computer science curriculum
    2. Open Source Society University
    3. A Self-Learning, Modern Computer Science Curriculum
  3. More specific resources included in my other posts (will keep updating) - Compilers

Motivation

The deadlines and tests certainly help create the force to learn and maintain consistency. Fear often is a beautiful motivator. However, we can hack motivation and put systems in place to maintain consistent habits.

  1. Curiosity which is the pillar and core motivation behind self.masters will certainly take us a long way. But,
  2. Motivation is weird. The link explains why at the start of any pursuit, we are extremely motivated (dopamine is not about getting the reward, but the anticipation of it), but it slowly wanes off. No matter how exciting something is, we cannot love it all the time, and maintaining consistency requires discipline from our front.
  3. One strategy I use is a game that uses money and fear as motivators (I borrowed this idea from a friend). I lend my girlfriend (this can be anyone you trust) some collateral amount which is big enough to make me feel the pain if I lose it and if I don’t complete some task(the final result should be something tangible) by a set deadline, she can spend it on anything. I have explicitly told her not to sympathize with me. And the end result should be some artifact (like a course certificate, a blog post summarising my learnings, or a project on Github). Set deadlines considering your other commitments. To date, she has never got the chance :)
    1. An interesting crypto project I think about is - If task verification can be coded, a smart contract can be written to do this
  4. Learning in Public is a nice strategy - By sharing our learning, writing blogs, micro posts (twitter, mastodon), and videos with people of similar interests, everyone wins. Social Consistency and Approval are strong motivators. And will also open up unexpected doors and opportunities.
  5. Recurse Center’s all 3 Self-Directives
    1. Work at the edge of your abilities
    2. Build your volitional muscles
    3. Learn generously

People

This is one of the best things a college gives you. However, there are other ways to meet interesting people.

  1. Attend meetups, hackathons, and conferences (both offline and online - both have their own pros/cons)
  2. You can meet some really interesting people online - tech twitter (maybe mastodon now, haha), reddit, discord, slack communities
  3. Attend a cohort or retreat
    1. I attended the lambda retreat recently hosted by Anand. Met some fantastic tech people with diverse backgrounds who opened my perspectives and knowledge in entirely new ways
    2. Checkout Recurse Center
  4. Join a Study group to learn some hard topic together

Job and Brand

  1. College gives a brand value which also helps in a job. Other than that, what matters is your own preparation and knowledge
  2. Brand is an ok signal about your capability, but how can we signal capability more explicitly without it
    1. Project Portfolio and OSS contributions
    2. Tech Talks
    3. Technical blog
    4. Checkout learn in public
    5. Creating content to help people learn has a three-fold benefit
      1. It will help you get better
      2. Will improve your brand image
      3. Can also make you money
  3. Having a strong network also helps in job search

Office Hours

  1. Office hours are certainly a valuable time for clearing doubts and building relationships with professors.
  2. Can be replaced by posting a question in specific channels on Reddit, discord, or slack. There are passionate people willing to help everywhere online
    1. I recently posted a question on Reddit about why should one learn compilers and have got amazing answers
  3. Or just ChatGPT

Learning

  1. I’ll leave this section to swyx’s perfect post - How To Learn In Private
  2. A primer on motivation - https://csprimer.com/articles/consistency/
  3. One last thing - We programmers learn computer internals to become better programmers, shouldn’t we learn brain internals to become better thinkers and brain users?
    1. The Programmer’s Brain by Felienne Hermans is a book that connects this gap and offers techniques to improve programming and learning by leveraging cognitive science. When learning a new programming language or reading new code, we encounter memory problems requiring memory solutions.

Random Musings:

  1. csprimer is an awesome resource synergistic to the philopsophy of this post. I am currently a subsriber.