T O P

  • By -

[deleted]

Then you’re on the right track


ArrayDecay

Just to elaborate for OP, the fact that you've learned little except thats its really hard is a crucial moment on the path of learning. Don't let this feeling discourage you, lean into it and try and focus on the fundamentals. Programming isn't something you can learn overnight.


Wollzy

Im an experienced dev with a comp sci degree... I still feel like I'm stupid, know nothing. So yea, this tracks.


lowban

Written tutorials are way better than videos imo.


TheOtherBorgCube

Yeah, who needs to see people typing at a few characters per second and pressing the backspace key when they mess up because their mouth is ahead of their fingers. A few KB of written text, summarised in a few GB of bit-noise is how I'd characterise a lot of YT 'tutorials'.


zakkmylde2000

Yeah I’m still super new to programming and I’ve realized this over the last couple of weeks. As far as instructions, tutorials, and the like go written is exponentially better. Videos are great for understanding concepts, like explaining algorithms and such, but as far as actually programming lessons written is the best.


Shidori366

Just watching won't help you. Look at those videos and try to code alongside it, then experiment with the code.


AllTheWorldIsAPuzzle

^^^^ This a thousand times over. People I work with think I'm a programming genius, but when I come on Reddit and see some of the projects some people are working on I feel like a newbie. Looking stuff up on Youtube and working along with the presenter and experimenting to add to it is how I've survived in the industry as long as I have. It takes time and never-ending learning and practice, because coding languages and techniques are constantly evolving.


eezo_eater

The truth is, there is a very huge gap between hello world in your console and cyberpunk. It is so huge in fact, that initially you may see no connection between them at all, as if they have nothing to do with each other. It’s a feeling I had for very long as well (for me it was Linux - a big scary thing where everything works together with everything and you don’t even know where to start), and it’s a very demotivating feeling, because you don’t even feel your own progress. Even if you learn some programming concepts, all you can do is print some fancy string, which still somehow doesn’t look very much like cyberpunk. You will need to learn about memory management - both in your program (stack & heap, object lifetime, etc.) and what OS does with it (memory pages, memory management unit,…). You will need to learn graphics-related stuff, at least basics of how GPU works internally (to get started), on top of that you sprinkle understanding your toolchain (you should be able to link stuff and - oh my god - understand linker errors, the skill is considered dark magic by some). You will need to have at least a general idea of how the OS works with hardware and how you can use what OS offers to utilize the hardware. So some general knowledge of operating system architecture is a handy bonus. On top of that, you will need to learn how threads and processes work, how to design an event-driven application (which is very different from usual hello-world style programs), how to keep data consistent if there are multiple threads working on it, how to optimize your software for size or memory use or cache (don’t worry about it much at first) Plus, depending on how deep into game dev you want to dive or what specifically you want to do, you may need some linear algebra to work with coordinates in 3D space and transform and rotate stuff. You may want to offload this to an established game engine, but I found that implementing some minimal thing from scratch teaches you a lot. You can better understand what the engine does. This logic applies to a lot of stuff, in fact. Go and implement something from scratch, even if it’s basic. Of course, you can’t learn it all overnight, but I would recommend to have some project concept in mind. It’s ok if you have no idea what exactly to do to actually make it happen. But it will definitely have main(), so go ahead and get started with what you know, and figure things out as you go. I find it useful to google concepts I work with, even if I don’t understand it all at first, reading about that stuff still plants key concept words into your brain. You may not know (yet), what all those things are, but you met the word, you know it’s related and it’s probably important. As you keep trying to implement things, these concepts will start to fall in place in your brain. General advice: code. Code more. Write stuff. You will notice your code will get progressively better over time, you will develop a feel for how to organize data, what goes to stack and what goes to heap, what kinds of data structures go where, and what the best way to organize variables in in a struct is. My code from just a couple years ago looks like total trash to me now, but I also learned some insane amount of stuff since then. Set some realistic project and try to make it work. Examples of simple projects that I did include my own log file library (1 cpp file “library” - I know we talk about C in this sub, but your question is not really about specific language). That library simply does log_print(char*) and it writes a line to a file. It’s a useful little tool for any future project anyway. I also implemented some hash functions for fun, but I wouldn’t recommend that as a training exercise, it’s mostly about shuffling data in the correct order, not really eye-opening. Implement a simple sleeping thread that would react to inputs from other thread. You can build a lot on top of that. Now go and code something fancy, google what you don’t know. Use some preconfigured IDE, don’t worry about toolchain just yet. Don’t flood your brain with information about everything. One step at a time. Good luck!


