Musings

The thoughts of one young developer

How to Learn Anything

I’ve learned there is one surefire way to become good at practically anything:

Surround yourself with people who are better than you and material that is beyond your understanding — the more advanced the better.

This is not something new to you; you know it well, even if you don’t think so. We all know how to become better at something, but we’re lazy. So, today I hope to provide reasons to not be lazy about it.

There is no better teacher than experience. Someone can give you a detailed exposition of an experience, but until you have had the experience yourself, it can’t have the same meaning to you. There are countless examples showing this: physical experiences (like your first snow, free falling, or pushing your body to its limits), emotional experiences (having a child, marrying someone, or being dumped by someone you really like), and spiritual experiences (first realizing how sinful you are, realizing how good God is, and having a real relationship with Him on a personal level).

Surrounding yourself with people and situations that force you into experiences like this will then automatically teach you better and faster than if you surround yourself with people who don’t care to see you improve. That is not to say that they don’t care for you as you are now – they should accept you as you are now – but they should also want to see you ever improve. That is what true friends do, rather than simply trying to have meaningless fun.

In my own life, my family has served this role for me in many ways. In academics, athletics, and involvement in activities outside of class, my siblings have excelled and have expected that I do the same. While they love me the way that I am, they ask hard questions because they want to see me do great things and continually improve. But they’re not the only ones who are further along and who want to see me improve.

In sports, particularly soccer, there were certain other players who demanded that I play well and let me know that they relied on me. They were stern, at times perhaps too harsh, but they certainly made me a better player. Many of my coaches did the same, placing me as the last defender and requiring that I lead the other guys. In school I’ve always had a group of friends whom I “compete” with academically, who checked up on me to make sure I am getting A’s and who help me where they can. Once I got into programming, I quickly found a group of friends, both online and in person, who are always working on projects and asking about the projects I’m working on. We critique each other’s thoughts and practices, making sure that we don’t waste too much time. During the time I made music this was also important. I needed the community I was in to tell me what parts of my music were awful and which parts were actually not horrid. Having older men pour wisdom into my life about all sorts of situations, even ones that I haven’t had to face yet, has made me so much wiser than I otherwise would have been. Having this community is absolutely critical to my spiritual life – I don’t know what I’d do without the many guys in my life helping keep me straight. Talking with people at the exact same level, even some people who have not reached where I am, is helpful in the same way. They can think of things that I haven’t thought of and see things from a different angle which often times provides additional insight.

But people aren’t the only thing you should immerse yourself in and be outclassed by. Reading and looking at other’s works that you don’t understand is necessary to become good at something as well. In my own life that looks like a lot of things depending on the subject. It means that I read Hacker News articles that I don’t have the background to understand – articles dealing with intricate details of hardware, system networking, physics, economics, business, technological developments, history, and many other topics. It also means that I read books on algorithms, theology, science, and psychology that are meant for people with degrees in the subject when clearly I do not have that training. In a programming sense, that means that I open up the source code of projects that I can’t even start to comprehend and see what I can pick up. It means being curious and thinking about how something could be created, even if I don’t end up creating it.

The clearest example of this fact is in learning a foreign language. It is possible to learn it, even to learn it well, in a classroom, but you will learn it better, quicker, and arguably easier in the long run if you are immersed in it. Moving to China and living for six months with a Chinese family that doesn’t know English will make you far better at Chinese than 6 months of classes will. The same principle applies on a smaller scale and in other fields as well.

One of the biggest hindrances I’ve come across for people actually surrounding themselves with people and content outside of their capacity to keep up with is that going outside our comfort zone is intimidating. But, here’s the thing – it should be! If you’re not somewhat intimidated by the people or content that you’re surrounded by, you’re probably not being pushed as hard as you can be, and you may not be reaching your potential.

