u/Crafty_Ganache_745

My Story of Learning to Programming

From 2019-2022 I was majoring in Nuclear Engineering. In 2023 I decided to switch majors to CS. I did my CS major in 2 years, and graduated in Dec of 2025 (from a small uni in Illinois [USA]).

After graduated w/ CS degree I did not feel 'ready' to be a professional programmer. So instead of searching for a programming job, I decided to fully focus on self studying, and this is what I've been doing for past 2 years since I graduated.

Now I don't want to make it seem like college was a waste for me. No, it was a good step forward in my education (and also thankfully I did not pay much since I got a full ride scholarship).

Actually, some projects I built while in college that I'm proud of (although they are not production level, only educational) are: a virtual cpu (c++), and a 2D zombie-shooter like game (Pygame, Python). Both of these projects are college course projects, however they where really 'solo projects' as the course was mostly like "build something with what you learned from the course". I bring these up to show you that I wasn't slacking in college, at least not completely, and that I did learn some things about programming in college.

However, I would most definitely say I was just not ready to be a programmer after graduating. The main reason being that 2 years of CS was just not enough, at least for me. But thankfully, as I said earlier, I have put in another 2 years of self studying programming since graduating.

So, what have I studied? I have studied front-end programming, back-end programming, game programming, and graphics programming.

Some front-end only websites I have built are: battleship (JS), and pixel art (JS). Also, I did built a 'CV builder' front-end only website using React, but I no longer have access to the repo. All this is to say that I did put in some good time into learning front end programming, and did gain some ok skills in it.

For back-end, I studied MongoDB, SQL, and a little of Express.js. I did build one full-stack app that was like a very terrible twitter (Express, Node, Heroku, MongoDB, React). I also have read the book "TCP/IP Illustrated". I would say this is my weakest programming skill, or at least least experienced in.

For games programming, let me just list the projects I've made: snake (SFML, C++), snake 3D (OpenGL, C++, my art too!), Flappy Bird 3D (OpenGL, C++), Super Mario Bros Clone (SFML, C++, ECS), Geometry Wars (SFML, C++). All are educational builds, nothing production level, but still good work I'm happy with.

For graphics programming, I've built: 2D ray caster (C++, SFML), ray caster/tracer (C++), two software renders [1] (C++) [2] (C++, SDL2), and a noise demo (C++, OpenGL).

I also have studied other things some not so deeply others more, which include: math (linear algebra, geometry, calculus, differtial equations), physics (classical mechanics, E&M), OS theory (very little on this one), and some other subjects. However, I'm not so good at any of these, but my foundations and inuition for what I have learned is very solid.

That's who I am as a programmer. Ok, so what will I do now? Try finding a job? No. I still find programming to be incredible difficult, and feel like I still have much to learn. And, I don't think I'll find a game or graphics or web job. So, I will continue to study...

Oh also, I'm not like John Carmack (Doom guy) or Tim Sweeny (Epic CEO) who can do like +8h programming days. No, at most I do 6h, and not so consistent with it. Also, for me programming and studying can be very painful mentally, has been and still is, probably will always be.

That mental pain is, I think, the main reason why I've decided to slow down on studying. I am also running out of my saving and parents want me to get job, so I'll be getting a part time job (non-programming). This seems like a good path for me, a path that actually makes me happy. But, I won't give up on programming. I will try to programming 1h everyday.

reddit.com
u/Crafty_Ganache_745 — 19 hours ago

The pipeline this project uses is:

  1. local space
  2. world space
  3. camera space
  4. cull in camera space
  5. project to screen
  6. device space

The 'normal' pipeline (not used in this project) for rendering is:

  1. local space
  2. world space
  3. camera space
  4. culling space (4D)
  5. cull in culling space
  6. NDC
  7. device space

I didn't use the normal pipeline for this project, because I did not understand the projection matrix (which it uses), and I wanted to fully understand the pipeline. But, this project is from some time ago (~7 months), and I now better understand the projection matrix.

Their is that article by Songho on the projection matrix, but it only goes into the mathematical derivation. And, I haven't really seen anywhere it explained why the projection matrix is even used. I believe its used for computational reasons. It is much easier and faster to cull in culling space (4D), than it is to cull in camera space (3D). And, the projection matrix has a mathematical propriety that makes it so culling in camera space or culling space produces same end results (which is clipped polygons against the camera frustrum planes).

u/Crafty_Ganache_745 — 20 days ago