Learning to Code but Not Able to Build Your Own Ideas?

Photo by Jexo on Unsplash

Learning to Code but Not Able to Build Your Own Ideas?

When a newcomer learns to code from a book, he understands what’s written, and completes all the exercises. Yet, when he sits down to build an idea, the blank screen gives him a “programmer’s block.” He’s clueless where to begin his app that “filters out interesting content from Hacker News.” Usually at this point, off he goes to find a “better” course or book.

You may be reading a book, or deep diving into a course. Or maybe you’re perplexed at the overwhelming number of choices. Amongst the innumerable ways one can spin in circles trying to learn to code, what’s the optimal path to building your dream apps?

When I started to program, YouTube didn’t exist, and not a lot of people wrote technical content. We relied on hardcopy books and official programming language documentations. Also, the process was about learning principles so that you could use the documentation as a reference rather than a “tutorial” while you built your idea.

My first year in programming was an uphill battle. As a 11-year-old, I was excited about building something, but also overwhelmed with the complexities of making even a small program work. More than programming languages, even using computers in general was a technical challenge. But when I did come out the other side, I had a good foundational knowledge that was resilient to changes in programming languages, frameworks, technologies, and the likes. I was future-proof. What exactly did I do?

Because of a lack of content, I spent 80% of my time trying to write code, and just 20% of my time reading books or articles. For example, there’s only so much to learn about Lego® before you get your hands dirty trying to build something. The more you build, the more you understand each brick better. Same is with programming.

When I started, I too looked at a blank screen. But I knew what the problem was. My problem was not that I didn’t know C++. My problem was, “now that I know C++, how do I use it to build something?” And the only way to learn is by practicing it. So, how should you practice your Python chops?

Python has great a documentation. There is also a small tutorial about Python embedded in that documentation, called “The Python Tutorial.” It’s free, concise, and useful. Your first step must be perusing this document. This forms your 20%.

The second step is to “build something” from it. Here are some example projects that you can build by just using the Python documentation:

  1. A program that asks you for your first name, and then last name, and then prints out “Hello, <first name> <last name>.”

  2. A program that asks you for a principal amount, rate of interest, and no. of years, and prints the compound interest at the end of all the years.

  3. A program that reads a menu (item + price) from a file and sorts them by ascending order of price (cheapest first).

The way to approach building something is to:

  1. Read the Python Tutorial in its entirety first (you can skip the OOP and other advanced chapters).

  2. Then, you pick a project up to build, and mentally sketch out what operations you might have to do in plain-English.

  3. Go back to the Python Tutorial to hunt for specific information that you need.

When you follow the above process, you’ll realize that the “code” is not as important as your thinking process to “write the code” in the first place.

And it is going to be tough. At times you will stare at a blank screen for hours. But remember, your job is NOT to just to “figure out.” You need to learn to “figure out HOW to figure out.” That’s why the software building process appears so painful at the beginning. But soon enough you will reap exponential rewards if you persist.

Regardless of the learning resources that you use, spend 20% of your time reading books and watching courses, and 80% of your time experimenting. And when in doubt, just start with “The Python Tutorial.” Don’t shy away from a blank screen and keep persisting.