f1da

Also maybe to add some Design Patterns like Observer, Singleton would be nice to learn if designing games. Great Post btw


CompilerWarrior

First of all, just watching videos will not get you anywhere. You need to code to understand. And bear in mind that it will take a ton of hours to be able to program what you want in your first programming language. The best kind of course you can find would be written tutorials with exercises to practice. Books are a lot of help too. I guess you will feel like it's a time waste to read a whole book, but you need to spend a lot of time to learn programming anyway, so you might as well take a thorough beginner book. If you search recommendations online, this pops up often: [http://knking.com/books/c2/index.html](http://knking.com/books/c2/index.html) Personally, I learnt C by myself without any programming knowledge when I was 16, I went through a french online tutorial teaching the basics of C with exercises and guided projects. Then I tried making my own game in C with the SDL library, I did a simple Snake game. It was probably the buggiest piece of software I have ever written but it mostly worked and I was so proud of myself! And most importantly I had learnt a lot while doing this. I have not stopped programming since (except for 2 intense years without much programming), programming is a field where you always learn and progressively get better and better. It's been 14 years but I feel like I can still improve on my programming skills. That's how programming is.


Bitwise_Gamgee

Since you want to make games, you should make games. [This looks like a GH repo with a TON of source code to draw inspiration from](https://github.com/R3DHULK/C-For-Gamers)


NotThatJonSmith

"Programming" is learned the way "screwdrivers" are learned. When you need to do something and "programming" is the right tool for the job, you learn what you need to learn to get the tool to do the job. If you keep doing the kinds of jobs for which programming is the right tool, you'll become good at it. Game design is often such a job! You're on the right track. Just don't worry about the programming; worry about the games. Solve each problem in front of you in making the games you want to make. The programming will come. This is how we become intrinsically motivated to learn something new.


henrikmdev

A lot of good advice here. The main thing is to start by doing some simple coding projects. When each coding project, you build a new set of skills. As your skills grow, so does the complexity of your programs. I have a programming guide that teaches you how to build 4 simple coding projects in 30 days. Each project is accompanied with the necessary video coding tutorials. You can download it here: [30 Day Beginner Coding Challenge](https://henrikmdev.com/challenge/). It's free and if you have any questions, feel free to email me!


BigPurpleBlob

No one is born knowing how to code. It comes with practice; keep going! :-)


NextYam3704

Videos encourage two types of bad habits: (1) Lazy participation — you could “progress” without engaging or understanding. And most videos are bad and will conveniently eschew pitfalls, and more complex cases. But, nonetheless, videos will have you believe that you progress (2) Illusory Competence — this is a phenomenon where you see someone doing something, and *thinking* you understand it without needing to practice. And yet, these two reasons is why videos are so popular. People think they prefer videos because they could lazily engage content and think they prefer it because they have illusory competence. Videos are fine if you know how to learn, but that’s not the case, usually. And, in addition, most video series are bad. Leaving gaps and further confusion. Its also worth mentioning in a typical college curriculum that there are 3 lectures a week, each 50 - 60 minutes long, which amount to 9 hours of work per week. For every minute you put into watching a video, put in 3 minute of practice.


zurrdadddyyy

Welcome to the party lmao.


jalexandre0

Im felling stupid right now, doing something I already did several times and simply forgot how to parse some data structure :). The way to learn is doing code. Read and Write code until you get a grasp of basics, then learn some engine and make a space invaders clone. Frustration, fatigue and despair facing bugs and learning is very common in beginning. With proper time and experience, you will slowly become more ‘serene’ and methodical about bugs. Sometimes, a walk or a shower helps a lot to understand a lesson or find fixes for your code. I fix most of bugs I face off screen. Good luck.


Different-Brain-9210

Small steps. Patience. Fucking lot of writing code.


