Latest news about Bitcoin and all cryptocurrencies. Your daily crypto news habit.
Two years ago I left a PhD in physics, joined a startup, and taught myself to be a software developer. I had to radically alter the way I learned and approached problems.
An education in physics is very much a bottom-up approach. Before you can grasp the intricacies of electromagnetism, quantum mechanics, and general relativity, you need a firm footing in the fundamentals. I believe this is the right learning model for physics. If youâre trying to determine the underlying truths about the universe, you should have a solid understanding of first-principles.
This mindset, however, can lead to a âPhysicistâs egoâ: A sense of superiority over those who donât seek bottom-up understandings. A distaste for black box solutions. As a physics student, I experienced this âegoâ in many ways. Contempt for the âplug and chugâ problem solving that engineers employed (using equations but skipping their derivations), refusal to use third-party code or out-of-the-box solutions in my research (considering it akin to cheating), and a general opinion that physics was the superior discipline (except, perhaps, for math).
Then I joined a startup as a full-stack software developer with almost zero programming experience. Turns out all those Matlab scripts I wrote for my research did not even come close to preparing me for the life of a software developer. Early-stage startups have to move fast, so I had to learn faster. The bottom-up approach was no longer sustainable or appropriate.
A full understanding of computer science and programming does require a deep level of knowledge. But, depending on your goals, the level of understanding you actually require varies greatly. Modern programming languages consist of layers of abstraction built on layers of abstraction. They are designed to reduce the required background knowledge of the programmer. You should embrace this.
The best way to learn to code is to start coding. This is cliche advice but itâs important to internalize. Do not let incomplete knowledge stop you from starting. Get comfortable using tools before you fully understand them. Your learning style should be top-down. Work down the layers of abstraction only when you need to.
The physicist in me still recoils at this mindset. But, as an approach to self learning, itâs been very effective. Start learning by pattern matching. How did someone else solve a similar problem? How can I modify their code to make it do what I want to? Eventually, the problems youâre solving will become unique or youâll hit a bug you donât understand and youâll be forced to dive a little deeper in your understanding . You learn to code by coding, but the real learning comes from breaking things and fixing them.
To become a programmer from scratch follow these steps:
- Become a copycat: Mimic more experienced programmers
- Stay shallow: Learn only what you need to know for your specific problem
- Launch early: Start by getting something (anything!) working as quickly as you can
- Every bug is a lesson: When you hit a bug, do a deep dive to understand it as fully as you can
Russell is a data science mentor and CTO at SharpestMinds, follow him on twitter @russ_poll
Originally published at http://russellpollari.com on April 22, 2019.
Physicist to Programmer: bottom-up vs. top-down learning was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
Disclaimer
The views and opinions expressed in this article are solely those of the authors and do not reflect the views of Bitcoin Insider. Every investment and trading move involves risk - this is especially true for cryptocurrencies given their volatility. We strongly advise our readers to conduct their own research when making a decision.