DEV Community

Cover image for 📚 How to get out of “the endless circle” of self-study programming?
Vic Shóstak
Vic Shóstak

Posted on • Updated on • Originally published at Medium

📚 How to get out of “the endless circle” of self-study programming?

The story, which you have heard, but not listened 🤷‍♂️

I want to start with some true story from myself. Just because I can!

A few years ago (4 years, to be exact), when I wanted to learn Python from scratch (as my third programming language), I was read huge books, watched many online courses, subscribed to most relevant YouTube channels and a lot of dev podcasts and code streaming guys… and I faced extremely close with this feeling.

I’m not psychologist and don’t know “how they calling it” (please forgive me), but I will be call this feeling “the endless circle” or TEC (for a short).

At that moment, I already knew: modern JavaScript, PHP, HTML+CSS, had practice into UI/UX and did pet & commercial projects on that web dev stack for a long time (since 2007 year).

But my “Python’s closed-loop” lasted about 6 months, for which I did not write a single line of code by myself — only retyped what online coaches, bloggers, books authors, streamers, etc… gave me.

Only consumption, no independent practice.

Photo by Atlas Green on Unsplash

So, what’s TEC actually? 🤔

It can be described with just one phrase:

The more I learn the ins and outs of new thing (programming language for this case), the more I’m drifting from its actual use in practice.

No, it’s not Impostor syndrome or something similar to.

TEC is more like a closed-loop mode. You start study of something new, but you do nothing, except start an another yet study circle! And again and again…

Such as “well, look at another video now, but don’t even open your IDE, just see how I write the code on video” and etc.

I know, what do you think now

It’s something, like “OMG, another guy with super best practice to learn how to code…”. And you’re right, that’s it! 👌

But ask to yourself first: “why I start reading this article?”. If answer is different from “I don’t know” — you’re in the right place at the right time!

Following the rules below — helped me then and helps right now when I decided to add Go to my “Pantheon of programming languages”. I just follow these rules, when I start to “dig in” so deep and feel rapid onset of TEC.

Photo by Nghia Le on Unsplash

Rule #0 → Stop thinking of all around, let’s do the fu***d “Hello World” by yourself right now!

No matter what programming language you are trying to learn, if you are in the endless circle, then stop right now!

Seriously, watching “another video” — won’t run anywhere!

Steps to repeat

  • ✅ Close all of your “major” browser tabs (like Netflix, Facebook, Instagram, Twitter, etc) and browser itself.
  • ✅ Put “extremely interesting” book aside.
  • ✅ Pause podcast at “most interesting place”.
  • 👌 Deep breath.
  • 🎯 Open your favorite IDE.
  • 💭 Remember basics and syntax of programming language.
  • 💻 Code your own simple program (for example, main function take 1 argument and return it into a string “Hello ”).
  • 😀 Smile to yourself.
  • ⚙️ Write some simple test for this simple function (for example, test your function for return a string “Hello World”, if you give “World” as argument).
  • 🔗 Push this code to your git public repository with a message “Initial commit for breaking TEC”.

Congratulations! 🎉

You have taken the first and most important steps to get out of TEC. There are many more interesting things ahead of you, but the best you can do now is to continue reading this article!

Rule #1 → Found what you want and… code it!

While you still have warmed up IDE from the previous rule, now is the time to start your new “lifetime project” (the next day… maybe two). Moreover, this project should solve some of your current problems right now.

Start with a simple thing and gradually add new features!

It could be anything: TODO list, fitness tracker, personal website, CLI app, etc. But algorithm for approaching this project should be like this:

  • ⭐️ Make a minimum viable product (MVP), based on your knowledges and most popular frameworks/libraries/packages in current programming language.
  • ✏️ List all that you don’t know how to do, but need to make.

Real example

I self-study Python and want to tell about this awesome programming language to Internet. Best way to solve this — is personal blog. So, I need a web framework! 👋

After looking for 5 seconds, I found out that most popular web framework is Django. Let’s imagine, I read the official guide in 10 minutes and now I know how:

✔️ Install Django from PIP.
✔️ Create first Django app with CLI.
✔️ Configure DB and make first migration.
✔️ Create new models and routes.
✔️ Create views and templates.
✔️ Build functions for Add/Edit/Delete posts.

Ok! I just do everything that my knowledge and a piece of documentation at the moment allow. Because, it’s all I need for MVP! 👍

Other things, like: template’s design, cross-posting link to social networks after create new blog post, Disqus comments, add cute “About me” page, configure meta tags for SEO, build RSS feed and many-many more — is what I put into my list of “unknown functions for later research”.

Rule #2 → Do not understand something — this is normal! It’s bad not to ask more experienced people

We live in a world where every second the amount of information increases at an incredible rate. What was considered necessary knowledge at “the dawn of the computer era“ — now you can google in a couple of seconds and absolutely not keep in mind!

So, why not start writing code the way you can understand right now and gradually improve it with the help of more experienced people from the Internet?

Constantly writing code — is your goal at this moment!

Steps to repeat

  • ✅ Write code.
  • ⚠️ Write tests for your code.
  • 💬 Ask community of your programming language about problem points in your code or find similar questions and see how other people solve these problems (GitHub, StackOverflow,, etc).
  • 🚀 Try solution on your code.
  • ⚠️ Write tests for your modified code.
  • 📝 Record solution in your knowledge base.