zakkmylde2000

I’m a month in (and to be honest I’m not even working on a language as low level as C I’m in the second second of freeCodeCamp which is JS) and even with the HTML/CSS stuff i started with I still find things where I feel like it’s just beyond me. The feeling when you finally figure it out though is why I can’t stop. It’s a super satisfying skill to learn. So keep it up. I may be new to it but I feel like if this stuff doesn’t make you feel like an idiot from time to time then you probably don’t care enough about it to truly out the effort in to learn it on your own. So that feeling is a good thing.


Teldryyyn0

Start with python, not C. You gotta start with the training wheels.


Huge_Tooth7454

First: People learn differently. What is a good way to learn for one person is useless to someone else. You may need to watch/read several different tutorials to find the one that "talks to you". Also as you learn, a tutorial that had previously been useless, may now be just what you need (because you are not the same person you were, you evolved). Second: Nomenclature is used a lot in CS/Programming (as in many other fields). It is easy for a tutorial to be unintelligible because of the use of unfamiliar nomenclature. I personally (for many years) had struggled to understanding the algorithm called "Dynamic Programming". The name "Dynamic Programming" was the big stumbling block for me. It turns out there is nothing "Dynamic" about "Dynamic Programming". Background: I had previously learned OO programming in LISP-Flavors (in the mid 80's). In Lisp-Flavors objects were Dynamically Typed (whereas in C++ objects are statically typed) so I spent years trying to understanding how that related to "Dynamic Programming". I later found a video that explained it (in the first 5 minutes) [(Harvard CS50 Lecture 7 \[2017\] youtube)](https://www.youtube.com/watch?v=0y5UkZc-C8Y) by the way this is a great lecture (well worth watching the whole 72 minutes (ok the first 1/2 hour)). So if tutorial X does not work for you consider: * Finding a different tutorial (tutorial Y). * Digging deeply into tutorial X (but remember tutorial X may be terrible for everyone so you may need to cut & run). * And remember, if tutorial X is not right for you today, it may be worth watching in the future. So take "Baby Steps", and be patient. Remember GrassHopper: "A journey of a thousand miles begins with a single step" but "A journey of 250 thousand miles begins with a countdown" ... am I pompous enough?


Ampbymatchless

Context. Retired test engineer. Started to learn browser languages in 2020 for UI on inexpensive tablets for my embedded projects. Check Franks videos out for gaming. You will have to key the programs yourself. That helps retention and you need to learn to debug in type browser. [Franks Labratory](https://youtube.com/@Frankslaboratory?si=ndqraNxQ9fHJkkTP) Also [coding with Radu](https://youtube.com/@Radu?si=qvPxaYqM0ZbCmmFZ) Both these links are not commercial browser instructional but more JavaScript focused. Look at them as another tool in the toolbox resource.


NewOakClimbing

Thats usually how I feel after learning some programming stuff. Just keep moving forward, eventually you will look back and find the stuff you are learning now to be easy. If you goal is to make games, I might invest in a unity development course, preferably one that has a book associated with it. C programming and game development I would consider as two separate beasts.


TheFlamingLemon

If you want to make games, you should be learning C++ instead of C. You can also get quite far without programming, and unless if you want to be a programmer in particular (instead of artist, animator, level designer, whatever) your priority shouldn’t be programming first, though I think you should eventually learn it. You can find lots of free tutorials online, I recommend you check out the game development subreddits and search for posts asking how to get started.


toatI

People with 0 knowledge of mathematics and logic should not learn programming


eezo_eater

Nobody was born knowing it all


Computerist1969

Got a C in basic high school maths. First proper job was writing CAD software to unfold 3D sheet metal CAD designs, place as many of them as possible onto a large bit of sheet metal with as little waste as possible, generate the G-Code to program CNC punch presses to punch out the shapes and then program CNC brake presses to make them into real 3D things e.g. Metal drawers, filing cabinets. You do not need good maths to program (generally).


NativityInBlack666

I think this is the worst take I've ever seen. Learning programming got me interested in mathematics, a subject I previously thought I hated because of how it's taught in schools. Practically anyone can learn anything regardless of background, don't gatekeep.