Here’s an encouragement: faking it for a while (or at being present while others are talking about complex topics and not getting too involved) actually works. Amy Cuddy discusses how this is true for body language, but the same is true for non-physical subjects. For example, I knew absolutely nothing about web programming when was first getting into it, but by being involved on StackOverflow by looking at answers, trying to answer simple questions, building some personal projects, and asking around in the chats, I absorbed all sorts of knowledge about the web and a good many other topics. Before I realized it, I had become decent enough at it that I was asked to speak at an international conference. I didn’t do anything particularly amazing during this time; I just did what I could and tried to push myself by reading and implementing new things and by talking (or listening) to people about things I didn’t understand at all. Even if you don’t understand a lot of the material at the end of immersing yourself in it, you’ll have picked up some of it, learned something of the mindset around it, and become more likely to understand similar topics in the future than you had been previously.

Sugata Mitra tells a fascinating anecdote about how he provided poor, street-dwelling kids living on the streets with a computer and some pre-installed applications with no further instructions. Given some time, the children ended up teaching themselves English, programming, pronunciation, and the biomechanics of DNA replication. They had been wholly uneducated and far younger than most students learning that material, yet they did just about as well as students in a college course on the subject.

The second excuse is probably the most common excuse for not doing anything – that we have no time. While the specific reasons for our schedule being full vary from person to person, nearly everyone spends time doing something fairly unimportant, whether it’s watching TV, looking through social media sites, playing some app game, browsing Reddit – whatever your vice may be. How much time is that each day – an hour? Three? More? We can spend that time instead doing something more meaningful like learning or helping someone. In reality, surrounding ourselves with content and people that outclass us isn’t necessarily asking us to do anything additional, it’s simply asking us to do it differently. That may mean that we commit to more things and result in being more productive, but just surrounding ourselves with people who care about us improving is not a time sink.

The key to this being effective is encouragement. Encouragement is not so much saying kind words to a person, but rather an action towards or treatment of that person in a way that builds them up. The best ways to encourage vary depending on the situation, but in each case it’s about helping the other person in some way. Encouragement is certainly not about making the other person feel worried or threatened, but sometimes pressure as a motivator isn’t a bad thing. A big reason why I’m writing this is to encourage you. Healthy communities are communities that encourage regularly.

Encouragement is not so much saying kind words to a person, but rather an action towards or treatment of that person in a way that builds them up.

Intelligence is defined in many ways. One of my favorite definitions is by Bertolt Brecht: “Intelligence is not to make no mistakes, but quickly to see how to make them good.” Using this definition, surrounding yourself with people that outclass you not only helps the skills they’re better than you at, it actually makes you more intelligent by increasing your capacity to think about the situation at hand and improve it. And this is especially useful these days, because knowing is becoming obsolete, while thinking critically and efficiently is the way to excel.

This entire process takes time. It takes time to find people who outclass you and are willing to talk with you regularly. It takes time to start to understand what they’re talking about and how it works. This is the way it should be! As Publilius Syrus said, “It takes a long time to bring excellence to maturity,“ and we have to work at it constantly. Roger Staubach agrees: “Confidence comes from hours and days and weeks and years of constant work and dedication.” And learning is addictive. The more you know, the less you think you know. And the less you think you know, the more you want to know!

One final note: if no one conversed with people who were at the same or lower level of understanding, then no one could learn from anyone at a higher level of understanding either. We have to work together. That means that while you should be aiming to outclass yourself most of the time, you need also to be considerate and help those who need it. Give them some valuable encouragement just as you have received it.

In the end, it’s a lot less important to be really good at, say, a programming language – we can pick an additional one up pretty well in a matter of days or weeks. Instead, we need learn to be good at is putting quality thought, effort, and time in and actually getting things done. While relaxation is critical to thinking well, it needs to be paired with effective learning by going beyond our comfort zones.


I have an incredible number of things to be thankful for. I was raised in an intelligent, hardworking family in every way that taught me many traits like the ones I’ve talked about here. To them as well as my dear friends who better me daily, I say thank you, especially to my brother Stephen. There are countless others whom I wish I could name but don’t have space to. I hope to remember to thank you in person soon.