13
14 Comments

Don't learn anything technical for the sake of learning

I received an email from exercism.org yesterday about their new challenge on trying a different programming language every month.

I guess I joined them a long time ago and forgot about it since yesterday's email. At that time I was obsessed with learning more without the aim of creating anything with that knowledge. I forgot almost everything I learned about new programming languages around that time, Scala, Python, Kotlin, Clojure and more, except the ones I kept practising with and actually created something.

I like the analogy of a donkey carrying around a load of books for the people who know a lot of stuff and (consciously or unconsciously) use that to feed their ego but don't even think of creating anything useful with them. I've been there, done that, and I know it's a complete waste of time.

If you were to ask me a technical question 10 years ago, I'd have a hard time saying, "I don't know", and I'd try to come up with an answer. And even if I didn't know, I'd go find the answer; sometimes I'd spend a lot of time learning that topic deeply to be able to say "I know" next time.

When I reflect back now, I realise that even though I was doing this for the sake of being knowledgeable, the motivation was coming from a place of ignorance and an egoic desire. Being comfortable with not knowing is related to a deeper concept, our self-worth and being comfortable with who you are. Cause our self-worth comes from who we are, not what we do or what we know.

It may not be a concern for most people in this community. However, especially for people with technical backgrounds, it could still be tempting to learn that new shiny language or technology, the focus not being on building something with it. So you may want to be more aware next time and avoid it.

I'd love to know your thoughts and experiences on this.

on January 7, 2023
  1. 4

    Couldn't agree more. The best and most fulfilling way to learn is by doing. Learn only what's required to get to the final destination. If your final destination is to be a code guru that knows every language on earth, then great. Otherwise, stick to only what you need to learn to continue to move the needle!

  2. 2

    I disagree with this. I think it's fine to learn for the sake of learning. You'll be surprised with how seemingly disparate ideas can intersect in fun and creative ways.

    Programming languages are an interesting example because you get to experience a lot of new ways of solving the same kinds of problems. You can be high level and talk about functional vs OOP vs procedural, or you can get into it with monads and type theory and recursion, or whatever else. There are some ideas which are just naturally better expressed through certain programming languages and those most likely will be gated from you until you expand your boundaries.

    I'll leave with this article about the three programming tribes.

    1. 1

      I think more creativity comes with a burning desire to build something real, a passion for solving a real problem, and not much with learning irrelevant topics that you'll likely forget soon without any intention to do anything meaningful with them.

      And it doesn't matter how creative a solution is if it doesn't provide any value to anyone.

      1. 1

        I don't disagree with the first part but desire and ability are not the same thing. It's nice to have great ideas but you need skill to execute it. Or at least execute it in a way that you can consider it a success.

        Creative solutions can be their own reward. Not every action must contribute to your bottom line.

        I will add that you often can't envision a solution without enough knowledge to understand the problem. Sit a new programmer down in front of Emacs and they'll make it work like VS Code. Sit a lisp developer down in front of it, and they'll give you a NES emulator.

  3. 2

    Completely agree. Learning without application can create a false feeling of extensive knowledge when in fact it contributes nothing to the bottom line, especially builders like those in this community. Without use, you forget it faster than you learned it.

    Time is scarce and for entrepreneurial minded people with ongoing projects or trying to get into the game, I would suggest using what you know. If you do desire to learn more take a depth first approach, ie get better at what you already know.

    This has a few advantages: speed and familiarity. You can solve problems and build things faster allowing you to focus on value add efforts. This leads to shipping POCs quicker, MVPs, new features, etc. Sure if you need to learn something due to lack, like in my case the web stack (html, css, js), then do it to fill a void not learn some redundant tech stack you can achieve with what you already know. I sucked at web development but now after building a few apps and learning the web stack deeply, I can crank web GUIs with ease

  4. 1

    I agree in the context of of building software businesses, but it was pretty fun learning Rust for example because I took some of those principles the language leans on back with me to use in JS and C#.

    These days I learn new principles over specific frameworks, like best use cases for Dependency Injection, composing Functional business logic, when to use multi-threading vs async, things like that.

  5. 1

    This mindset is something I'm trying to unlearn from myself. I noticed that most remote jobs are in React, and Node for example and thus I want to learn them. However, there's also a part in me that wants to start building my own things, and leverage my existing skillset, Golang, Flutter, and Python for example. However, I do see that most SaaS use webapps and so I still need to learn myself from React as I deem the Flutter web experience still lacking.

  6. 1

    Learning something for the sake of earning can have unforeseen benefits in future projects. For instance you see how the new language does something unexpected, you can wonder "How would I do this in the language I know well", and then perhaps discover new things you can use.

    I learned myself a tiny tiny bit of assembly code, just some small tutorials, but it did give me some valuable insight on how some stuff works 'behind the scenes'.

    Also by learning, you get better at learning new things. And the more you learn, the easier it is to learn even more, because you see connections and overlaps to connect the new knowledge with, so it 'sticks' easier.

    Having said all that, I almost exclusively learn new things in the context of projects I create for myself. But I see that as my style of learning. I once had an intern who was able to sit at a desk and read a book about design patterns. He just kept reading, tried out minor things, but finished it from start to end in a couple of days. He said he learned a lot :).

    I forgot almost everything I learned about new programming languages around that time

    I do expect some of the knowledge is still there, so if you would need to use one of those languages you would be quicker to (re)learn it.

    1. 3

      Agree with the unforeseen benefits, but it's still more effective and cost-effective to learn something for the sake of using it.

  7. 1

    In the same vein, don't build something technical in the belief that tackling difficult problems creates value. Hard problems and valuable problems are separate dimensions and should be treated as such until they intersect.

  8. 1

    I did a 5 year engineering degree. The amount of information I learned in that degree that overlaps with my daily work is minimal. Was that a waste? Not in the slightest. Learning new things, particularly when they're different ways of thinking (functional vs OO programming, objective vs subjective evaluation of results, etc) can be invaluable for improving your ability to learn new things in the future. Learning new things is what being a founder is all about.

    So no, I think you're very wrong.

    1. 1

      I have an engineering degree too, but I definitely think I wasted a lot of time there.

      I do agree that ability to learn new things is crucial, but you don't necessarily need to learn for the sake of learning to build that skill anyway. You can still do it by building something that actually creates value for yourself and other people.

      We can agree to disagree.

  9. 1

    "Whatever needs to be maintained through force is doomed." - Henry Miller