First posted on Dev Letters
I don't know about other fields of study but making is of paramount importance in Computer Science. Making means creating something. That is, putting your knowledge into practice.
Let's try to understand why is putting knowledge into practice important. But first, why is knowledge important? That is, why do you learn? Why do you educate yourself?
To make yourself more employable, to earn more, to make yourself valuable. Right?
But all of these aspirations of yours require the act of doing something, be it speaking, coding, building or writing. That is, you will have to put what you learn into practice.
Now, can you be sure that what you learn is all it takes to implement something? Sure you can trust the books and believe that books have got you covered. But what if the author missed a point while writing the book?
A point that is so subconsciously obvious to them that they would find it stupid to mention it. And no one in the editorial team pointed it out because they assume it's something that the reader should already understand.
OR maybe, it was you who thought that that part of the book is completely obvious (for you) and so subconsciously ignored it. But that is not true since you will do mistakes that could have been solved if you would have realized the depth of that part of the book.
What I mean to say here is that it is very common for books to miss certain important details OR for you to completely overlook certain concepts. And that being said, you will hit unexpected roadblocks when you are trying to implement something. Now how do you go around solving that problem?
By learning from your mistakes i.e. finding where it went wrong. There's just no other way.
This is universally TRUE for everyone because the book/course/article authors are not you and you are not them.
So assuming that you will be able to do something just because you "learned" it from someone else is WRONG. ...(1)
There is one another angle to this too.
Often, there are things that are very hard to agree with, that is, very hard to believe that they are true. Your logical, egoistic self will tend to believe - "I can do it better" OR "This shouldn't be this hard". It is only when you actually do that thing, you realize that the tutor was right in the first place and there's no other way, at least in your capabilities, to do it.
So here's another reason why doing is important.
To put one's beliefs about oneself in their correct place. It's tough to be 100% right about yourself (unless you are Buddha or something). ...(2)
And then there are other reasons to MAKE too.
Whoever says that you don't need creativity to succeed in a field, such as programming, is lying. As a human, you require creativity to out-do yourself and transcend your existence.
Training your creative muscles is always a good idea. Making stuff will help you do that.
Portfolios are important, now more than ever, thanks to the rising number of college graduates and hence, decrease in overall quality of the same. How do you distinguish yourself from thousands and thousands of graduates?
Resumes are okay but anyone can lie in them, plus they can easily be boasted through. Portfolios, on the other hand, are a collection of real projects you did. Sure, one can fake it too but it is much harder to do so. Plus, it's not common knowledge that people do that.
So in the current state of time, having a portfolio is your best bet of distinguishing yourself. And you can only make a portfolio by building stuff.
Can you make a production-level Python server just by reading all the good books and articles on the topic? Hell no. You need to do it 2-3 times before you are confident in yourself that you can do it. And confidence is everything.
Without it, you won't be able to take client projects that have that requirement OR apply to that job which requires a production Python engineer. So "making" will help avoid ending up in this situation. Also, clients and companies will trust you more if you have already done similar work to what you intend to do for them.
Reading, Thinking, Planning, etc if done above a certain extent, can easily mean procrastination.
"Procrastination" meaning, you playing aimlessly with your thoughts which are getting you nowhere. But when you put those ideas and thoughts to practice, that is when it starts to get real and becomes something that you can take advantage of, like, to upgrade your career or do something new.
Practical knowledge is real, Theoretical knowledge is speculation.
Also, you will get RESULTS by doing, which is not possible by just thinking or planning. And in the end, it's the results (actions) that matter. You will not be known for your feelings.
After all, would you call a daydreamer a revolutionary?
PS - If you want to read more along these lines, here's another letter I wrote 👉🏻 Move Fast and Break Things - How it works.