Ive been interested in computers for 4 years or so. And I love computer science concepts and free software. I know design difference between X11 and Wayland protocols, garbage collectors and other random facts i remembered.
But i have never done any serious programming. Only some little attempts at python, godot, c++, kotlin and so on. Idk why but when i have to do the actual programming i just dont know how, documentation feels unclear and those youtube programming courses also do not ensentivize it.
If someone here had similar problem, how did you solve it?
Sounds like you don’t have the motivation. Maybe stop thinking about learning programming specifically, and change it into “what cool things I can do with technology”. Set up some project with actual goals, like a motorized bird feeder with remote controls on your phone. Look up the simplest and cheapest way to do that, and programming will naturally come along, because you’ll 100% won’t find a working market solution and would need to create some 100-line Python script, via AI or not it does not matter, the important part is that it does what you need and you know how to fix it or add new things.
Don’t use AI. Don’t do it. People telling you “it’s great for learning” are full of shit and going off of gut feeling, not experience. These LLMs have only been around for a few years, and have only gotten semi competent at generating code for even less time. There is no data or evidence that it helps people learn programming, and plenty of evidence that they do the opposite.
So avoid it. Pick a simple project, and see how far you can get. You will probably fail, but that’s the point! You’ll most likely find something interesting or tough to focus on in the middle of it, and you’ll learn a whole lot about whatever that is, and it’ll stick with you long after you’ve abandoned that project.
My advice is to start very small, and avoid anything GUI related. Write like a bare bones terminal only blackjack game, then add a high score table, persist those high scores to disk, etc. If you fail even at step one, that’s fine! Just try something else, like tictactoe, Simon says, or a non-game like an app for converting between Fahrenheit and Celsius.
Ask for help on a programming forum somewhere with real people.
IME to learn to program… you have to do programming.
That’s really it, you have to write code, and actively practicing the skills, do the repetitions (declaring functions, loops, branches) and build up the memory and mindset.Reading other peoples’ code is also useful, so is theory (DS&A), but the doing is the learning.
Once you’ve had to copy or look up documentation on how to declare a function/method for the nth time, it’ll start sticking in your head.
fixing bugs also help you learn
There is something called the “tutorial trap”
You know a lot of high-level theory and you’ve built a lot of things, but only by copying nearly verbatim from guides and tutorials, and you have no idea how to independently work on a project, start from scratch, or interpret reference material (e.g. cppreference)
The only way to learn that is to do it.
You can use a person or a chatbot as a sounding board to help orient you, but try to limit reliance; I suggest rewriting something you’ve already written, but without looking at the source code or the tutorial and don’t copy any statement or chunk of code verbatim.
Feel free to hit me up in DMs for socials if you’d like.
Create a small project to teach yourself. Whatever is most interesting to you. I created many things because I wanted to learn something. Most are not available, but for example I made https://13vaults.com/ from scratch to see if I could make a DnD Beyond clone. It isn’t small, but it was a personal challenge I set out for myself just to see if I could do it, and my players hated the 13th age online srd.
I made https://fotup.app/ to learn a programming language (ReasonML) and because I needed a way to upload images with my clipboard and getting a URL. 13V is still working but I used a third party API for fotup and it stopped working so it’s borked. But I got all I wanted out of it!
Everyone says it, and I’ll say it, too. Make up a project and work on it. You’ll hit so many walls, and climbing over them is the best way to learn.
“The expert has failed more times than the beginner has even tried.”
As a learner, use AI like this:
- When you get code working, paste it in and ask for a review. Be opinionated about the response–some of the advice will be bad. Have a rationale for the advice you choose to follow.
- If stuck for more than 30 minutes, paste the code in and ask for hints. Tell it to not give you any code in response.
- Ask it to quiz you on a topic.
- The above applies to planning and coding.
- Never have it generate code for you.
Problem solving steps:
- Understand the problem (20% of programming is this)
- Come up with a plan (60% of programming is this)
- Code it up (10% of programming is this)
- Reflect on the result (10% of programming is this)
Not sure if you’ve tried reading any textbooks? (I only see mention of Documentation or youtube)
But depending on the language you’d like to learn there’s a wide range of textbooks with different writing styles! Some that are more dry, dense, hard to parse; and others that are written in a friendlier manner which can be helpful for newer folks.
A big plus they typically also have excercises at the end of chapters along the lines of “write a program that accomplishes this goal” or “write a guessing game that works like this”.
You don’t have to hit them exactly but they can also be helpful for sparking ideas of a program that you would actually like to write!
There’s also things like Rustlings or Ziglings that are designed to help you learn the language through solving code exercises, personally I really enjoyed Ziglings
If you want to try game development, game jams are always a fun experience! Godot is an excellent for this and is what I use (GDScript is very nice, less resource heavy compared to the proprietary options too). As for guides, GDQuest and HeartBeast are awesome!
There are a bazillion different online resources to learn programming, whether you want to make websites, mobile apps, whatever. As long is it’s not an obvious cashgrab (a small fee to support them is fine!)
Personally, I learnt Python by reading a book. Dunno which one, but it was a very good book!
And don’t be afraid to search for the answer (p.s. Google is not your friend, but Ecosia and Qwant are!), I still sometimes forget how to make a for loop in Python. Try to avoid using LLMs if you can, they often promote not so good programming practices or are simply flat out wrong (and confidently so!). The only instance where it could be useful is explaining concepts to you in your native language if you are not a first language speaker of English (not vibe coding, mind you, that helps nobody!), but again, you have to be mindful that it often gets stuff super wrong!
Seems like you have the problem of ‘having your tools but not knowing how to use them’.
Perhaps start with something very basic.
Make a simple interactive program that does+,-,×,÷.
No need for fancy GUI. Let it ask: “What do you want to do? 1. + 2. - 3. × 4. ÷ 5. exit” When the user enters one of the numbers, then you ask for the operands and then you give the result.The important part is to do it all by yourself.
Don’t use an IDE. A simple text editor will do. i.e. write all the boilerplate yourself. There is a meaning to it. It only becomes boilerplate because it is the default way to do things.
No need to use a build system. Just make it in a single file and call the compiler command yourself. Or the interpreter, if it is an interpreted language.If it is Python you want to use, don’t use PyCharm or what not.
If you are on Linux, just open a terminal and typepython3(assuming it is installed). If on Windows, use IDLE.In case of C++, just write in a normal text editor and the call
g++ormingw.Make sure to complete this simple little thing all by yourself.
After a while you’ll see yourself getting ideas, mental pathways unblocking and you being able to convert logic to code.Maybe what you really like is theoretical computer science (i.e. glorified discrete math), or computer engineering, or IT or something. Computers, but not software development.
When I got into computer programming my only exposure was various flavors of BASIC and I think one Pascal class. The first time I took a Java course in college, I failed it because I could not understand object oriented programming.
Then I bought a couple of books on the concept, followed the exercises verbatim and then started trying to change things to understand what was safe and what broke things. Anyway, I’ve been doing this professionally for thirty years now.
When I needed to understand new concepts (to me) like functional programming or design patterns, YouTube was very helpful. You cite it as unhelpful, but I suspect you haven’t fully internalized the concepts required to make those videos click into place. Until you’ve done some things with your own hands, it’s hard to understand why an unfamiliar thing exists or what complexities it solves.
Kafka, to grab an example, just accepts data from one program and delivers it to other programs that want it. It sounds like the easiest thing in the world and anyone could just write that for themselves until you experience some of the edge cases it handles for you.
Basically my answer is hands-on following examples and breaking them and understand why they broke.
I have the same problem. My biggest issue is looking for a resource for “something that does the thing I want but I don’t know what it’s called.”
I can read code pretty well otherwise. It’s depressing because over the decades I’ve always wanted to program, and the motivation is high, but the results just don’t show.
I hope some of suggested solutions here will help you
I didn’t have this issue, but I will share my opinion anyway.
What do you mean by “actual programming”? I would expect that to include not knowing stuff beforehand, to explore and prototype solutions and missing information. That’s the opposite of what you seem to expect, judging from the rest of your sentence? (missing know how, unclear docs, no youtube course to follow along to)
I learned through hacking website and related stuff in php, going into a popular C++ FOSS project, and other projects. I oriented myself through what already existed and documentation.
The best way to learn is through self interest, through actual projects or functionality you try to implement. If it’s scoped small enough, with a doable challenge, that’s how you grow.
I’ve been programming for about 20 years but initially I wasn’t able to get into compiled languages like C, C++, etc. I learned Ruby on Rails pretty easily (still my main language) then moved on to the “uglier” more complicated ones.
I’m self-taught so maybe the high level languages were simply easier to get started with since it didn’t require inventing every little thing. I still shudder at a lot of that original code I wrote though now.
The difference between a senior and a junior is how long it takes before you feel embarrassed of your code.
Once someone is no longer embarrassed by their code, but can explain it in terms of compromises necessary to get a project to completion on time and within budget, and what they wanted to do at the time but circumstances didn’t allow — I’d say that person is ready for a team/tech lead position.
That’s true. These days I don’t feel embarrassed but I hadn’t noticed that that had even happened.
I’m 53, been in tech full on since 95, Linux since 96(?). My wife is probably one of the top data optimization experts in the world, and for sure the top, by far, in her specialization. We both learned the same way.
Find a problem to solve or task to accomplish. Figure out how to do it with the skill you are trying to learn.
or
Find code examples that perform certain tasks, read them, and try to figure out the logic and the syntax. If you do this, try to modify the sample code to achieve a solution for the first example.IMHO, learning software development from a blank file is frustrating, unnecessarily difficult, and more difficult to correlate to real solutions. Secondly, learning to read, understand, modify, and correct code better prepares you for the realities of a world where execs expect the bulk of the code to be LLM generated and then curated by a humans.











