@@crackasaurus_rox9740 You can learn something doesn't work by trying it and failing, but you can't learn what DOES work by trying something ELSE and failing. You can learn it by trying EVERYTHING until something works, but that takes a long time.
i was part of a gamedev startup as one of their core programmers until we failed after a few years. i built out so much tech and learned so much, that i turned it into a senior position with ease afterwards
That is the route a lot get. The experience is worth so much. The outcome is the reason you're sitting at the interview. For if it hadn't failed, you would be great and be at the startup still and being part of that company and got your money's worth.
We've used Unity for the past few years but started with our own engine. The recent debacle showed us the value in that experience. We're too small to write a full engine from scratch that meets our needs but trying out Godot we didn't think "it doesn't do this one thing, it's trash" we thought "we can write an extension to do that." Instead of "it doesn't support consoles out of the box, it's useless" it's "well we can do the console porting." I know I'm not the best programmer but because of the experience of making our own engine I also know those are actually achievable goals, where as I've seen people I'd count as much better than me be strangely intimidated by the prospect.
I feel like people in this society are just way too obsessed with productivity, sure productivity is cool, but sometimes I feel people should be allowed to take time to be a little less efficient you know, even if just in a hobby. Like, I'm not doing my project for a company, I'm not even making money out of it, do I REALLY need to have the most productive workflow ever? Do I REALLY have to do things in the most efficient or in the easiest way ever? Why can't I just ditch engines altogether and just make games using a library or a framework? or just make my own engine? I'm still learning either way. In the end of the day, isn't that all that matters?
One of the hardest classes I took was a speech anatomy class. The instructor never told us the specific actions or functions of muscles but instead had us study the anatomy diagrams and describe what’s connected where and what a contraction would do. I could have easily found some flash cards or whatever but that intense discovery-based way of learning means that I will probably never forget any of it or that I can use reasoning to figure out anything I might forget. Big fan of learning the hard way when I have the enthusiasm for it.
@@Jabberwockybird it was basically speech science 101 (a prerequisite for all majors in the program) but this guy had his weird “from first principles” approach.
I can support what you’re saying in this video, but with the emphasis that you need to accept learning as a valuable outcome. Before I got a job as a game developer, I spent a year building my own engine. It skyrocketed not only my c++ ability, but also my understanding of low level graphics apis and different engine architectures, animation systems, etc. By the end of that year, I got a job at one of the most prestigious studios in the industry. A year after that, I was promoted to senior. Eventually, I looked for jobs elsewhere. They offered me a $50k raise trying to get me to stay. If you have a low level understanding of how things work in your field and the ability/drive to tackle those problems, you are incredibly valuable. However, I never finished that engine, and I ended up dealing with a difficult bout of depression. I’d configured my expectations incorrectly. Just a word of caution, set your expectations correctly.
@@anon_y_mousseHang in there, I am on attempt number 5 of rewriting an API and supporting application structure. What I'm doing isn't even that complex but it is written from scratch in Python and will be an application architecture I want and can build on top of. I feel like I'm going crazy and deluding myself often, as I've been at this for about a year 😢 I just hope to reach a kind of v1 soon but I'm struggling.
@@birjisafroz8886 Start by drawing a cube on the screen from scratch using a graphics API. Once you can do that, start researching different ways that game engines handle orchestration, object/entity management, and so on. Focus on getting a basic control flow for your engine and a system for managing entities/objects. I recommend looking into Entity Component Systems. Decide where you want to use external APIs and where you want to develop from scratch. I built literally everything with just c++ and even built my own template library. If I were doing it today, I'd just use EA's template library and an API for json/xml serialization rather than building those from scratch. However, things like the entity system or a job system, it would be valuable to build those from scratch. You will learn a lot about the problems that engine developers face just by doing that.
10:53 as a senior engineer, the only way to impress us is to have the ability to solve new problems. Memorizing one framework is great, but can you pivot that knowledge into something brand new, or solve a novel problem? That’s what companies need, not the chatgpt solutions
ChatGPT solutions guide successful acquisition troubleshooting and demonstrations of notoriously difficult high energy physics experiments. You might need to shift your paradigm a smidge.
I was once ridiculed for never finishing the game I worked on, completely ignoring the fact it took me from being a customer support drone to a highly sought-after engineer. I just smiled and laughed. Felt good.
People also don't see that you keep all of the code and assets you made for the game. Some day, if you make another game, you're going to use code from that previous game. I do all the time. It's never wasted.
Wait, but did you finish your game in the end? A game that nobody can play is not an experience but remains a pastime and a memory. If you created a game as a method to gain expertise to get a job then ignore my comment.
10:40 That sounds exactly like my last job interview. I had built a large-scale game and learned so much beyond my formal degree level. Though I never "finished" it, I found a company that was willing to interview me on the merits of that game. I'm still with the company 12 years later.
I am a professional game developer who chose to learn programming the hard way. I always believed that I learn more by building things myself. If I had chosen to start with a game engine, I would be great at X engine but I'd much rather have skills that enable to work in any engine I want. It took me nearly 10 years to land my first job in the industry and some people might argue that I could have moved faster but I still believe I made the best choice for my career. My coworkers were very surprised to learn that I was a self-taught programmer because I don't approach problems from a high level mindset. Many of the challenges I face at work, I'm able to overcome by working from first principles. My bosses took notice when they could throw random work at me and I would make it happen, regardless of the specific knowledge domain. Everything @ThePrimeTime says about the rewards for deep learning in this video is correct.
Usually people spend more doing absolutely nothing productive, or even self-destructive. So at the end of the day having a passion sounds like a win to me
I think that one thing that is missed is that you get incredibly good at understanding when the tools you use just break, and you can adequately fix that in your own way. The truth is that all those tools are not foolproof, there will always be assumptions that break and bugs. I have found myself repairing library code or entirely rewriting parts of libraries because they just don't work for our use case. (I am currently working with Python, but have experience in Frontend, and low level code,). Doing it from the ground up forces you to think about things that a normal dev will not ever think about unless he is very experienced in the tool he is using. You get a general kind of knowledge that is very hard to get otherwise.
building low level stuff manually has taught me more than playing lego with libraries and engines has. Most of the time the stuff i make at home never gets finished because it was never the point, but sometimes a project I finish IS the point. A mix of the two - build-it-yourself and finish something with normal tools - is what worked for me
dont know if u remember me, but either way I've spoken with you back then, great seeing that you get your effort acknowledged and just by urself and a couple of people
This is one reason that I am so glad I started working in IT in the early days. I had no choice but to use C, Pascal, ASM and later C++ to do coding, with no frameworks available. It thought me so much about how the computer hardware, firmware and the OS worked together. And I also had to dig deep into how low level protocols and device drivers worked.
It's so hard to explain to people, why they have to learn things the hard way. Building basic things the hard way is particularly useful if you want to build a career out of it. You gain expertise which you wouldn't get following tutorials. Making mistakes is good for knowledge. Having the ability to resolve issues is what makes you a productive and fast developer. It sets you apart from others. Skills that you gain debugging issues translate to so many advantages in many other fields and technology. You become the guy who gets stuff done. It's worth it.
In the university I went to, we started with C with the first lecture being selection statements, functions, and loops, and the second memory management… In the first semester we had to build a 16bit microprocessors by hand on a breadboard, too. Later on, we had to write our own drivers, our own virtual microprocessor, our own neural network, and write our own compile, etc. We were never allowed to use anything that we didn’t write ourselves. We even had to make our own game engine when we made a game. It was hell, most often than not, but you learned a lot.
@@divinedela9125 I wouldn’t call it amazing. It was brutal, and in many cases outdated. IMHO, the first lecture shouldn’t even be programming. Just version control. Then go on to C, structures, etc.
@@Kevinjimtheone I understand what you're saying. When I was in school, I probably would have found it brutal too but now that I've been working as a software engineer for almost a decade, these are the things I wish I learnt "properly" while I was in the university. I've actually been planning on building some things using C++ so I get a deeper understanding of how things work. Concerning the parts you say were outdated, I'm not sure exactly what you're referring to because the fundamentals like programming in C and memory management have not changed.
I will say one of the proudest program projects that I have completed was a hobby project that I created in Assembly. It was just a simple text editor and I have built far more complex applications since using other languages, but the month or so that I spent making the DOS text editor in Assembly allowed me to learn the CPU and I/O buses on a 386.
@@datboi1861 I learned this a while back before the internet was popular. So, I basically bought 80x86 assembly book and one of the exercises in the book was writing a simple text editor. By the time I got to this chapter in the book, I had already written several other programs in assembly, so I decided to try an complete this exercise. I think the book was originally used as a textbook for a college course.
definitely true. i spent like a month or so learning OpenGL just because i wanted to understand how the heck 3d images are actually rendered. all i ended up building was a bunch of cubes that spin around with a moveable camera. i did have an end goal of a 3d simulation thing. i didnt quite reach that goal. but, i finally learned what the computer is actually doing under the hood when rendering objects on the screen. none of it was directly applicable to my day to day job. but going through the process helped me understand programming on another level which definitely helped me be more productive at my real job. things at my job seemed a lot simpler after. thinking about bits and bytes of memory on a lower level translates to all programming is some way shape or form. now im learning elixir. why? because ive never done functional programming and i want to understand it.
I hire game developers in the games industry. This guys advice is pretty good - but I'd say it's not a hard and fast rule. If you're ONLY goal is to release a game (and particularly if this is your first game) - don't start by writing an engine - you will be disappointed.If you go in knowing the additional risk - then yeah, go for it. But the problem with writing an engine before having written a game is that you don't necessarily know what a game engine requires. Here's the thing though - we do need people that re-invent the wheel to simply learn. If you want a high probability of getting a job in the games industry, having those skills is pretty beneficial. The harder it is to acquire the skills you have, the less competition you will face.
Shooting the shot in TH-cam comments is fine - software dev is a less sought out job in Japan as compared to the United States like in Silicon Valley. Japan makes its software developers work long hours for less pay and if your code does not contribute to anime style mechas robotics control systems then they will have you print out all of your written code and will distribute the printed code to your coworkers to use as toilet paper. Never disrespect the massive robots.
I watched their video a few months ago but I am grateful for your input. Thank you for kubernetes part at the beginning. Made me feel better about not having completed projects on my resume. My goal when doing projects is to learn a specific framework/concept/tool and completing them is a nice bonus. Eventually I will finish them but I prioritize learning first.
This reminds me of this concept in psychology called "over-learning": You're more likely to be proficient at a skill if you learn something relevant to it but a few skill levels higher. For example, it's been demonstrated that if the last math class you took was Algebra 2, you're not as likely to remember it throughout your life due to fade out. But you're more likely to remember Algebra 2 concepts if you left off with an advanced math course since the former is a required foundation for understanding the latter. So implementing things at a lower level may be a well-spent form of over-learning.
can agree. starting with C, espec. in the harvard cs50 course, is THE BEST could happen to me. I knew some php / html & css before, but learning all the basics of a detailed language with examples is the best foundation you can have.
I did learn more on projects that I not finished than project that I have finish! Like Steve Jobs said: "You can only connect them looking backward. So you have to trust that the dots will somehow connect in your future!!"... So each project or something new that you seek to understand is a dot that will connect in the future!
I agree, its all about your personal goals. If your goal is to get a product out, then absolutely learning the latest techniques, utilizing the applicable algorithms, understanding the libraries relevant to your project all makes sense and is of course the sensible thing to do. But if your goal is, for example, to learn HOW a game engine, or a renderer, works, then it shouldnt matter to anyone what you're doing because your GOAL here has no deadline, no dependencies, all you care about is learning about that thing.
This is amazing. I'm currently in the situation where I want to learn the fundamentals, but at times have been dissuaded thinking that it's going to get me nowhere. This commentary and video has ultimately reignited that! Thank you!
100% agree - last contract I got was because I blogged down speeding up Linux AMD kernel driver. Job was only using threejs - I did not know threejs AT ALL, and made many useful things to them, including some stuff they just never properly solved before / fast enough.
Those high level abstractions are great, but you have nothing to lose by getting to know how they work, and it makes the difference when you need something outside the mainstream. See JWT for example, everyone uses it everyday, but a few people knows how it's implemented and how to use it properly outside of the existing frameworks and libraries.
Videos like this have helped me a lot recently. I've always came to learning programming the other way around, and I can see now how that made my progress very slow. I always wanted to discover ready-made solutions, always tried to find the best way to do things that people already came up with, and by doing that I never tried to come up with solutions myself. I tried to learn by doing, focusing on the outcome, ignoring how I got to that outcome.
Love your videos, Prime. Just got a new software job after about 6 weeks of very intense study and learning, which was powered in great part by your infectious love of programming. Thank you. Also, I’m now neovim btw (and loving it!)
@@billcosta I said a "new" software job, not my "first" one. I've been in the industry for 5 years, but only recently took a step back and evaluated how I could be doing things better. Prime's videos helped reignite the "fire" in me that I haven't felt in a while, which in turn motivated me to persue learning new things and adopting new ways of working. All of that outside of work hours. I stopped drinking and spending so much time playing video games and started focusing on becoming a better developer and a better person. In doing so, I managed to land a job that pays 50% more than my previous one (and the previous one was already pretty comfortable so that's saying something). My confidence has skyrocketed, my relationships significantly improved, and I feel like the best version of myself again. As silly as it sounds, 90% of that motivation started by watching Prime's videos - especailly the Meth to Netflix one. Hope that clears it up for you.
One could say I'm doing things the hard way by learning C with the goal of making simple 2d games, but I found with unity and godot that I had no idea what the engine was doing, leaving me confused as to what I needed to do to make a functional game. So I decided to learn how to make a game from the ground up so I could have a sort of game design foundation going forward. and besides knowing C is a bit more useful than knowing GDScript. That's my reasoning at least
There's ancillary benefits to such things as well which I've been thinking of a lot recently, such efforts ingratiate one into the wider Computer Science / Engineering / IT subculture. I enjoy introducing younger devs / co-workers to people like Kernighan & Ritchie (on the topic of C), and I enjoy it more when they come back to me a week or two later to describe all the fascinating new things they discovered after diving into the history of such industries. These are not directly beneficial per se, like you're not going to get some nice job just for namedropping other people or anything, but I think it does have nice psychological benefits and generally increases one's depth of knowledge on the whole history of the thing -- how we arrived from Leibniz to today, where we might be headed collectively, and so on.
Had seen this one before and it's a great take. You obviously don't reinvent the wheel everyday, but it's good to "invent" it once, even if at a very basic level, so you can get the feel on how it rolls and why it rolls better than a square. If you ever rawdogged graphics into a memory buffer you'll be at ease whether you're doing it in canvas or CoreGraphics or GDI+ or whatever where the same fundamental CONCEPT applies. Rawdogging UIKit isn't so daunting if you're used to do it in WinForm too. And if for some reason you have to do it in the DOM.... what's new? Sintax/properties/etc change, CONCEPT stays the same.
I've dabbled in loads of frameworks, libraries, game engines, etc. and very few ended up with me having a finished project. Not because I was unable to, but because in my head, I was already done. I only needed a project, an excuse to use whatever I was interested in at the time. The goal was never to finish the projects. Finished projects are for work. Projects at home are for playing around. Some of them I do finish, but then the scope is usually small enough that it's something I'll finish just by working a little bit at a time.
20:27 I damn near fell out my chair when he said confidence. I need to have a deep understanding of what I am discussing/working on else I feel vulnerable. You are right Sir!
Logic and computation theory, multivibrators/memory cells, Assembly and setting things up, then C is the way my school took, and it secured the basics, discipline, and respect for bloat, and being naturally in charge/opposed to the "void" of "thingshappening".
I once built a 4-bit calculator out of pure mechanical relays. My CS friend wasn’t fond of “re-inventing the wheel”. But I learned so much about circuit design, power distribution and propagation, optimization, converters, etc. That wouldn’t have been possible if I had only fiddled with simple logic gate simulators. Besides, it was so much fun!
When I was learning code, pre computer science degree, I tried to make 2D isometric engine using windows GDC (no not DDraw lol). It was insane….ly slow but I learned a lot. Then I created language that compiled into my own byte code. It took 15 seconds to compile 3 lines! All worth it cuz when I finally decided to get a degree it was a breeze and now I can pick up any programming language in a couple minutes.
Thank you for this. Your mindset is very refreshing! I been learning python on udemy (100 days of code) and so far I'm really enjoying it but getting discouraged when I think about how low the job prospects are for entry level no degree/experience python dev. Doesn't help that my parents get really upset that I'm "wasting my time" learning programming so I have to limit my practice time 😭
This is the same argument why some people insist that abstraction in modern languages. Having a deep-level understanding of how things work requires to do things from scratch. My first language was 6502 Assembler so learning from scratch is natural to me but I see both sides.
Both kinds of people are required ("high level" and "low level") in my opinion. It's not like it's impossible to learn a game engine after starting out with assembler or vice versa. In some cases performance and control matters more, in other cases the only thing that's important is that the code runs on any machine and assembler knowledge doesn't help at all. I don't like the binary view that one has to choose, just learn what you find fun, useful and rewarding, and try stuff from another "level" now and then.
as someone who's just been home taking care of family and doing a bunch of failed side projects for 2 years. i totally agree that the amount of learning and growth happening is insane, even though i've not had a real job for the past 2 years, i still feel like im atleast way better of a developer now than i was before, with a ton of breadth in my skillset. purely because i have made things the hard way. ( i even attempted to make a game in asm which i gave up on after a few weeks ) or like creating a full stack application with just rust and htmx. sure i might not be the best at react or go, but i do have a ton of random ( and sometimes useful ) knowledge of how things work
Honestly, I thought that's how most people interested in programming saw it. But hearing the kind of comments chat was making in the video I guess I was wrong and a lot of people just see a means to an end.
@@nexovec This is the first time I have heard curiosity and passion being called a personality disorder. Go be excited and pursue every single thing you want! Just make sure to do it one at a time (I have made the mistake of trying to do multiple at a time too damn many times and currently am doing it again... don't.)
This video is validating my thoughts on letting JS go for a while and getting to know PHP and Wordpress. All I want to do is provide small businesses with an online presence and the opportunity to grow their business and help their costumers. Learning data structures, js, react, some backend language wasn’t the way to do it, because no business is going to have enough money to pay for a fully custom website, and more importantly, they don’t need that. That’s not to say I didn’t have fun learning, though, and since I have learned semantic HTML, best HTML practices and CSS makes WordPress look like a toy box, and I’m extremely happy about that because everything I’ve been learning the past year can be applied to this. Great video!
I love reinventing the wheel. I remember when I was working for a large corp and our team was being replaced. The new guys were like "why the hell did you build all those widgets instead of using libraries ?" They spent literal months replacing all of it by "industry standards" despite my warnings. Performance went to shit, but most of all when QA came back at them they had to fork every single library they used to either fix obscure iOS Safari bugs they hadn't spotted or add the functionnality required for the use cases we had to deal with. It was a long game but the "I told you so" was sweet given their takeover had been so toxic. Spend enough time reinventing the wheel and you will be faster at coding something new than at integrating a library reading through their shitty docs and breaking changes. You will learn how things work and it will also make you much better at picking libraries.
This is the story of my life. Build something from scratch then become over qualified for every job interview. Repeat every 3-5 years and your resume will be stellar. Why? Because you become the person who can make anything.
I would argue that it is not just a matter of a mindset. It is about human nature. We simply do not learn by struggling to get something done. People who constantly try to get something done are close-minded. It is how the brain works. The mindset part comes in where we need to understand that nature. By stopping the struggle to get it done, we invite curiosity, experimentation, and PLAY, which makes our mind open and ready for learning and it will be remembered better. It's neurology. To put it rather simply, when we rush the synapses in our brain are oscillating fast and do not allow for new connections, hen the brain synapses slow down and oscillate less frequently our brain is more capable of creating new neural pathways, which is learning, self developing, as opposed to strengthening the already learned knowledge/behaviour.
@ThePrimeTime I have a friend who was just like the kid in this video. He wanted to make games so he learned how to do them from scratch. He now works at Larian Studios and worked on Baldur’s Gate 3. All because he learned a TON on his own over like 2 years of game programming from scratch on the side of his full time job. It definitely pays off.
Ugh this is great, 1000% agree with this man, I and currently working as a DevOps engineer, making my way into software looking back ever since I started learning things that we were "out side of my wheel house" things have became easier from some view points.
It's hard, man. I've been taking programming courses and trying to build my own projects for about a month now. Green as grass, is what I am. And I occasionally stop and think to myself "I can't do this, I'll never complete a project at this pace" But, then I see a video like this, and I think of all the times I've spoken to people in the last few weeks about what I've been learning, and everyone is blown away with how much knowledge I've gained. I've even shown some of these dinky projects to people, and they almost always say "Wow, you made that? In just a couple days?" and I go "Yeah actually its very simple, I'm not even that proud of it because its very beginner level stuff" Yet, they are amazed. I've taken the first step toward something. I need to keep reminding myself that this is a long game.
That's only because the topic is incredibly complex. And the learning curve is one of the most brutal there is. Just a bit of knowledge sets you apart from those without any. But the difference between you and those who are actually fluent and good at this, is so astronomical, it's not even in the same galaxy anymore
9:05 the guy who says can't get a job as a game developer, you are correct but at that point you are eligible to get a job as a game engine developer, and trust me if you are a part of the team that figures out some of the cool things i see Unreal Engine 5 recently coming up with, that will create a higher sense of happiness than any single game story you can come up with, because any game made under that engine you can claim being a part of for yourself. 'I made that possible'. Just imagine being part of the team that came up with Nanite at Unreal and when they see a movie studio use Terabytes worth of models in a scene and Nanite rendering perfectly the right amount of detail based on the simulated camera focus. That seems like an incredible feeling to make something like that possible.
"Wow you built a complete Twitter clone! How did you implement authentication and authorization?" Well uh akshually, I just paid $99 for Clerk. "Alriight, how did you configure the database to scale for the traffic?" Wellllllll, I just paid Planetscale $99 because nobody needs to manage databases themselves nowadays. "Let's move to more frontend questions. This droodown modal looks pretty cool. How did you make it?" I used these 50 react libraries and combined them in this helper hook. "Sir, you're out of the startup. Good luck with your next interview." High key dogging on Theo tbh
Funny enough, this applies to essentially ALL fields. I'm now a woodworker, and can say that almost all the skill I have is thanks to using hand tools. Sure it's slower at first, and requires a significant amount of learning, but what you get out of it is unparalleled.
"Use someone else's tools and you'll be constrained to someone else's limits" is my main takeaway from that video, and I think is true even for opensource since the main team more often than not Will prioritize other features and bugfixes than whatever your specific project needs, or worse, work in a totally different way incompatible with your project. Also the bloat that some game engines or frameworks in general have because they try to do too much at the same time is distracting.
Watched this when it came out, every point could have been spoken from my own mouth. Often someone will ask a question and can be given the exact answer but they just aren't ready for it because they don't have the fundamentals to interpret or implement it (have been on both sides of that). What's worse is that in most cases development only gets harder from there and it is in building that foundation that will enable them to overcome the next question that will inevitably arise.
This is so true, i am only working 1 1/2 year full time, but in my my study time i worked as a student worker and i challenged myself in so many different topics. Writing WebServices, Frontends, GameEngine ... and also tried different Architecture Styles, Deployment Methods, Infrastructure Styles. I am maybe not the best in my team knowing all Frameworks we use, but i can definitely say i am the best understanding technical concepts and the actual code. They had a problem with a legacy software running on Tomcat (JVM), where the Sessions Objects were not released, so the Server crashed every 2-4 Weeks. This issue was already one year old, guess who figured it out. This was not even a hard bug to understand, you just had to look on the heap dump. Learn the stuff the hard way, it only benefits you!
I like that lifting weights analogy. There is a difference between "working out" and "training". Training for strength is a superior objective (similar to knowledge acquisition) as strength carries over to multiple activities and is generally preserved over time. But training for strength is boring as it involves small set of lifts (squats, deadlifts, etc) and the variation is just more weights. Most people won't be able to stick with it long enough to see non-trivial benefits.
Sometimes you're forced to build your own engine given the scope of a project. Currently I'm building a falling sand engine (like Noita) but with online multiplayer. I've learnt quite a bit so far and have genuinely enjoyed building something from scratch.
Just a little bit of vector math and python, plus building a project with them in 3D got me sponsored to move to the UK and work for a high ranking company in the animation industry. I was clueless about so many of the pipeline stuff initially. But found it truely fascinating how they had solved so many of the boring problems with automation. To this day I find 3D animation pipeline management one of the most interesting topics. Python might not be the greatest language, but man, that combined with math that can build systems to solve daily problems is where money is at for me and some others alike. Great video as always 🙏🏽
I feel bad for the kid who watches this, jumps into game dev by trying to build his own engine, and burns out. (26min mark is key) Pick up an engine. Any engine. Make ''something'' tiny. Publish it. Make something better. Then once you start running into "Huh...the engine sucks at this" that's when you take the hard road and start to cook, and that's when you become dangerous.
Exactly. Kinda tired of listening to prodigal, out of touch developers who think everyone is born with the same isolated talent as them. Mate, I'm already sweating blood learning GML, and you want to make it even harder on me by telling me to build my own engine? Get a grip lol
@@WrenKainIV remember that making games is your craft, not programming, their advice is like expecting jazz pianists to spend 3 years to learn how to construct pianos before they learn to read sheet music
I would like to add that finishing a game and putting it out there gives a massive boost to motivation. So making smaller games that do well is a better option. However, this dev is the rare exception where he doesn’t need the boost in motivation. He’s already popping off. All the power to him.
Watching this after making a project totally on my own, without following any tutorials, just following the idea I had in mind and researching about how to do things, I totally agree with the message delivered through this video.
11:00 there is a lot to be said, but I'll be brief and say this: don't do it for the money, you will rarely be promoted or better paid, you should strive to get better, and if you want, search for a new job and negotiate your salary. Thats not necesserally a rule, but it works like this most of the time.
The final goal differs by what type of programer you are. There are the people that see programming as an art and those that just want to make money. Unfortunately the latter seem to be the majority of new "devs".
I am also someone who just wants to try something out and then move on. I created a simple game where you shoot 2D "balls" and have them expand until they touch something (wall, other balls, or baseline) then you have to shoot the expanded balls with another ball and hit it 3 times until it bursts and you get that space back for other balls to expand into. I wanted to make it a mobile app and write in in C++. I did a bunch of math stuff like calculating collisions, reflections, expansions by hand and once it was done it was amazing. I just had to put some kind of scoring mechanism and a home screen with a start button and I would have a game. But I didn't because I satisfied my need to try it out. I then moved to another game where you were swapping letters in a 10x10 grid of letters and try to make words. I got really good at finding all substrings in all directions on the grid and making sure to find all possible words from a dictionary and award points for each of them. All this came in handy later when I talked and showed of what I created on subsequent interviews. And I am still building things and running a startup just so I can try things out and see where they will lead me.
Watching Prime make a game would be AWESOME. Because as someone who primarily programs games, and has dabbled in web dev too. The two have COMPLETELY different skill sets, beyond raw coding skill. When I tried web dev I had to learn a ton of new technologies I had never touched before. It would be really fun to watch Prime touch graphics for the first time.
i have a similar experience with trying to make my own MMORPG, people always ask "why don't you start with something simple?", when i have done several small game jams, prototypes, and the sort. Now im 1.5 years into making my dream game :D
See the problem with your thesis that you’ll be able to talk to the sr devs at your job; is that the recruiters don’t care you made an engine, they say “well you don’t have an office you worked at that can give references so i’m not going to schedule something with the programmers.” I made my own engine and i’ve been applying for jobs for over a year, every single screening call ends that way.
Many such cases. Getting a job is hard for some people, including myself. Even in small cities they prefer to hire someone with 3 years experience from out of town then to hire locally. Many people here say they did the learning the hard way thing at a start up they themselves started, maybe that is the key, to create your own company for the purpose of getting "professional" experience.
Well the video is wrong only in when they start to make conclusions about a "path that will work out for certain", the logic is not valid though, because it takes only the individual, and we don't exist as individuals alone, things don't depend only on us, we need to do our best for ourselves, that is true, but this does not guarantee anything. I did a pretty though road because of my origins and particular history, does that mean that everyone who engages in what I did will succed? Off course not, I would even go and say they won't, even if they are better than I was, the world changes, society changes, relations evolve and regress, and more time it passes in this same system the worse it gets. The things I did will not be enough, the same way the things you are doing today will not be enough for future kids wanting similar goals.
I am so so thankful for this video. In my university , I am the only person ik who doesnt watch tutorials , doesnt copy solution, takes hint unless really needed ,and just sits with a problem and does it from scratch. It really demotivates me cause others complete things faster and I question my way of learning, however I cannot learn their way cause there is no almost 0 learning that way. I am so thankful to get affirmed in my ways when I am demotivated by my peers.
Doing it from scratch is a great learning process. I wrote a pacman clone and an arkanoid clone in assembly back in the 80s. Neither were released. Being clones, there could have been problems, plus I wasn't any good at sound effects. Back in those days, there were no engines. We just took over the whole machine. It was really just a passion project to learn how games worked.
When I was 16, I developed my own game engine fully on OpenGL. About half a year later, I did an interview for a game company, they wanted me to build something with Unity. I didn't know heck shit about unity, and just found a way to input code into unity cause I didn't have time to learn all the features. I completed the task with mostly code based on mathematical concepts. The CEO of the company was so impressed that he invited me to meet him, only for him to discover I was only 16 years old. He told me I'm overqualified, and that at my age I'm better than almost all of the contestants. So yeah, doing things the hard way definitely helps.
I think one thing this is getting at is how money shouldn’t always be the number one motivation behind what you do with your time. The money will eventually come once you obtain the knowledge. And the knowledge of someone that programmed their own physics engine is far more valuable than someone who only understands a single language or engine, and nothing about how it works under the hood.
Bruv the learned helplessness is crippling, at least for me. And the worst part is that the bits where learned helplessness bites your ass the worst are the bits where you can't even _see_ the learned helplessness, because it's subtle or it doesn't happen often. Things like (for me) trying to learn Assembly, because I tried for literal years to simply get "hello world" to print to the terminal. I'd always get a linker error, and whatever tool I was using would silently exit without telling me _anything_ about why that was (nasm BTW). I tried, and I failed. I still try to learn Assembly, but it's off and on and never with the same smash-your-head-against-the-wall-for-literal-days-on-end dedication like I do all the time for other tools like LaTeX, vim, or C.
Hey I just wanna say thank you. I have so many incomplete projects from trying to learn more complicated topics and this is the first time I've ever heard that it wasn't a bad thing. Ty for the motivation all the time
Somedays I wish I watched live. In response to the comment where studios wouldn't hire someone who built their own engine for an unreal or unity position. Many studios would rather hire someone who has experience building an engine over someone who has never left the comfort of a commercial engine for their experience level experience, just like Prime talking about being the most qualified engineer in interviews because of his startup.
I have _accidentally_ learned GIT years ago... I was working at a big company, and there was a guy who was just fucking master of GIT. I realized, he knows not only using it, but he knows what's going under the hood, and that's why he knows the upper layers so well. As I'm lazy, I have learned only the engine. I don't know which command does such and such trick with GIT, but I know whether the enigne can do it, how it should go at engine level, and I just google the command. I have also written a short presentation about it (learn the engine), and I have presented it at work, at local robot builder association, online, etc., and now I am the GIT guy who helps not only for my group, but for the whole floor in GIT troubleshooting.
If you don't ever reinvent the wheel you won't be the guy that gets a job at the NASA designing wheels for Mars rovers. But you can probably get a good job mounting car wheels and live you life completely fine, if that's what you want.
Dude, I would hire someone that made their own game engine for any programming job, regardless of a specific stack. A game engine is one of the most complex pieces of software you can make.
This video literally gave me flashbacks on how i went from school drop out to CEO of a Supercomputing company. Honestly i wouldnt trade the hardship i went through even for billions. When you see people who run operative systems they have written from scratch as a daily driver and you sit with barely functioning, bloated and slow systems. There are so talented people out there. Reinventing the wheel means to me that we have a good future in technology. While people say "Do not reinvent the wheel", are you afraid of the unknown? Why wouldn't you be the one to dictate the future?
the second video, "why you shouldn't make a game engine" is actually interesting too: he's saying you shouldn't aim to make a game *engine*, but instead make a *game*. To summarize what he says in the video: "make a game, the engine is just the bits of code you can reuse to make your next game" (probably somewhat inaccurate because I wrote this from memory and it's been about a month or so since I watched it)
my gamedev goal is just to make something for fun that is fun to play, and learning how stuff works while doing it. (also I want to have a finnished project that I can use to show off my skills if I want to get hired as a gamedev) So I'll stick to doing gamedev from scratch. (I don't even plan on selling the games I want to make, I just want to make them for fun, though I might release it to the public so people can play it)
He's right guys. Being a full stack guy is really the best one. I'm not that much yet, but before uni, I was working on a business where I managed everything. It taught me how to write emails, how to communicate effectively(hardcore introvert) and many more. I'm using all those skills now to join various clubs here now. I got better at writing and now I'm a hobby writer
4 months after seeing this video, came back to comment because it sent me a in a completely different direction. I stopped trying to make Godot projects, in favor of slowly building a game engine from scratch, and learn how to code in the process. This is has been much slower, much more difficult, and has granted me almost 0 instant gratification. BUT, I find myself deep in concepts, algorithms, language intricacies, and how computer architecture works. I love it. I haven't made a game, and probably won't for a while, but I feel like I'm putting myself in a good position long term and I wake everyday ready to dive into some new knowledge and keep building my toolsets, and to me that's more important. Thanks for this content!
To be fair, the video wasn't necessarely about why you should make an engine, but about why you should learn things the hard way. There are plenty of ways to do things on a lower level that doesn't involve building a game engine, hell even making a game using a framework rather than an engine can help you understand more of how games work on a lower level. (And give you a bigger appreciation for actual engines, as you have to implement stuff you take for granted in engines like Godot yourself.)
At age 17 (in 1974) we were introduced to the idea of programming quickly with BASIC. Then we were expected to become proficient in assembler. That was on top of the computer architecture, numerical analysis and statistics we had to learn over two years as part of that CS course. Which was on top of the mathematics and physics I was taking. As such I'm convinced that anyone interested in programming is well served by, and should be interested in, studying things at a low level. Conversely those who have no such interest should not be employed programming.
I recently started working on stuff from scratch for the GBA with Assembly. Putting the final goal as the obvious "maybe eventually a game", but really focusing on just learning each step. For me the main reason kinda is that I just wouldn't even start if I don't do it the dumb way. In the end, if I just learned enough about ARM assembly to go back to a project I started and left in a just barely good enough state to be released as an april fools joke, I'm happy. Still wanting to actually finish it everytime someone stumbles on it, but I just know that focusing on it is not the way to finish it.
I needed to hear this. I've always been attracted to these more low level concepts. And I think I got into the habits of only training for my job. But for years I have always wanted to created my own database or key value store. And I think I'm going to attempt this.
I've admittedly had the patronising thought like "just use... etc". But it's usually when someone has promised to deliver something and has me excited about the end result, the "Last night" game being an example. I love messing around with stuff that I'll never finish just to understand how stuff works. It makes me better at using existing tools because I understand the problems they are trying to solve and how to better utilise them.
Thank you for the comment about not finishing. I have spent months doing things the slow, hard way (python, front-end stuff, various small pieces along the way such as understanding images and so forth). Yes, I'm the slowest person in my class by far, and in the end I know my understanding will be deep, rich, and allow my creative thinking to flourish. I can always use shortcuts thoughtfully and strategically in the future. :)
@ThePrimeTime have you ever heard of the open course "The Elements of Computing Systems" also called "From NAND to Tetris" ? Over a decade ago I took it as a class at a community college and it is a primary reason I decided to persue software as a career. There's a video that outlines the course that if you haven't heard of it would be worth while to react to IMO. It's relevant to these interests.
While I generally agree with the sentiment that building something is the best way to learn, I would caution that it's still possible to spend a large amount of time rediscovering something that would have easily been learned by using tools others have already built. If you set out to build your own game engine with no idea how animations are built with modern tools, you might eventually re-invent keyframes. Did you have a good learning experience discovering why keyframes are useful? Sure. Did you need to take 6 months of your time to trial and error your way to learn this concept? No, using and learning about other animation systems would have taught you that same lesson in a fraction of the time.
Bun actually started as a game, which turned into a game engine, which turned into a runtime, which turned into Bun. Working on something that genuinely interests you is often the best path to success, even if it's a long and winding road.
This was a conversation I had with Jared at a meetup in SF. He might have also mentioned some of the details during the Q&A section of his talk tho, th-cam.com/video/qpAkYk1LK-U/w-d-xo.html@@DatabaseAdministration
I think steps like writing own framework, writing own cms, writing own api should be mandatory when learning web dev. It should give deeper understanding which is a better foundation.
6 หลายเดือนก่อน
I totally agree on this take. I've long said that every game programmer should make their own game engine. Not to use it, necessarily, but just to understand how they work and what kinds of trade offs there are. After that you are more competent on choosing and/or using any game engine there are.
in my current web dev job, I had this project where I had to create an entire lobby system that was used to play really simple party games with your phone. I've also made the 'framework' to code new games. I also created 4 games using my own tool. In my job interview, I mentioned that I toyed a lot with unity3d and I tried to make my own networking solution. I really doubt that another software dev at the company would accomplish this in 2 months. The company only hires junior web devs.
When you reinvent the wheel, you learn not only how to make wheels, but also get a deeper understanding of why we have wheels
wheel go roud
I am currentley building my own game engine and I %100 agree
Great words
this
Are you planning on releasing@@tirushone6446
i like how prime thinks regardless if its big or small or fail or succeed learning is never time wasted
The only way to fail is not to learn.
failure is always the most efficient way to learn, we just avoid it because it feels bad
@@crackasaurus_rox9740some people says that pain is also a good teacher
@@crackasaurus_rox9740 You can learn something doesn't work by trying it and failing, but you can't learn what DOES work by trying something ELSE and failing. You can learn it by trying EVERYTHING until something works, but that takes a long time.
pro move: just keep sending prompts to chat gippity until it compiles and learn nothing
i was part of a gamedev startup as one of their core programmers until we failed after a few years. i built out so much tech and learned so much, that i turned it into a senior position with ease afterwards
good for you
That is the route a lot get. The experience is worth so much. The outcome is the reason you're sitting at the interview. For if it hadn't failed, you would be great and be at the startup still and being part of that company and got your money's worth.
@@DataStorm1wrong the majority of game devs are let go after any given project. Nice try though buddy 😂
FACTS LOL@@ocoolwow
Writing my own engine opened countless doors for me. If you learn the fundamentals you’ll inevitably become the person that can do everything.
Same! Building my own small engines and tools let me get tons of opportunities in any technical position I wanted in game dev.
We've used Unity for the past few years but started with our own engine. The recent debacle showed us the value in that experience. We're too small to write a full engine from scratch that meets our needs but trying out Godot we didn't think "it doesn't do this one thing, it's trash" we thought "we can write an extension to do that." Instead of "it doesn't support consoles out of the box, it's useless" it's "well we can do the console porting." I know I'm not the best programmer but because of the experience of making our own engine I also know those are actually achievable goals, where as I've seen people I'd count as much better than me be strangely intimidated by the prospect.
what should I learn if I want to program rockets or mars rovers one day? genuinely asking
@@anon1963probably look into programming rc cars or drones to start
@@anon1963c/c++
"Wasting time" is part of the learning process. Foundation is incredibly important.
I feel like people in this society are just way too obsessed with productivity, sure productivity is cool, but sometimes I feel people should be allowed to take time to be a little less efficient you know, even if just in a hobby. Like, I'm not doing my project for a company, I'm not even making money out of it, do I REALLY need to have the most productive workflow ever? Do I REALLY have to do things in the most efficient or in the easiest way ever? Why can't I just ditch engines altogether and just make games using a library or a framework? or just make my own engine? I'm still learning either way. In the end of the day, isn't that all that matters?
One of the hardest classes I took was a speech anatomy class. The instructor never told us the specific actions or functions of muscles but instead had us study the anatomy diagrams and describe what’s connected where and what a contraction would do. I could have easily found some flash cards or whatever but that intense discovery-based way of learning means that I will probably never forget any of it or that I can use reasoning to figure out anything I might forget. Big fan of learning the hard way when I have the enthusiasm for it.
I thought you were being sarcastic until I realized, you are talking about an advanced
type of biology class. Not "speech 101"
@@Jabberwockybird it was basically speech science 101 (a prerequisite for all majors in the program) but this guy had his weird “from first principles” approach.
I mean when you understand elementary Latin, just knowing the name of each muscle is enough to know where they insert and what they do
@@BM-pt6sy lol yeah thank god for gimmes like the sternocleidomastoid or palatoglossus
I can support what you’re saying in this video, but with the emphasis that you need to accept learning as a valuable outcome. Before I got a job as a game developer, I spent a year building my own engine. It skyrocketed not only my c++ ability, but also my understanding of low level graphics apis and different engine architectures, animation systems, etc. By the end of that year, I got a job at one of the most prestigious studios in the industry. A year after that, I was promoted to senior. Eventually, I looked for jobs elsewhere. They offered me a $50k raise trying to get me to stay.
If you have a low level understanding of how things work in your field and the ability/drive to tackle those problems, you are incredibly valuable.
However, I never finished that engine, and I ended up dealing with a difficult bout of depression. I’d configured my expectations incorrectly. Just a word of caution, set your expectations correctly.
@@anon_y_mousseHang in there, I am on attempt number 5 of rewriting an API and supporting application structure. What I'm doing isn't even that complex but it is written from scratch in Python and will be an application architecture I want and can build on top of. I feel like I'm going crazy and deluding myself often, as I've been at this for about a year 😢 I just hope to reach a kind of v1 soon but I'm struggling.
@@anon_y_mousseHm. Sorry if this isnt a good question but: I have a school project to design an IDE for Python. How would you suggest that I start?
Do you have any tips to share with someone who's planning such a project?
@@birjisafroz8886 Start by drawing a cube on the screen from scratch using a graphics API. Once you can do that, start researching different ways that game engines handle orchestration, object/entity management, and so on. Focus on getting a basic control flow for your engine and a system for managing entities/objects. I recommend looking into Entity Component Systems.
Decide where you want to use external APIs and where you want to develop from scratch. I built literally everything with just c++ and even built my own template library. If I were doing it today, I'd just use EA's template library and an API for json/xml serialization rather than building those from scratch. However, things like the entity system or a job system, it would be valuable to build those from scratch. You will learn a lot about the problems that engine developers face just by doing that.
Simply start...
The Video is saying get the understanding and try it, even if it fails, you learned.
10:53 as a senior engineer, the only way to impress us is to have the ability to solve new problems. Memorizing one framework is great, but can you pivot that knowledge into something brand new, or solve a novel problem? That’s what companies need, not the chatgpt solutions
Nobody cares about impressing you lmfao 😂
ChatGPT solutions guide successful acquisition troubleshooting and demonstrations of notoriously difficult high energy physics experiments. You might need to shift your paradigm a smidge.
I was once ridiculed for never finishing the game I worked on, completely ignoring the fact it took me from being a customer support drone to a highly sought-after engineer. I just smiled and laughed. Felt good.
People also don't see that you keep all of the code and assets you made for the game. Some day, if you make another game, you're going to use code from that previous game. I do all the time. It's never wasted.
And then everybody clapped.
What language?
@@investor.zhis name? Albert Einstein
Wait, but did you finish your game in the end? A game that nobody can play is not an experience but remains a pastime and a memory. If you created a game as a method to gain expertise to get a job then ignore my comment.
10:40 That sounds exactly like my last job interview. I had built a large-scale game and learned so much beyond my formal degree level. Though I never "finished" it, I found a company that was willing to interview me on the merits of that game. I'm still with the company 12 years later.
I've gotten game industry interviews because of the work I did creating the games in that video.
Wow!
I am a professional game developer who chose to learn programming the hard way. I always believed that I learn more by building things myself. If I had chosen to start with a game engine, I would be great at X engine but I'd much rather have skills that enable to work in any engine I want. It took me nearly 10 years to land my first job in the industry and some people might argue that I could have moved faster but I still believe I made the best choice for my career.
My coworkers were very surprised to learn that I was a self-taught programmer because I don't approach problems from a high level mindset. Many of the challenges I face at work, I'm able to overcome by working from first principles. My bosses took notice when they could throw random work at me and I would make it happen, regardless of the specific knowledge domain.
Everything @ThePrimeTime says about the rewards for deep learning in this video is correct.
Usually people spend more doing absolutely nothing productive, or even self-destructive. So at the end of the day having a passion sounds like a win to me
Can you describe a little what you built and what you learned. I mean, obviously not specifically, but I'm interested
10 years was the best choice? Bro youre tripping. You could learn to build a planet in 10 years 😂
I think that one thing that is missed is that you get incredibly good at understanding when the tools you use just break, and you can adequately fix that in your own way. The truth is that all those tools are not foolproof, there will always be assumptions that break and bugs.
I have found myself repairing library code or entirely rewriting parts of libraries because they just don't work for our use case. (I am currently working with Python, but have experience in Frontend, and low level code,).
Doing it from the ground up forces you to think about things that a normal dev will not ever think about unless he is very experienced in the tool he is using.
You get a general kind of knowledge that is very hard to get otherwise.
building low level stuff manually has taught me more than playing lego with libraries and engines has. Most of the time the stuff i make at home never gets finished because it was never the point, but sometimes a project I finish IS the point. A mix of the two - build-it-yourself and finish something with normal tools - is what worked for me
Love that you looked at this :-) Also lovely that I'm watching this just after coming off of anesthesia from an echocardiogram.
Great video mate!
dont know if u remember me, but either way I've spoken with you back then, great seeing that you get your effort acknowledged and just by urself and a couple of people
Really confused how nobodies noticed this-
This is one reason that I am so glad I started working in IT in the early days. I had no choice but to use C, Pascal, ASM and later C++ to do coding, with no frameworks available. It thought me so much about how the computer hardware, firmware and the OS worked together. And I also had to dig deep into how low level protocols and device drivers worked.
It's so hard to explain to people, why they have to learn things the hard way.
Building basic things the hard way is particularly useful if you want to build a career out of it. You gain expertise which you wouldn't get following tutorials.
Making mistakes is good for knowledge. Having the ability to resolve issues is what makes you a productive and fast developer. It sets you apart from others.
Skills that you gain debugging issues translate to so many advantages in many other fields and technology. You become the guy who gets stuff done.
It's worth it.
In the university I went to, we started with C with the first lecture being selection statements, functions, and loops, and the second memory management…
In the first semester we had to build a 16bit microprocessors by hand on a breadboard, too.
Later on, we had to write our own drivers, our own virtual microprocessor, our own neural network, and write our own compile, etc.
We were never allowed to use anything that we didn’t write ourselves. We even had to make our own game engine when we made a game.
It was hell, most often than not, but you learned a lot.
Im very interested in when and what degree, that sounds awesome. I bet it made whoever went thru with it much better
Im very interested in when and what degree, that sounds awesome. I bet it made whoever went thru with it much better
This sounds amazing. I wish my university handled CS the same way
@@divinedela9125 I wouldn’t call it amazing. It was brutal, and in many cases outdated. IMHO, the first lecture shouldn’t even be programming. Just version control. Then go on to C, structures, etc.
@@Kevinjimtheone I understand what you're saying. When I was in school, I probably would have found it brutal too but now that I've been working as a software engineer for almost a decade, these are the things I wish I learnt "properly" while I was in the university. I've actually been planning on building some things using C++ so I get a deeper understanding of how things work. Concerning the parts you say were outdated, I'm not sure exactly what you're referring to because the fundamentals like programming in C and memory management have not changed.
I will say one of the proudest program projects that I have completed was a hobby project that I created in Assembly. It was just a simple text editor and I have built far more complex applications since using other languages, but the month or so that I spent making the DOS text editor in Assembly allowed me to learn the CPU and I/O buses on a 386.
Okay this sounds cool as fuck. How did you start?
@@datboi1861 I learned this a while back before the internet was popular. So, I basically bought 80x86 assembly book and one of the exercises in the book was writing a simple text editor. By the time I got to this chapter in the book, I had already written several other programs in assembly, so I decided to try an complete this exercise. I think the book was originally used as a textbook for a college course.
Yes, I'm curious. @@datboi1861
aye dude! where to start learnin em?
definitely true. i spent like a month or so learning OpenGL just because i wanted to understand how the heck 3d images are actually rendered. all i ended up building was a bunch of cubes that spin around with a moveable camera. i did have an end goal of a 3d simulation thing. i didnt quite reach that goal. but, i finally learned what the computer is actually doing under the hood when rendering objects on the screen. none of it was directly applicable to my day to day job. but going through the process helped me understand programming on another level which definitely helped me be more productive at my real job. things at my job seemed a lot simpler after. thinking about bits and bytes of memory on a lower level translates to all programming is some way shape or form.
now im learning elixir. why? because ive never done functional programming and i want to understand it.
I hire game developers in the games industry. This guys advice is pretty good - but I'd say it's not a hard and fast rule. If you're ONLY goal is to release a game (and particularly if this is your first game) - don't start by writing an engine - you will be disappointed.If you go in knowing the additional risk - then yeah, go for it. But the problem with writing an engine before having written a game is that you don't necessarily know what a game engine requires.
Here's the thing though - we do need people that re-invent the wheel to simply learn. If you want a high probability of getting a job in the games industry, having those skills is pretty beneficial. The harder it is to acquire the skills you have, the less competition you will face.
good morning sir can you please hire me sir
@@krolmuch you would need to live in Japan, or have sufficient experience to get a Visa.
@@zoeherriot haha bro is shooting his shot in youtube comments section
@@shreypatel9379 okay…
Shooting the shot in TH-cam comments is fine - software dev is a less sought out job in Japan as compared to the United States like in Silicon Valley. Japan makes its software developers work long hours for less pay and if your code does not contribute to anime style mechas robotics control systems then they will have you print out all of your written code and will distribute the printed code to your coworkers to use as toilet paper. Never disrespect the massive robots.
I watched their video a few months ago but I am grateful for your input. Thank you for kubernetes part at the beginning. Made me feel better about not having completed projects on my resume. My goal when doing projects is to learn a specific framework/concept/tool and completing them is a nice bonus. Eventually I will finish them but I prioritize learning first.
This reminds me of this concept in psychology called "over-learning": You're more likely to be proficient at a skill if you learn something relevant to it but a few skill levels higher. For example, it's been demonstrated that if the last math class you took was Algebra 2, you're not as likely to remember it throughout your life due to fade out. But you're more likely to remember Algebra 2 concepts if you left off with an advanced math course since the former is a required foundation for understanding the latter. So implementing things at a lower level may be a well-spent form of over-learning.
can agree.
starting with C, espec. in the harvard cs50 course, is THE BEST could happen to me.
I knew some php / html & css before,
but learning all the basics of a detailed language with examples is the best foundation you can have.
I did learn more on projects that I not finished than project that I have finish! Like Steve Jobs said: "You can only connect them looking backward. So you have to trust that the dots will somehow connect in your future!!"... So each project or something new that you seek to understand is a dot that will connect in the future!
😊X̌
I agree, its all about your personal goals. If your goal is to get a product out, then absolutely learning the latest techniques, utilizing the applicable algorithms, understanding the libraries relevant to your project all makes sense and is of course the sensible thing to do. But if your goal is, for example, to learn HOW a game engine, or a renderer, works, then it shouldnt matter to anyone what you're doing because your GOAL here has no deadline, no dependencies, all you care about is learning about that thing.
This is amazing. I'm currently in the situation where I want to learn the fundamentals, but at times have been dissuaded thinking that it's going to get me nowhere. This commentary and video has ultimately reignited that! Thank you!
100% agree - last contract I got was because I blogged down speeding up Linux AMD kernel driver. Job was only using threejs - I did not know threejs AT ALL, and made many useful things to them, including some stuff they just never properly solved before / fast enough.
Those high level abstractions are great, but you have nothing to lose by getting to know how they work, and it makes the difference when you need something outside the mainstream. See JWT for example, everyone uses it everyday, but a few people knows how it's implemented and how to use it properly outside of the existing frameworks and libraries.
Videos like this have helped me a lot recently. I've always came to learning programming the other way around, and I can see now how that made my progress very slow. I always wanted to discover ready-made solutions, always tried to find the best way to do things that people already came up with, and by doing that I never tried to come up with solutions myself. I tried to learn by doing, focusing on the outcome, ignoring how I got to that outcome.
Love your videos, Prime. Just got a new software job after about 6 weeks of very intense study and learning, which was powered in great part by your infectious love of programming. Thank you. Also, I’m now neovim btw (and loving it!)
Wait is Prime a neovim user? Me too!
Intense 6 weeks of learning? lmaaaaaaaaaaao. Not even 27 hours of studying per day is enough in that ridiculous amount of time
@@billcosta I said a "new" software job, not my "first" one. I've been in the industry for 5 years, but only recently took a step back and evaluated how I could be doing things better.
Prime's videos helped reignite the "fire" in me that I haven't felt in a while, which in turn motivated me to persue learning new things and adopting new ways of working. All of that outside of work hours. I stopped drinking and spending so much time playing video games and started focusing on becoming a better developer and a better person.
In doing so, I managed to land a job that pays 50% more than my previous one (and the previous one was already pretty comfortable so that's saying something). My confidence has skyrocketed, my relationships significantly improved, and I feel like the best version of myself again. As silly as it sounds, 90% of that motivation started by watching Prime's videos - especailly the Meth to Netflix one.
Hope that clears it up for you.
One could say I'm doing things the hard way by learning C with the goal of making simple 2d games, but I found with unity and godot that I had no idea what the engine was doing, leaving me confused as to what I needed to do to make a functional game. So I decided to learn how to make a game from the ground up so I could have a sort of game design foundation going forward. and besides knowing C is a bit more useful than knowing GDScript. That's my reasoning at least
There's ancillary benefits to such things as well which I've been thinking of a lot recently, such efforts ingratiate one into the wider Computer Science / Engineering / IT subculture. I enjoy introducing younger devs / co-workers to people like Kernighan & Ritchie (on the topic of C), and I enjoy it more when they come back to me a week or two later to describe all the fascinating new things they discovered after diving into the history of such industries. These are not directly beneficial per se, like you're not going to get some nice job just for namedropping other people or anything, but I think it does have nice psychological benefits and generally increases one's depth of knowledge on the whole history of the thing -- how we arrived from Leibniz to today, where we might be headed collectively, and so on.
How do you learn how to make a game from the ground up
Had seen this one before and it's a great take. You obviously don't reinvent the wheel everyday, but it's good to "invent" it once, even if at a very basic level, so you can get the feel on how it rolls and why it rolls better than a square. If you ever rawdogged graphics into a memory buffer you'll be at ease whether you're doing it in canvas or CoreGraphics or GDI+ or whatever where the same fundamental CONCEPT applies. Rawdogging UIKit isn't so daunting if you're used to do it in WinForm too. And if for some reason you have to do it in the DOM.... what's new? Sintax/properties/etc change, CONCEPT stays the same.
I've dabbled in loads of frameworks, libraries, game engines, etc. and very few ended up with me having a finished project. Not because I was unable to, but because in my head, I was already done. I only needed a project, an excuse to use whatever I was interested in at the time. The goal was never to finish the projects. Finished projects are for work. Projects at home are for playing around. Some of them I do finish, but then the scope is usually small enough that it's something I'll finish just by working a little bit at a time.
20:27 I damn near fell out my chair when he said confidence. I need to have a deep understanding of what I am discussing/working on else I feel vulnerable. You are right Sir!
Logic and computation theory, multivibrators/memory cells, Assembly and setting things up, then C is the way my school took, and it secured the basics, discipline, and respect for bloat, and being naturally in charge/opposed to the "void" of "thingshappening".
I once built a 4-bit calculator out of pure mechanical relays. My CS friend wasn’t fond of “re-inventing the wheel”. But I learned so much about circuit design, power distribution and propagation, optimization, converters, etc. That wouldn’t have been possible if I had only fiddled with simple logic gate simulators. Besides, it was so much fun!
When I was learning code, pre computer science degree, I tried to make 2D isometric engine using windows GDC (no not DDraw lol). It was insane….ly slow but I learned a lot. Then I created language that compiled into my own byte code. It took 15 seconds to compile 3 lines! All worth it cuz when I finally decided to get a degree it was a breeze and now I can pick up any programming language in a couple minutes.
Thank you for this. Your mindset is very refreshing! I been learning python on udemy (100 days of code) and so far I'm really enjoying it but getting discouraged when I think about how low the job prospects are for entry level no degree/experience python dev. Doesn't help that my parents get really upset that I'm "wasting my time" learning programming so I have to limit my practice time 😭
You aren’t wasting your time at all if you have a passion for it keep going
That is my situation. I was making a massive game for 3 years. Never finished it, Had burnout, but learned a lot.
This is the same argument why some people insist that abstraction in modern languages. Having a deep-level understanding of how things work requires to do things from scratch. My first language was 6502 Assembler so learning from scratch is natural to me but I see both sides.
Both kinds of people are required ("high level" and "low level") in my opinion. It's not like it's impossible to learn a game engine after starting out with assembler or vice versa. In some cases performance and control matters more, in other cases the only thing that's important is that the code runs on any machine and assembler knowledge doesn't help at all. I don't like the binary view that one has to choose, just learn what you find fun, useful and rewarding, and try stuff from another "level" now and then.
as someone who's just been home taking care of family and doing a bunch of failed side projects for 2 years. i totally agree that the amount of learning and growth happening is insane, even though i've not had a real job for the past 2 years, i still feel like im atleast way better of a developer now than i was before, with a ton of breadth in my skillset. purely because i have made things the hard way. ( i even attempted to make a game in asm which i gave up on after a few weeks ) or like creating a full stack application with just rust and htmx. sure i might not be the best at react or go, but i do have a ton of random ( and sometimes useful ) knowledge of how things work
ygmi
Am I really the only person that looks at programming and my brain instantly goes to "I WANT TO LEARN ALL THIS CRAZY $#!T?"
So do it.
@@davez5201 I have been doing that for the past 7 years
Honestly, I thought that's how most people interested in programming saw it. But hearing the kind of comments chat was making in the video I guess I was wrong and a lot of people just see a means to an end.
@@zac9933 Maybe this is some kind of personality disorder
@@nexovec This is the first time I have heard curiosity and passion being called a personality disorder. Go be excited and pursue every single thing you want! Just make sure to do it one at a time (I have made the mistake of trying to do multiple at a time too damn many times and currently am doing it again... don't.)
This video is validating my thoughts on letting JS go for a while and getting to know PHP and Wordpress. All I want to do is provide small businesses with an online presence and the opportunity to grow their business and help their costumers.
Learning data structures, js, react, some backend language wasn’t the way to do it, because no business is going to have enough money to pay for a fully custom website, and more importantly, they don’t need that.
That’s not to say I didn’t have fun learning, though, and since I have learned semantic HTML, best HTML practices and CSS makes WordPress look like a toy box, and I’m extremely happy about that because everything I’ve been learning the past year can be applied to this.
Great video!
I love reinventing the wheel. I remember when I was working for a large corp and our team was being replaced. The new guys were like "why the hell did you build all those widgets instead of using libraries ?" They spent literal months replacing all of it by "industry standards" despite my warnings. Performance went to shit, but most of all when QA came back at them they had to fork every single library they used to either fix obscure iOS Safari bugs they hadn't spotted or add the functionnality required for the use cases we had to deal with. It was a long game but the "I told you so" was sweet given their takeover had been so toxic.
Spend enough time reinventing the wheel and you will be faster at coding something new than at integrating a library reading through their shitty docs and breaking changes. You will learn how things work and it will also make you much better at picking libraries.
This is the story of my life. Build something from scratch then become over qualified for every job interview. Repeat every 3-5 years and your resume will be stellar. Why? Because you become the person who can make anything.
Same
I would argue that it is not just a matter of a mindset. It is about human nature. We simply do not learn by struggling to get something done. People who constantly try to get something done are close-minded. It is how the brain works. The mindset part comes in where we need to understand that nature. By stopping the struggle to get it done, we invite curiosity, experimentation, and PLAY, which makes our mind open and ready for learning and it will be remembered better.
It's neurology. To put it rather simply, when we rush the synapses in our brain are oscillating fast and do not allow for new connections, hen the brain synapses slow down and oscillate less frequently our brain is more capable of creating new neural pathways, which is learning, self developing, as opposed to strengthening the already learned knowledge/behaviour.
@ThePrimeTime I have a friend who was just like the kid in this video. He wanted to make games so he learned how to do them from scratch. He now works at Larian Studios and worked on Baldur’s Gate 3. All because he learned a TON on his own over like 2 years of game programming from scratch on the side of his full time job. It definitely pays off.
Ugh this is great, 1000% agree with this man, I and currently working as a DevOps engineer, making my way into software looking back ever since I started learning things that we were "out side of my wheel house" things have became easier from some view points.
It's hard, man. I've been taking programming courses and trying to build my own projects for about a month now. Green as grass, is what I am. And I occasionally stop and think to myself "I can't do this, I'll never complete a project at this pace"
But, then I see a video like this, and I think of all the times I've spoken to people in the last few weeks about what I've been learning, and everyone is blown away with how much knowledge I've gained. I've even shown some of these dinky projects to people, and they almost always say "Wow, you made that? In just a couple days?" and I go "Yeah actually its very simple, I'm not even that proud of it because its very beginner level stuff"
Yet, they are amazed. I've taken the first step toward something. I need to keep reminding myself that this is a long game.
That's only because the topic is incredibly complex. And the learning curve is one of the most brutal there is. Just a bit of knowledge sets you apart from those without any. But the difference between you and those who are actually fluent and good at this, is so astronomical, it's not even in the same galaxy anymore
as a developer you are ALWAYS improving your portifolio regardless of what you are doing, as long you are doing something
9:05 the guy who says can't get a job as a game developer, you are correct but at that point you are eligible to get a job as a game engine developer, and trust me if you are a part of the team that figures out some of the cool things i see Unreal Engine 5 recently coming up with, that will create a higher sense of happiness than any single game story you can come up with, because any game made under that engine you can claim being a part of for yourself. 'I made that possible'.
Just imagine being part of the team that came up with Nanite at Unreal and when they see a movie studio use Terabytes worth of models in a scene and Nanite rendering perfectly the right amount of detail based on the simulated camera focus. That seems like an incredible feeling to make something like that possible.
"Wow you built a complete Twitter clone! How did you implement authentication and authorization?"
Well uh akshually, I just paid $99 for Clerk.
"Alriight, how did you configure the database to scale for the traffic?"
Wellllllll, I just paid Planetscale $99 because nobody needs to manage databases themselves nowadays.
"Let's move to more frontend questions. This droodown modal looks pretty cool. How did you make it?"
I used these 50 react libraries and combined them in this helper hook.
"Sir, you're out of the startup. Good luck with your next interview."
High key dogging on Theo tbh
Dude deserves to be dogged on, it's okay.
Funny enough, this applies to essentially ALL fields. I'm now a woodworker, and can say that almost all the skill I have is thanks to using hand tools. Sure it's slower at first, and requires a significant amount of learning, but what you get out of it is unparalleled.
I am learning woodworking with hand tools. Where do you learn?
"Use someone else's tools and you'll be constrained to someone else's limits" is my main takeaway from that video, and I think is true even for opensource since the main team more often than not Will prioritize other features and bugfixes than whatever your specific project needs, or worse, work in a totally different way incompatible with your project.
Also the bloat that some game engines or frameworks in general have because they try to do too much at the same time is distracting.
Watched this when it came out, every point could have been spoken from my own mouth. Often someone will ask a question and can be given the exact answer but they just aren't ready for it because they don't have the fundamentals to interpret or implement it (have been on both sides of that).
What's worse is that in most cases development only gets harder from there and it is in building that foundation that will enable them to overcome the next question that will inevitably arise.
This is so true, i am only working 1 1/2 year full time, but in my my study time i worked as a student worker and i challenged myself in so many different topics. Writing WebServices, Frontends, GameEngine ... and also tried different Architecture Styles, Deployment Methods, Infrastructure Styles. I am maybe not the best in my team knowing all Frameworks we use, but i can definitely say i am the best understanding technical concepts and the actual code. They had a problem with a legacy software running on Tomcat (JVM), where the Sessions Objects were not released, so the Server crashed every 2-4 Weeks. This issue was already one year old, guess who figured it out. This was not even a hard bug to understand, you just had to look on the heap dump. Learn the stuff the hard way, it only benefits you!
I like that lifting weights analogy. There is a difference between "working out" and "training". Training for strength is a superior objective (similar to knowledge acquisition) as strength carries over to multiple activities and is generally preserved over time.
But training for strength is boring as it involves small set of lifts (squats, deadlifts, etc) and the variation is just more weights. Most people won't be able to stick with it long enough to see non-trivial benefits.
Sometimes you're forced to build your own engine given the scope of a project. Currently I'm building a falling sand engine (like Noita) but with online multiplayer. I've learnt quite a bit so far and have genuinely enjoyed building something from scratch.
That video is one of my all-time favourite cs video. Learning the Hard way is surely the only way.
Just a little bit of vector math and python, plus building a project with them in 3D got me sponsored to move to the UK and work for a high ranking company in the animation industry. I was clueless about so many of the pipeline stuff initially. But found it truely fascinating how they had solved so many of the boring problems with automation.
To this day I find 3D animation pipeline management one of the most interesting topics.
Python might not be the greatest language, but man, that combined with math that can build systems to solve daily problems is where money is at for me and some others alike.
Great video as always 🙏🏽
thank you for existing man. it really feels good to get perspectives from you.
I feel bad for the kid who watches this, jumps into game dev by trying to build his own engine, and burns out. (26min mark is key)
Pick up an engine. Any engine. Make ''something'' tiny. Publish it. Make something better. Then once you start running into "Huh...the engine sucks at this" that's when you take the hard road and start to cook, and that's when you become dangerous.
Exactly. Kinda tired of listening to prodigal, out of touch developers who think everyone is born with the same isolated talent as them.
Mate, I'm already sweating blood learning GML, and you want to make it even harder on me by telling me to build my own engine? Get a grip lol
@@WrenKainIV remember that making games is your craft, not programming, their advice is like expecting jazz pianists to spend 3 years to learn how to construct pianos before they learn to read sheet music
I would like to add that finishing a game and putting it out there gives a massive boost to motivation.
So making smaller games that do well is a better option.
However, this dev is the rare exception where he doesn’t need the boost in motivation.
He’s already popping off.
All the power to him.
Watching this after making a project totally on my own, without following any tutorials, just following the idea I had in mind and researching about how to do things, I totally agree with the message delivered through this video.
11:00 there is a lot to be said, but I'll be brief and say this: don't do it for the money, you will rarely be promoted or better paid, you should strive to get better, and if you want, search for a new job and negotiate your salary. Thats not necesserally a rule, but it works like this most of the time.
The final goal differs by what type of programer you are. There are the people that see programming as an art and those that just want to make money. Unfortunately the latter seem to be the majority of new "devs".
I am also someone who just wants to try something out and then move on. I created a simple game where you shoot 2D "balls" and have them expand until they touch something (wall, other balls, or baseline) then you have to shoot the expanded balls with another ball and hit it 3 times until it bursts and you get that space back for other balls to expand into. I wanted to make it a mobile app and write in in C++. I did a bunch of math stuff like calculating collisions, reflections, expansions by hand and once it was done it was amazing. I just had to put some kind of scoring mechanism and a home screen with a start button and I would have a game. But I didn't because I satisfied my need to try it out. I then moved to another game where you were swapping letters in a 10x10 grid of letters and try to make words. I got really good at finding all substrings in all directions on the grid and making sure to find all possible words from a dictionary and award points for each of them. All this came in handy later when I talked and showed of what I created on subsequent interviews. And I am still building things and running a startup just so I can try things out and see where they will lead me.
Watching Prime make a game would be AWESOME. Because as someone who primarily programs games, and has dabbled in web dev too. The two have COMPLETELY different skill sets, beyond raw coding skill. When I tried web dev I had to learn a ton of new technologies I had never touched before. It would be really fun to watch Prime touch graphics for the first time.
i have a similar experience with trying to make my own MMORPG, people always ask "why don't you start with something simple?", when i have done several small game jams, prototypes, and the sort. Now im 1.5 years into making my dream game :D
Good luck! :)
See the problem with your thesis that you’ll be able to talk to the sr devs at your job; is that the recruiters don’t care you made an engine, they say “well you don’t have an office you worked at that can give references so i’m not going to schedule something with the programmers.” I made my own engine and i’ve been applying for jobs for over a year, every single screening call ends that way.
Many such cases. Getting a job is hard for some people, including myself. Even in small cities they prefer to hire someone with 3 years experience from out of town then to hire locally.
Many people here say they did the learning the hard way thing at a start up they themselves started, maybe that is the key, to create your own company for the purpose of getting "professional" experience.
Well the video is wrong only in when they start to make conclusions about a "path that will work out for certain", the logic is not valid though, because it takes only the individual, and we don't exist as individuals alone, things don't depend only on us, we need to do our best for ourselves, that is true, but this does not guarantee anything.
I did a pretty though road because of my origins and particular history, does that mean that everyone who engages in what I did will succed? Off course not, I would even go and say they won't, even if they are better than I was, the world changes, society changes, relations evolve and regress, and more time it passes in this same system the worse it gets.
The things I did will not be enough, the same way the things you are doing today will not be enough for future kids wanting similar goals.
I am so so thankful for this video. In my university , I am the only person ik who doesnt watch tutorials , doesnt copy solution, takes hint unless really needed ,and just sits with a problem and does it from scratch. It really demotivates me cause others complete things faster and I question my way of learning, however I cannot learn their way cause there is no almost 0 learning that way. I am so thankful to get affirmed in my ways when I am demotivated by my peers.
Doing it from scratch is a great learning process. I wrote a pacman clone and an arkanoid clone in assembly back in the 80s. Neither were released. Being clones, there could have been problems, plus I wasn't any good at sound effects. Back in those days, there were no engines. We just took over the whole machine. It was really just a passion project to learn how games worked.
When I was 16, I developed my own game engine fully on OpenGL.
About half a year later, I did an interview for a game company, they wanted me to build something with Unity. I didn't know heck shit about unity, and just found a way to input code into unity cause I didn't have time to learn all the features. I completed the task with mostly code based on mathematical concepts. The CEO of the company was so impressed that he invited me to meet him, only for him to discover I was only 16 years old. He told me I'm overqualified, and that at my age I'm better than almost all of the contestants. So yeah, doing things the hard way definitely helps.
INSANE WRITE ME im 17
I think one thing this is getting at is how money shouldn’t always be the number one motivation behind what you do with your time. The money will eventually come once you obtain the knowledge. And the knowledge of someone that programmed their own physics engine is far more valuable than someone who only understands a single language or engine, and nothing about how it works under the hood.
Bruv the learned helplessness is crippling, at least for me. And the worst part is that the bits where learned helplessness bites your ass the worst are the bits where you can't even _see_ the learned helplessness, because it's subtle or it doesn't happen often. Things like (for me) trying to learn Assembly, because I tried for literal years to simply get "hello world" to print to the terminal. I'd always get a linker error, and whatever tool I was using would silently exit without telling me _anything_ about why that was (nasm BTW). I tried, and I failed. I still try to learn Assembly, but it's off and on and never with the same smash-your-head-against-the-wall-for-literal-days-on-end dedication like I do all the time for other tools like LaTeX, vim, or C.
Hey I just wanna say thank you. I have so many incomplete projects from trying to learn more complicated topics and this is the first time I've ever heard that it wasn't a bad thing. Ty for the motivation all the time
Somedays I wish I watched live. In response to the comment where studios wouldn't hire someone who built their own engine for an unreal or unity position. Many studios would rather hire someone who has experience building an engine over someone who has never left the comfort of a commercial engine for their experience level experience, just like Prime talking about being the most qualified engineer in interviews because of his startup.
I have _accidentally_ learned GIT years ago... I was working at a big company, and there was a guy who was just fucking master of GIT. I realized, he knows not only using it, but he knows what's going under the hood, and that's why he knows the upper layers so well. As I'm lazy, I have learned only the engine. I don't know which command does such and such trick with GIT, but I know whether the enigne can do it, how it should go at engine level, and I just google the command.
I have also written a short presentation about it (learn the engine), and I have presented it at work, at local robot builder association, online, etc., and now I am the GIT guy who helps not only for my group, but for the whole floor in GIT troubleshooting.
If you don't ever reinvent the wheel you won't be the guy that gets a job at the NASA designing wheels for Mars rovers. But you can probably get a good job mounting car wheels and live you life completely fine, if that's what you want.
Dude, I would hire someone that made their own game engine for any programming job, regardless of a specific stack. A game engine is one of the most complex pieces of software you can make.
This video literally gave me flashbacks on how i went from school drop out to CEO of a Supercomputing company. Honestly i wouldnt trade the hardship i went through even for billions. When you see people who run operative systems they have written from scratch as a daily driver and you sit with barely functioning, bloated and slow systems. There are so talented people out there. Reinventing the wheel means to me that we have a good future in technology. While people say "Do not reinvent the wheel", are you afraid of the unknown? Why wouldn't you be the one to dictate the future?
the second video, "why you shouldn't make a game engine" is actually interesting too: he's saying you shouldn't aim to make a game *engine*, but instead make a *game*. To summarize what he says in the video: "make a game, the engine is just the bits of code you can reuse to make your next game"
(probably somewhat inaccurate because I wrote this from memory and it's been about a month or so since I watched it)
my gamedev goal is just to make something for fun that is fun to play, and learning how stuff works while doing it.
(also I want to have a finnished project that I can use to show off my skills if I want to get hired as a gamedev)
So I'll stick to doing gamedev from scratch.
(I don't even plan on selling the games I want to make, I just want to make them for fun, though I might release it to the public so people can play it)
He's right guys. Being a full stack guy is really the best one. I'm not that much yet, but before uni, I was working on a business where I managed everything. It taught me how to write emails, how to communicate effectively(hardcore introvert) and many more. I'm using all those skills now to join various clubs here now. I got better at writing and now I'm a hobby writer
4 months after seeing this video, came back to comment because it sent me a in a completely different direction. I stopped trying to make Godot projects, in favor of slowly building a game engine from scratch, and learn how to code in the process. This is has been much slower, much more difficult, and has granted me almost 0 instant gratification. BUT, I find myself deep in concepts, algorithms, language intricacies, and how computer architecture works. I love it. I haven't made a game, and probably won't for a while, but I feel like I'm putting myself in a good position long term and I wake everyday ready to dive into some new knowledge and keep building my toolsets, and to me that's more important. Thanks for this content!
To be fair, the video wasn't necessarely about why you should make an engine, but about why you should learn things the hard way. There are plenty of ways to do things on a lower level that doesn't involve building a game engine, hell even making a game using a framework rather than an engine can help you understand more of how games work on a lower level. (And give you a bigger appreciation for actual engines, as you have to implement stuff you take for granted in engines like Godot yourself.)
Experience counts for a lot, and unique experience gives you perspectives that are valuable to a team.
At age 17 (in 1974) we were introduced to the idea of programming quickly with BASIC. Then we were expected to become proficient in assembler. That was on top of the computer architecture, numerical analysis and statistics we had to learn over two years as part of that CS course. Which was on top of the mathematics and physics I was taking. As such I'm convinced that anyone interested in programming is well served by, and should be interested in, studying things at a low level. Conversely those who have no such interest should not be employed programming.
I just refactored a game I wrote with Pygame to Vanilla JS and feel so much better about myself for it
Thank god every now and then someone actually does "re-invent the wheel" otherwise they'd all be made of stone.
I recently started working on stuff from scratch for the GBA with Assembly. Putting the final goal as the obvious "maybe eventually a game", but really focusing on just learning each step.
For me the main reason kinda is that I just wouldn't even start if I don't do it the dumb way.
In the end, if I just learned enough about ARM assembly to go back to a project I started and left in a just barely good enough state to be released as an april fools joke, I'm happy. Still wanting to actually finish it everytime someone stumbles on it, but I just know that focusing on it is not the way to finish it.
I needed to hear this. I've always been attracted to these more low level concepts. And I think I got into the habits of only training for my job. But for years I have always wanted to created my own database or key value store. And I think I'm going to attempt this.
I've admittedly had the patronising thought like "just use... etc". But it's usually when someone has promised to deliver something and has me excited about the end result, the "Last night" game being an example. I love messing around with stuff that I'll never finish just to understand how stuff works. It makes me better at using existing tools because I understand the problems they are trying to solve and how to better utilise them.
Thank you for the comment about not finishing. I have spent months doing things the slow, hard way (python, front-end stuff, various small pieces along the way such as understanding images and so forth). Yes, I'm the slowest person in my class by far, and in the end I know my understanding will be deep, rich, and allow my creative thinking to flourish. I can always use shortcuts thoughtfully and strategically in the future. :)
@ThePrimeTime have you ever heard of the open course "The Elements of Computing Systems" also called "From NAND to Tetris" ? Over a decade ago I took it as a class at a community college and it is a primary reason I decided to persue software as a career. There's a video that outlines the course that if you haven't heard of it would be worth while to react to IMO. It's relevant to these interests.
While I generally agree with the sentiment that building something is the best way to learn, I would caution that it's still possible to spend a large amount of time rediscovering something that would have easily been learned by using tools others have already built.
If you set out to build your own game engine with no idea how animations are built with modern tools, you might eventually re-invent keyframes. Did you have a good learning experience discovering why keyframes are useful? Sure. Did you need to take 6 months of your time to trial and error your way to learn this concept? No, using and learning about other animation systems would have taught you that same lesson in a fraction of the time.
Making things from scratch is a skill. Utilizing resources other people have made is also a skill. Both are cool.
Bun actually started as a game, which turned into a game engine, which turned into a runtime, which turned into Bun.
Working on something that genuinely interests you is often the best path to success, even if it's a long and winding road.
It's insane. Could you give me link to this story?
🫓
🫓
This was a conversation I had with Jared at a meetup in SF. He might have also mentioned some of the details during the Q&A section of his talk tho, th-cam.com/video/qpAkYk1LK-U/w-d-xo.html@@DatabaseAdministration
@@caIebthewood I'll watch it. Thank you.
I think steps like writing own framework, writing own cms, writing own api should be mandatory when learning web dev.
It should give deeper understanding which is a better foundation.
I totally agree on this take. I've long said that every game programmer should make their own game engine. Not to use it, necessarily, but just to understand how they work and what kinds of trade offs there are. After that you are more competent on choosing and/or using any game engine there are.
in my current web dev job, I had this project where I had to create an entire lobby system that was used to play really simple party games with your phone. I've also made the 'framework' to code new games. I also created 4 games using my own tool.
In my job interview, I mentioned that I toyed a lot with unity3d and I tried to make my own networking solution.
I really doubt that another software dev at the company would accomplish this in 2 months. The company only hires junior web devs.