You still don’t have a knowledge base? No problem!

Rule #3 → Create your own knowledge base for a programming language

And it’s not a joke. Make yourself a good habit: write down everything that helped you solve a particular problem!

It can be absolutely any offline/online service, but main points are:

❗️ Access to recorded knowledge 24/7 and 365 days in year.
❗️ Easiest way to quickly record a new knowledge.

Rule #4 → Believe in yourself and your knowledge, but not too long!

When you faced a problem — try to solve it yourself. Rely on knowledge from your records in the knowledge base and what you remember from online courses/books/podcasts/etc.

But, if the problem is not solved in the first 20…30 minutes, then it’s better not to continue — ask people from the Internet!

Wasting time on nothing — this is the last thing that will help you. Sometimes, it’s better to retreat.

Photo by Jesus Kiteque on Unsplash

Final words

Look at yourself in the mirror. Yes, YOU did it! Live a little with this sense of freedom from the endless circle of self-study programming.

And now — don’t stop! World always needs new heroes... maybe it’s you?!

Photos by

[Title] Atlas Green
[1] Ben Blennerhassett
[2] Nghia Le
[3] Jesus Kiteque


If you want more articles (like this) on this blog, then post a comment below and subscribe to me. Thanks! 😻

And of course, you can help me make developers' lives even better! Just connect to one of my projects as a contributor. It's easy!

My projects that need your help (and stars) 👇

  • 🔥 gowebly: A next-generation CLI tool for easily build amazing web applications with Go on the backend, using htmx & hyperscript and the most popular atomic/utility-first CSS frameworks on the frontend.
  • create-go-app: Create a new production-ready project with Go backend, frontend and deploy automation by running one CLI command.
  • 🏃 yatr: Yet Another Task Runner allows you to organize and automate your routine operations that you normally do in Makefile (or else) for each project.
  • 📚 gosl: The Go Snippet Library provides snippets collection for working with routine operations in your Go programs with a super user-friendly API and the most efficient performance.
  • 🏄‍♂️ csv2api: The parser reads the CSV file with the raw data, filters the records, identifies fields to be changed, and sends a request to update the data to the specified endpoint of your REST API.
  • 🚴 json2csv: The parser can read given folder with JSON files, filtering and qualifying input data with intent & stop words dictionaries and save results to CSV files by given chunk size.

Top comments (8)

lexiebkm profile image
Alexander B.K.

Let me tell my short story about Django.
About a year ago, I wanted to try Django, with almost no knowledge of Python. After reading some introductory materials in Python documentation that I downloaded, I went to Django official site. I followed its tutorial given in the site. Although there were some things I didn't really comprehend, I got the overall idea. At least, I could see the result expected after doing the tutorial.

Then I wanted to try Django using Apache web server on Windows. Then came the problem : I couldn't install WSGI on Windows. I followed steps suggested in the WSGI documentation, but failed. After not having solution, I stopped my trial, and stopped learning Django too.
I didn't have time to resume learning of both Django and Python due to busy working on serious project that I developed using PHP + Laravel for backend and React for frontend.
This time I think I will have a plenty of time for learning. I am still interested in Python, and Django a bit. But when I remember my experience on trying Django, I am worried I will get the same result.
Beside Python, my interest includes Java and C# + Core. So I have to be able to manage my time if I want to have sufficient knowledge/skill on all of them, which is not easy at all.

noaudio profile image
Samuel Odongo

Hello Alexander. I also had the same issue as you. I was able to get above this by using windows subsystem for linux (WSL) with an Ubuntu installation from the store (but really any linux distro would do). WSGI seems to run perfectly on linux and installation was smooth. The best part is you can hook up VS Code to your WSL instance and (at least for me) your dev environment feels exactly as it did before.

Here's Microsoft's installation guide The page also has links that explain how the system works in greater detail. Hope this helps!

koddr profile image
Vic Shóstak

Thanks for share this!

Thread Thread
noaudio profile image
Samuel Odongo

Happy to help! My hope is that somebody will come across this and it will help them avoid all the frustration I went through. Also love your post series! I keep rereading it every few weeks, good stuff!

lexiebkm profile image
Alexander B.K.

"Close all of your “major” browser tabs and browser itself. "

I disagree.
PHP, Python and to some extent Java docs can be downloaded so we can read them offline. But most of the documentation of other programming languages/frameworks/libraries/tools are only available online such as : C#, core, React, Angular, Vue, Node.js, etc.
CMIIW, Django and Flask docs are available online only. So is Laravel, the most popular PHP framework. Not to mention all of Node.js framework.
Not only when we are in the phase of learning, but sometimes when coding, we still need to read the documentation to find certain features, syntax, etc.
I can say, these documentation are friends to programmer. I need them, not only when learning, but also sometimes when coding.

koddr profile image
Vic Shóstak

Um... I'm quoting major. Because in this context it's tabs like Netflix, Facebook, Instagram, Twitter, etc... All the things that most people do not just "always open" and directly pined in the browser, i.e. are the most popular – major.

I will correct this point in the article, of course, but you are the first to notice 🤷

viliokas profile image
viliokas • Edited

Dude, thats awesome, thank you!

koddr profile image
Vic Shóstak

Hope it helps :D