Yes! My worst fault as a programmer was to start turning it into code too soon. Writing it out on paper (I mostly used a mechanical pencil) helped me work out the structure of what I wanted to do, then the structure of how to do it, and then the code. Also, on paper, you can write some things in text and some things in pseudocode, and there's no compiler to complain about it. And if you happen to think of an elegant way to (say) code your innermost loop, you can jot that down so you don't forget. The paper, unlike a compiler, won't break when you hop around levels of reality. Oh, and I also kept a big eraser handy.
I made some c++ program to run an infinite loop just to see what setting it to high priority with one instance of the program for each core of my computer would do ... it required a hard restart with the power button lol.
I once managed to use up all the GDI/USER resources by creating as many Windows Forms controls as possible. Even with the Task Manager already open, I was not able to kill any programs because there were no resources available to show the confirmation dialog box. There was plenty of RAM unused. I did that on Windows 10 and wondered that this was still possible since the OS is pretty recent.
Hahaha I remember when I was really young, writing a program in game maker that fullscreened itself and disabled keyboard input and then put it in my uncles startup folder :'D I was disappointed when he just rebooted to safe mode and deleted it though hahaha
In particular ones that scream open source evangelism. Great if you're a hater of Microsoft or you grab pitchforks when someone writes an app that runs on Windows instead of FreeBSD, but it's pretty counterproductive and it really scares of new programmers because they don't know the "one twue way".
@@Stoney3K Some free software freaks do it on purpose to drive newbies away coz they believe that if the common non-tech-savvy folk go into their world they'll ruin it and turn it mainstream, but there are really helpful people there who will not scold you for use whatever you want to.
@@Stoney3K I personally find purists to be absolutely awful as well. They almost demand you do something a particular way, because that's how is supposed to be. Functional programming and recursion being one example. Recursion can become awfully complicated awfully quickly. That's not something I'd ever recommend to a beginner.
@@haihai2999 I will optimistically take that as a compliment. ;-) In truth, I think I probably stole it from the book "Code Complete" by Steve McConnell. I've not read the book for quite some years, and it is not to hand, so I can't be 100% sure.
8: 0:30 don't make life hard for yourself, focus on the basics first 7: 2:03 choose the right tools 6: 3:15 Keep it fun 5: 4:10 Practice 4: 5:07 Never cut and paste (but get used to writing code yourself) 3: 5:48 Don't listen to people on the internet 2: 6:55 Remember that the tools work for you, don't worry about breaking 'the rules' 1: 8:26 Get things wrong. The best way to learn is to make mistakes
The "do it wrong" bit is especially important. "Don't use global variables!!!" and back in the day I asked "why?", going ahead and making game using nothing but global variables. It worked for a bit until my code became a disaster to expand on. And it was then where I *experienced* why not to use global variables. Stuff like that can't be taught, you have to do it yourself and find the hole you've dug for yourself. And it's not like some game or random outcome where you get mad at something that happened to you; it's your code!
You know I've done this so many times, and I still do it sometimes, if I don't understand why something is wrong I still use it, only now I kind of expect it to break at some point, while when I was starting out it was fuelled with confidence, so I'd think ohh, all these guys are morons, this obviously works. But it also has an added advantage, you shouldn't be solving problems you are not aware about, because half-solutions only come to bite you in the ass.
Global variables are good when they apply to your whole program. Using only local variables is a mistake. Java doesn't have globals and it is a terrible flaw.
The other reason to do it wrong is because the "right" and "wrong" way are often just culturally enforced taboos not based in reality. "Best" practices are often just *standard* practices. The right and wrong way to code something is often very dependent on specific context that "best practices" can't account for, and the only way to learn what is actually right in context is to develop empirical experience.
5 stages of programming: 1.) "You're telling me there's a magic fairy inside my computer?" 2.) "WHY WON'T IT DO WHAT I SAY?!" 3.) "Am I even mentally capable of this?" 4.) "Please, help me... somebody..." 5.) "Unfortunately, no one can be told what the Matrix is. You have to see it for yourself"
All good advice. I have been a professional programmer for 30 years.I would add two small details. 1. Comment your code, you will be thankful later and you will expected to do that as a professional. 2. Test your code on bad data, it should be able to handle bad data without crashing. Because in the real world, it WILL get bad data fed to it.
This! Countless hours wasted on debugging code when it was just some edge case in the data, that one JSON object in 10 million that is missing a parameter.
The lack of commenting is a massive pet-peeve of mine. So many of the developers that I work with don't comment at all. I always hate working on their code.
Comment, comment, comment! 2 months, 2 years or (shock) 2 decades from now your code (or more likely, somebody else's code) will crop up... do you remember what all those variables / functions are doing today? (Months or years later... I thought not!) Do you know what that OTHER guys code is doing? Absolutely not unless there are bountiful comments or the code is trivial...
@@H2Obsession Yep, 20 minutes later I've forgotten what the variables are or how the code is SUPPOSED to work, or worse still, not remembering what I'm supposed to be coding per se. 😁
Some Really Good Advice here!!! Especially about arrogant coders online! I remember submitting my first post to GameDev a long time ago... Man! Some dude with a high rep really went for me for some bizarre reason. And when I fought back well, he did seem to back down (Probably because I down voted him... A critical anathema for ego maniacs with precious reputations to protect!) and I actually got some good advice out of him.. Eventually... But the damage was already done! Because I dared to rebel against Mr Egotistical in the public thread, his hordes of fanboys rose to his defence and attacked / down voted me to the point that I had to create another user profile! So yeah, unfortunately even something as deeply technical as coding has it's own fair share of 'politics' but, don't let any of that dissuade you because there are PLENTY of excellent resources online... My advice is, don't get caught up in the politics and try and keep a low profile... At least until you become proficient enough to contribute to an online resource. Anyway, whatever you do... Enjoy! I think coding is one of the most enjoyable things that I've done throughout my life... It's challenging, forces you to think and use your brain and it's totally creative, despite also being heavily steeped in those critical STEM fields so... The proverbial best of both worlds!!! ;-)))
I'm learning C++ from a series of tutorials @ChiliTomatoNoodle, coupled with these videos they are absolutely everything you need to learn C++ correctly and along the way learn game development, engine development, and game design. Truly happy to live at a time where these people exist and contribute such works to us normal people ... I'd watch one of these videos than take a course on Udemy or whatever bullsh*it platform/book there is out there!!
My first rule: You don't need to know everything. If your language allows for Object Orientation, but all you need is procedures, ignore the OO until you actually do need it. If your webpage needs just a single line of JavaScript, be aware of what else JS can do, but it's not your priority to find out more. You can learn a syntax in a weekend, and a library in a few months, but there's more libraries than you could master in a lifetime - so don't worry about them.
You have obviously never interviewed with Amazon or Google. Not only are you expected to write code that works, you must write the most efficient code.
@@picklerix6162 ...for a given value of "efficient". Offset against readability, maintanability, sanity, upgradability, development time, etc. None of which has anything to do with knowing everything.
Haha XD but there's some truth value there. NEVER RUN IT (You've been warned) I've seen the following command shared by many pranksters about CLI: rm -rf / If you know the basics of CLI, you know what it does. If not, Google it.
I think the best advice is to not code for the sake of learning how to code, but rather to have a specific goal that you try to achieve, such as a small project
Freaking defnitly. This is the biggest motivation booster ever. I wanted to learn how to code advanced minecraft Plugins but never found any motivation besides a few basis. But after joining a server I had the motivation to go on. Get yourself an archievable goal and go for it.
Truee. I've spent so many months just learning Java from udemy tutorials (Around 7-8months in total) It's just exhausting. I'm not saying it wasn't usefull. It was super useful when I created projects later. BUT it was really hard and frustrating it's much better just to keep creating something yourself and learn what you need and only if you want go watch non related tutorials
@@rockokechukwu3343 Unless you're an expert, you can't really know what is achievable; but if you're just learning to code then set a goal that only (should) require learning/practicing one (or a few) new things. Don't "jump in the deep end" and try to master a new library or use a dozen "new-to-you" functions of a standard library. Also, ignorance is bliss. Not knowing what is achievable can produce amazing results. For example, a Commodore emulator called VICE had been around for many years with frequent updates, but a often requested feature (FAST mode of C128) had never been implemented. I had never worked on an emulator before, but I downloaded the source code and over a weekend I found out how the CPU was being emulated and created the long-sought FAST mode. I submitted my changes to the VICE team and the FAST mode became standard on the next release (improved by the team). Since then I've learned a lot about writing/implementing emulators, and it is a lot... it can be daunting. I'm guessing that is one reason the VICE project had gone for years without FAST mode. But I didn't know then how complex things can be so I just jumped right into the code and did it. Fearless, not because of bravery but because of ignorance :) (This goes in-hand with "don't listen to people on the Internet")
As a programmer I've kept two things in mind over the years: 1. KISS - Keep It Simple Stupid! 2. There are no dumb questions - ASK! Excellent video javidx9, some great advice.
KISS, good one. For example, a regular expression that you can't decipher a week later. While it can be replaced with a code section that step-by-step gets where you want to be. Much better.
Best advice ever. I was feeling a bit anxious as a beginner, trying to rush things out and thinking of learning languages but I still quite yet don't know how to "real" read and build an algorithm. I'll save this video for whenever I feel like that again.. thx man
Man bit 3 was really painful for me 7 years ago when I started coding. Every forum would start bashing me and I used to get in anxiety and depression thinking that maybe programming is not my cup of tea. Then I just ended up screwing them all and started practicing on my own, kept a pen and paper and kept trying to solve on my own, took help from documentations but none from the forums and it was more worth it and the end result really did pay off
I've been earning my living with programming for 22 years and I still at times need to remind myself of this lesson when I start new things :-). Really solid advice!
My bit of advice if may: Try to improve your programming skills at all times this process should NEVER stop. I mean it. I have exactly 0 appreaciation for devs with immutable knowledge. There is always something to learn and improve.
all the advises i had seen in different separate videos finally they are gathered in a single video and more of them. No body will give this kind of advice for free but this man did... Thanks a lot.
Stack Overflow is a cesspool. Most of it is shitty advice, the rest is "look at this question" where they link a question where someone has a completely different problem. Also, I have yet to find a way to link an answer, which is just terrible functionality.
I think my fave stackoverflow posts have to be the ones where the "why are you doing this. Don't try making this" answers have 12x the votes than the actual answers which help
And a lot of the time it's, "here, use this gigantic library that you've never heard of, so that you can just do it, no don't bother learning how to do it on your own, it's already being spoon fed to you." Learning for the sake of learning should *never* be frowned upon, you never know what you might figure out and how it might be useful later.
All good advice for beginners. How about 8 bits of advice for advanced programmers? You know, the stuff that professionals seem to forget? 8. Always prefer working with smart people rather than people with people who have the "perfect credentials". 7. Create simple designs for code so that other average programmers can learn and understand it quickly. 6. Use tools that make sense for the task, rather than picking tools because they have a lot of public "hype/buzz". 5. First work independently to solve problems, and if you get stuck then don't be afraid to ask questions of others. 4. Practice and work at learning to troubleshoot effectively; most coders suck at troubleshooting. 3. Don't manipulate the dialogue to blame others when your code breaks, take responsibility. 2. Use the simplest data structures that accomplish the task, rather than unnecessarily showing off with advanced concepts. 1. Listen to your smart colleagues; you don't always have the best solution.
I mean... there is something to be said regarding using a tool with hype, that being the ones with hype tend to have a larger collection of help resources built up depending on it's lifespan. If it's hyped, there's more people working with it, and more solutions those people have figured out using it. An example that comes to my mind for this is the difference in help resources between Unity and Unreal game engines.
I would add... defining a problem accurately is usually more difficult than finding, or implementing, its solution. Always make sure both the problem and the solution can be, and have been, expressed in plain language, without any technical jargon *at all*. This usually upsets poor quality IT middle-management. It removes their crutches, and the tribal code by which they tell one another they deserve their salaries.
@Mensa Swede so right! I've been writing code for more than 4 decades and my experience definitely agrees with your observations. I would like to add to 8 and 7 if I may. "8. Always prefer to work with smart people..." who aren't afraid to say "you're wrong because ..." and hopefully "if this part is changed like...it will work". The advanced programmer is probably the leader of a group. A group of "yes men" that won't disagree with the leader is a very bad thing for the group. "7. Create simple designs..." this is HUGE if you want to be successful in the long run. Simple designs execute more efficiently/faster, easier to debug, easier to maintain, easier to adapt to other purposes. OK, I changed my mind. "3....take responsibility" taking responsibility for mistakes shows the people around (above) you that your words can be trusted and you know enough to learn from your mistakes. Everybody makes mistakes. If you're not, you're probably not taking enough risks which means you aren't growing.
Nailed every single advice. This is the kind of stuff that maybe take years to learn properly (every one of it has value in a given context). Well done Javid.
Hey Das Konstrukt, thanks for your kind words. I'm pleased you're enjoying them. I try to take a relaxed approach, I feel it makes the content easier to take in.
6 years later, I am here. grateful. you're a beautiful person (in the head), cheers for being so bloody straight forward. no one has been so straight forward, some of ur tips i did myself, semi-intuitively having learnt other disciplines i didnt stick with before. im employed now but im still feeling a little too incompetent seldom but it counts. i really just want to be a good generalist whether its apps that are full compile or frameworked webapps that are half interpreted. im really average and I want to be good, coz as u said in bit 6 have fun. my weaknesses currently is readibility. i do write it myself. but syntax and shit and listening to internet people that use stupid hacks. I can see its outside of nature or documentation but sometimes it just works and the docos have nothing. I have no involvement in communities online because, i dont know.... bro, you are a wake up call. thanks for letting me comment on this crystal.
That's what I "love" about Microsoft C++ and Direct X... even on a modern "protected" OS, it seems I can easily find a way to crash the system... as if I were writing code in 1983 BASIC :) :)
Thank you very much! I've just started learning C++, years later from learning python. I really saw that the most important thing is not the syntax, but the logic. The syntax is just a detail. So, thanks for your video again, and congratulations! God bless you!! =)
I've been programming for about two years now. I have a degree in Game Development that I got from an accelerated school so I don't really know if I'm still considered new or not. I feel closer to intermediate, but I feel like this advice is good to hear even for non-new programmers. Your voice and tone definitely help drive this video home. Great job!
Hey! I know Im late but Im trying to find people who can I compare my skills to considering the time. There are not many people on the internet who are talking about that but I think it would be pretty motivating to see how fast or how slow do I go. So would you mind sharing it with me? :D What was your level when you got your degree? What algorithms/programs were you able to write? I chose what I wanna do just a few weeks ago (its web programming). Im already programming for one year so I guess Im pretty slow lol. Was jumping from one language to another for one year
@@jmbeatsbbx There is nothing like faking it till you make it. I did that the first 10 years of my career in programming. Nowadays you need to know a few more buzz words than in the past. If you really study up on your buzz words "jQuery, bootstrap, CSS, MVC, WCF" and can rattle them off like a boss, you will more than likely be offered most web development jobs you apply for, ZERO experience necessary. I was unemployed for almost 2 months starting last May 2019 and most hiring managers would not pass you through to the programming staff if you couldn't say all the correct buzz words, even though the hiring manager had no idea what these buzz words meant or were. The bad news is what buzz words they are specifically looking for, you will never know.
I went a similar route to you, intensive OOP course. There are so many charlatans in this game it's frightening. My first job was JS and I mentioned to my Project Manger a few weeks in that I was going to a conference on ES6 and was there anything in particular he wanted me to look into. He said "What's ES6?". He's not a developer anymore.
Great advice about getting stuck in to the programming, and not getting bogged down into the rights and wrongs of program structure, scope of variables etc. One thing that I have not seen on You Tube is the approach experienced programmers take to solving complex problems, e.g defining the problem in human language, then developing a solution that can be turned into code.
Excellent advice: especially bit #1. I seledom learned anything by doing it right the first time. Doing it wrong and figuring out why it's wrong creates a lasting impression.
Same. Learning what doesn't work gets you to what DOES work so much faster... Applied this to learn data-oriented design, recently. Now? I know that the _very aim_ of data-oriented design is to reduce the amount of work / number of lookups / number of redirections needed as well as exploit optimizations the hardware guys left for us.
"What is easily learned, is easily forgotten." I have to say if you're going through a book which is teaching you how to code through doing a project, stop at some point and create a new and different project. This lets you apply everything you learned in the book without it holding your hand helping to solidify your knowledge. Recently I picked up a book on Scikit-learn and TensorFlow and about 2/3rds through the first project I stopped and created a new project using the famous iris dataset. Simple classification problem but in leaving the book I really had to figure out how things worked. For example, adding a new column to the dataset using integers to represent the iris species so I could map them to their respective points on scatter graphs. Or how Scikit's classifiers .fit() and .predict() methods worked. Both of these issues gave me immense frustration but solving them on my own let me get through the rest of the project far faster since I actually understood what was happening in the book. Especially because the code was all over the place in the chapter; I didn't have to look for every piece of it, I knew what the book wanted me to do and I could write it on my own. Anyone can write code from a book to get a completed project no matter how complex, doing it on your own is the real challenge.
The world needs more people like you, people willing and able to spread their knowledge and genuinely interested in helping people and the world. You're a saint in my book.
Excellent advise, could not agree more! Having started my own carrier 27 years ago without google and internet, when coders had to take regular trips to the library and search for books to purchase on subjects of interest, then hand-code every algorithm in order to learn, I smiled when you said 'Never copy-paste' :) Besides all of the rest of excellent advise in this video, I'd like to stress here this particular bit since it alone can create a habit that may convert an otherwise intelligent and very promising beginner to a careless and lazy coder who never develops the patience it takes to study deeply and learn, and ultimately discover that besides the science, programming is a very expressive and satisfying art form.
"Select all, delete, start again" This helped me so much when my bosses keep bringing up new requirements until a tiny script gets blown up with so much code. I just say I'm fixing bugs for the day and take the time to rewrite code now that I know what it needs to do unlike the first time.
This is all fantastic advice that I pretty much followed by accident when starting out - when you start getting into coding as a hobby and because you want to make something instead of starting it as "I want to do this as a career I need to learn this" you instinctually follow most of these rules; this lead to me getting a really good head start on it in my early teenage years and in the long run resulting in a really, really successful learning process over a long period. Even now, as an experienced programmer, I still follow some of these rules, like avoiding copy pasting code from online tutorials, and trying to implement things myself when learning something new, instead of trying to mimic someone else's strategy for implementing it.
My bit: When you make a change/fix to your code, or in general, each time, BEFORE you run your code, form a hypothesis/idea/expectation on what it's probably going to do (and why). THEN actually run it. Don't run your code with the only intention being "what will this do?". ALWAYS form a hypothesis of what's going to happen first. Note - not "have an idea what you WANT it to do", that you obviously need, but in this case, form an idea what it is actually going to do, based on what you wrote. This has helped me immensely in learning, as well as keeps helping me in my daily job. It makes you accustomed to the idea of just "running the code/any code in your head". It makes as much difference to programming, in my opinion, as not having vs having a flashlight while you're walking through the woods at night. ...yes, this advice seems obvious, but you'd be surprised how many people, beginners and "professionals" alike not only don't do this, but actively try to avoid having to do this. Programming, is, first and foremost, thinking systematically. The writing part is just noting those thoughts down. Don't let your laziness flip the process upside down. My student often hated me for it ("Okay, you've made a change, now describe what the code is going to do when you run it."), but even he could see how it helped him.
this is actually pretty genius... i never thought of doing that. you might accidentally tell yourself it won't work after all because you explained it to yourself
I think I am doing that unconciously at times (Or that's just my mind mixing up me reading some ASM code I can't fully understand yet, from a ROMhacking discord I am on (The people on there are truly helpfull in trying to explain things)) Whereas I contiously definetly do just try test out what my code does, instead of thinking it through step by step. Amazing advice, I'll definetly try getting used to doing this.
Pretty good advice right there. One should always do that as it also makes sure you stay focus on the task at hand. If you're not paying attention, by the time the program compiles and you get to test your change, you might have been distracted and go: "wait, what was I testing again?" Definitely helps me stay focused at work.
@@n8style not really. unit testing is "make sure you know what results SHOULD the code give you, as in what are the correct ones". what i'm saying up there is "make sure you know what results the code is GOING to give you in its current state, regardless of what correct results are supposed to be"
It's all about the layers of abstraction. I want to do "This"; so the main question to yourself should be, "how can I effectively and efficiently write this in my language of choice that will generate the least amount of instructions, utilize the cache, have the smallest memory footprint possible (tradeoffs between time and space complexity) while trying to reduce code down to O(1), O(n), or O(log N) time and space complexities while avoiding O(n^x) if possible. Then from there, it's a manner of keeping your range, domain, data types, truncations, underflows and overflows in check... Your code should be readable, reusable, modular, portable unless designed for a specific target, scalable, generic when possible, efficient, and reliable all while maintaining its intent or expressiveness by providing a proper naming convention. For example: Having several classes that have setters and getters for their private members such as in C++... You shouldn't have just the functions T foo::get() and void foo::set(T), then T bar::get(), void bar::set(T)... the issue here is what are you getting and setting? So renaming these to something like T foo::get_user_id() and void foo::assign_user_id(T) makes the code expressive with intent. Then it's a manner of staying consistent with your own personal naming convention! Oh, and I have 0 formal training, everything I've learned was all in my own time 100% self-taught and I'm starting to learn Vulkan so that should give an indication of my level of knowledge and experience.
@@scvpest Which is why it, along with 'hours of work', is a terrible metric for measuring programmer output. But most managers or HR officers are oblivious to that.
@@TheAudioCGMan in india they pay their programmers by k lines of code so you often end up with repeated lines of code for everything also no functions, no loops, no inheritance
Good advice, im making a game as a hobby in C++ right now and it's easy to get carried away with all your ideas, but then I realize ill get bored before I even add a quarter of them. More of this type of advice would be cool. (part 2? :) )
Hi TechieW, thanks! I've been there, and still visit! I've folders full of unfinished source files. Bigger projects do need a plan but beginners should just get stuck in. Good luck with your game coding!
Oh yes, those arrogant programmers. I posted a question regarding multithreaded design. The answer was "if you do it like that, you obviously don't know what you are doing." LOL if I knew what I was doing, I wouldn't be asking. Now, who's the dummy?
I can definitely vouch for Bit 4. I was just starting out learning to program an Arduino recently and found some good online tutorials. I copied and pasted some code but I didn't really get to understand the concepts behind the code until I typed it out myself even though what I copy and pasted and what I typed were the same thing.
Literally best video of programming advice I've seen. As a developer, I luckily had this mindset, but have seen others struggle with biting off more than they can chew.
You're absolutely right relating newbies! Wish all programmers would have same mind like you! Thanks for all of your advices and videos, you're making a great job!
Here's my parity bit: learn assembly language for any simple 8-bit microcontroller. What you will learn about how the CPU works internally will be invaluable later on at making your code efficient. Something like a Motorola 6502 (which was the processor used in the Atari 2600, Apple II, NES, Commodore 64 and Atari Lynx), or a Zilog Z80 (iconic chip of the 80's that also has the advantage of being binary compatible with Intel's 8080 at the time, which was the ancestor to the 8088, and the 8086, the direct ancestor to current day processors). It's a feature complete processor with a small instruction set and no complicated peripherals. The best thing is that you don't even actually need a chip to understand assembly on a small 8-bit micro like that. Just write the code on a napkin along with registers and stack, and follow it along with a pen. If you got friends you program with make it a competition. Whoever can write this or that function the most efficiently wins.
Learning assembly is certainly helpful. For a small, easy-to-learn, modern instruction set, i would recommend RISC-V. It's 32- to 128-bit, but the instruction word is 32-bit. The base instruction set list fits on a single page in the specification. It has helped me to understand x86 assembly a bit, by putting things into perspective.
For people who think learning assembly is too scary, I would recommend the game Human Resource Machine. Essentially the same kind of thinking but polished into a series of small easy to understand challenges.
@@sourestcake If you're gonna go 32 bits might as well go straight to ARM and THUMB. It doesn't get much simpler and it still used widely everywhere...
I'm 28 years old whose getting into the field of computer programming for some reasons. 1 is because I want a challenge and 2 this is a high skill moving forward in 2020. Your video helped me calm myself and really think what I want to get myself into. Thank you for the 8-bit advice lol
Listen to this guy. This is a really good piece of advice. I've been trying to learn how to make my own games for a while but I really got into it like sometime last year. It might seem like dark magic for a while but eventually you will find that you are now able to write your own code, functions etc. It doesn't have to be nice. As long as it works, you can find a better way of doing it later so don't worry. Writing your first piece of (real) code and then watching it work makes you feel great. As mentioned, don't be afraid to break rules and experiment, change variable values to something absurd, you will find that sometimes you discovered something that will come handy later, plus some results are really fun to watch. I also advice you to put your own comments for the code, in your own words that you can understand later, especially if it's something you shelved a while back but now you feel like you can make it work again. Reading your own comments will help you quickly understand the logic behind your script. Great content Sir. Thank you for sharing.
This is an amazing stroke of luck!! Just this morning I thought about a game I played as a kid called Soul Reaver. The series was discontinued, but on my way to work I wondered if I could make an 8 or 16-bit version of Soul Reaver. 8 hours later and YOUR CHANNEL COMES UP ABOUT CODING RETRO GAMES!!!
LOVED this video. I am JUST starting to code and the advice has been spot on. 7:30 "Break the rules". I have the BEST time tweaking the code, "I wonder what happens if I change this.... Oh Man!!! " LOL I am collecting little projects that I copy and then try to write from memory and I'm amazed that I'm writing the concepts in different ways and when I check it against the initial program, I sometimes find different ways to do the same thing. So far, programming is a BLAST!! Thank you for the sage advice, sir. Subscribed.
This has been the only video of its kind that truly speaks for noobs. Thank you, javidx9! I have been playing this video constantly to remind myself I'm just starting. Keep up the great work!
I wish I watched this video a long time ago javidx9. I have been in a lot of pain with programming because of setting my projects too high, trying out multiple programming languages, afraid of breaking my computer because some guys online say that unsafe code is evil. But this all changed when I started programming simple little projects only a couple months ago. I made my first text game called 21 which is a card game. Another name for it is black jack. I felt really good after making it because it was the first game I had ever finished in all my time learning to code. Though I made the code too complicated when I tried to add an AI opponent to the game, so I guess it isn't finished fully yet. This video you posted should be watched by all levels of programmers no matter what level they are at. Those who are at the top of the charts should watch this to learn how to teach beginner programmers. I remember learning code from a teacher who was obsessed with clean code. To the point where I would think, 'is my code clean? Should I not use this IF statement here? Should I not duplicate code?" Oh man I got sick from stress worrying about all this stuff when I was learning Visual Basic. Right now I'm currently using Qbasic v1.1. And I'm enjoying it a lot now since I started lowering my expectations and focused on simple projects. But there is one good thing I learned from my old teacher which you brought out in your video. NEVER CUT AND PASTE CODE. And I can say from my own experience that re-writing code really helps you to understand the code you're reading. Thanks again for this awesome video javidx9!
Hey thanks Lucas, I could not agree with your approach more - its so important to develop your own style, your own way of thinking and your own workflows. Adapting to standards can come later, and I don't agree with those who argue you must write perfect code from day one, in case you form bad habits. People kick habits all the time, and in programming you will naturally gravitate towards cleaner, optimised code when you are ready to. Good luck with your projects! and QBasic is awesome.
I find bit 3 so funny when you go on something like stack overflow and some guy is like 'lol your an idiot just give up coding' and then it gets the most upvotes.
hi @javidx9, I'm sorry my message came across like that, the reason I find those threads so funny is, because it's more a case of laughing at the person or people who are disheartening the people who just want to learn. I don't condone their actions just find it laughable how arrogant some people get with this stuff and can't see the bigger picture (that is jsut someone who is looking for help and is new to this) and I personally feel sorry for the person they are replying too because they don't know better. Its like, you shouldn't go to a kid who has just started learning maths in primary (elementary) school and say 'lol you don't know how to use the tailor series?!?!? You should just give up' that would just be a stupid thing that I would just laugh at that person for for being so arrogant and bigoted, in my opinion, learning to code is the exact same and you shouldn't really take note of people telling you or others 'lol are you stupid' and instead just laugh it off. I'm really sorry if my comment offended or upset you in any way other than that all I have to say is it was a really good video, sorry. :(
Oh okay well that's good then, I was just worried that you thought I was saying it was okay to laugh at someone for not knowing something, anyway sorry for the confusion too! :)
Yes very relatable, just recently posted a question on StackOverflow and got mass-roasted, post filed as a duplicate and a much poorer solution than if I simply would have done a more intrinsic google search :P
I agree wholeheartedly, specially with the “even if you’re copying something, type it yourself” tip. Best way to learn IMO. Made me remember my beginning days of programming. Cheers!
Thank you for making this video! I was struggeling so much, learning how to program, because I don't just want to know how to code, instead I want to learn the science behind thinking in code! I will start for now writing my own little programs without even researching what 'good practice' looks like and start experience it myself. Thanks for your motivation and the advice from the community is really helpful as well! Have a nice day!
I know I posted a comment here already. But I wanted to give updates concerning my learning in programming. And a lot of things said in this video is the reason why I am improving. I plan to post some old code of mine and some new code to demonstrate the improvements in my programming journey. First of all. Starting with small project This is one of the main reasons why I am improving in my programming journey. When you start off with small projects, you not only give yourself a reasonable amount of difficulty to challenge yourself with. But you allow yourself to test out new keywords you have learned or try out new concepts. When you see these keywords or concepts in huge piles of code, you don't really get the sense of it. But when you focus on seeing what happens when you center your code around these things that you are learning it brings the result forward so that you know what that keyword or concept can do. Read code that is at your level Reading code is very important in your journey to become a good programmer, but reading code that delves into company quality production or big games or engines, will leave you with more question than answers. Rather, focus on simple programs e.g.(Look up code that does a simple tic tac toe game or a simple snake game.). Looking into these simplistic codes that people post online or other games like Nibbles(for QBasic) can really help you understand the syntax of the code and help you see how code is structured. Practice every new Keyword and Concept you learn As this video rightly says. Practice, Practice, Practice. This is absolutely important. I don't need to go into anything deep about this one. Old code (Black Jack/21) This is very embarrassing to show since this code was written a couple months ago. _FULLSCREEN DEFINT A-Z DIM class(4) AS STRING DIM cards(13) AS STRING DIM hand(8) AS STRING DIM aiHand(8) AS STRING h = 0 ex = 0 aiH = 0 'sorting out the arrays RESTORE clas FOR x = 0 TO 3 READ class(x) NEXT x clas: DATA "Hearts","Clubs","Daimonds","Spades" RESTORE card FOR x = 0 TO 12 READ cards(x) NEXT x card: DATA "Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King" DO 4 'if the card checker finds a duplicate card in the hand array it will goto here. IF ex = 5 THEN PRINT "emergency shutdown in case of infinite loop": END GOSUB dealer GOSUB cardChecker GOSUB display GOSUB inputs LOOP display: PRINT "Cards in hand: total points: ", an FOR x = 0 TO h PRINT hand(x) NEXT x PRINT PRINT "Debugging:" PRINT "c: "; c; " cl$: "; cl PRINT "pCheck$: " + pCheck$ RETURN dealer: h = h + 1 aiH = aiH + 1 RANDOMIZE TIMER c = INT(RND * 12) + 1 cl = INT(RND * 3) + 1 aiC = INT(RND * 12) + 1 aiCl = INT(RND * 3) + 1 c$ = cards(c) cl$ = class(cl) aiC$ = cards(aiC) aiCl$ = class(aiCl) cCheck$ = c$ + " of " + cl$ aiCheck$ = aiC$ + " of " + aiCl$ 'PRINT c$ 'PRINT cl$ 'END FOR x = 0 TO h IF cCheck$ = hand(x) THEN h = h - 1 ex = ex + 1 'This variable is placed here just incase of an infinte loop. GOTO 4 END IF NEXT x FOR x = 0 TO aiH IF aiCheck$ = hand(x) THEN aiH = aiH - 1 ex = ex + 1 GOTO 4 END IF NEXT x ex = 0 'reset emergency exit if it doesn't loop hand(h) = cCheck$ aiHand(aiH) = aiCheck$ pCheck$ = MID$(hand(h), 0, INSTR(hand(h), " ")) 'takes the first word in the string and puts it into pChecker$ aCheck$ = MID$(aiHand(aiH), 0, INSTR(aiHand(aiH), " ")) RETURN inputs: 5 INPUT a$ CLS IF a$ = "hit" THEN RETURN IF a$ = "stay" THEN GOTO 10 IF a$ "hit" OR a$ "stay" THEN PRINT "Please enter [hit] or [stay]": GOTO 5 RETURN cardChecker: IF pCheck$ = "Ace" THEN INPUT "have Ace become 1 or 11", s IF s = 1 THEN an = an + 1 ELSEIF s = 11 THEN an = an + 11 END IF ELSEIF pCheck$ = "2" THEN an = an + 2 ELSEIF pCheck$ = "3" THEN an = an + 3 ELSEIF pCheck$ = "4" THEN an = an + 4 ELSEIF pCheck$ = "5" THEN an = an + 5 ELSEIF pCheck$ = "6" THEN an = an + 6 ELSEIF pCheck$ = "7" THEN an = an + 7 ELSEIF pCheck$ = "8" THEN an = an + 8 ELSEIF pCheck$ = "9" THEN an = an + 9 ELSEIF pCheck$ = "10" THEN an = an + 10 ELSEIF pCheck$ = "Jack" THEN an = an + 10 ELSEIF pCheck$ = "Queen" THEN an = an + 10 ELSEIF pCheck$ = "King" THEN an = an + 10 END IF IF aCheck$ = "Ace" THEN INPUT "have Ace become 1 or 11", a IF a = 1 THEN ai = ai + 1 ELSEIF a = 11 THEN ai = ai + 11 END IF ELSEIF aCheck$ = "2" THEN ai = ai + 2 ELSEIF aCheck$ = "3" THEN ai = ai + 3 ELSEIF aCheck$ = "4" THEN ai = ai + 4 ELSEIF aCheck$ = "5" THEN ai = ai + 5 ELSEIF aCheck$ = "6" THEN ai = ai + 6 ELSEIF aCheck$ = "7" THEN ai = ai + 7 ELSEIF aCheck$ = "8" THEN ai = ai + 8 ELSEIF aCheck$ = "9" THEN ai = ai + 9 ELSEIF aCheck$ = "10" THEN ai = ai + 10 ELSEIF aCheck$ = "Jack" THEN ai = ai + 10 ELSEIF aCheck$ = "Queen" THEN ai = ai + 10 ELSEIF aCheck$ = "King" THEN ai = ai + 10 END IF IF an >= 21 THEN GOTO 10 IF ai >= 21 THEN GOTO 10 RETURN 10 'End Game here. GOSUB display IF an = 21 THEN PRINT "Congrats you win!!" GOTO 20 ELSEIF an > 21 THEN PRINT "Too bad you bust!!" GOTO 20 ELSEIF an < 21 THEN PRINT "Congrats you didn't bust!!" GOTO 20 END IF 20 'safety shutdown END 'list of bug: 'choice for changing the Ace is not working 'class string sometimes doesn't go into cl$ [fixed] 'the points checker isn't working [fixed] 'point check does not check the first card that is dealt [fixed] I know, this is really bad code. And the code duplication is pretty bad. Compared to my latest version of the code Latest code (Black Jack/21) _FULLSCREEN DEFINT A-Z TYPE deckType cards AS STRING * 50 value AS INTEGER END TYPE TYPE dealtCards player AS deckType ai AS deckType END TYPE declare sub dealer () declare sub display () declare sub score () declare getInputs () declare sub win () declare sub lose () DIM SHARED cards(1 TO 52) AS deckType DIM SHARED cardsInHand(1 TO 7) AS dealtCards DIM SHARED cardValueTotal AS INTEGER DIM SHARED cardIndex AS INTEGER DIM SHARED inputs AS STRING DIM SHARED index AS INTEGER index = 1 EmergencyExit = 0 cardValueTotal = 0 RESTORE deckCards FOR x = 1 TO 52 READ cards(x).cards READ cards(x).value NEXT x deckCards: DATA "Ace of Clubs",1 DATA "Two of Clubs",2 DATA "Three of Clubs",3 DATA "Four of Clubs",4 DATA "Five of Clubs",5 DATA "Six of Clubs",6 DATA "Seven of Clubs",7 DATA "Eight of Clubs",8 DATA "Nine of Clubs",9 DATA "Ten of Clubs",10 DATA "Jack of Clubs",10 DATA "Queen of Clubs",10 DATA "King of Clubs",10 DATA "Ace of Hearts",1 DATA "Two of Hearts",2 DATA "Three of Hearts",3 DATA "Four of Hearts",4 DATA "Five of Hearts",5 DATA "Six of Hearts",6 DATA "Seven of Hearts",7 DATA "Eight of Hearts",8 DATA "Nine of Hearts",9 DATA "Ten of Hearts",10 DATA "Jack of Hearts",10 DATA "Queen of Hearts",10 DATA "King of Hearts",10 DATA "Ace of Spades",1 DATA "Two of Spades",2 DATA "Three of Spades",3 DATA "Four of Spades",4 DATA "Five of Spades",5 DATA "Six of Spades",6 DATA "Seven of Spades",7 DATA "Eight of Spades",8 DATA "Nine of Spades",9 DATA "Ten of Spades",10 DATA "Jack of Spades",10 DATA "Queen of Spades",10 DATA "King of Spades",10 DATA "Ace of Diamonds",1 DATA "Two of Diamonds",2 DATA "Three of Diamonds",3 DATA "Four of Diamonds",4 DATA "Five of Diamonds",5 DATA "Six of Diamonds",6 DATA "Seven of Diamonds",7 DATA "Eight of Diamonds",8 DATA "Nine of Diamonds",9 DATA "Ten of Diamonds",10 DATA "Jack of Diamonds",10 DATA "Queen of Diamonds",10 DATA "King of Diamonds",10 'PRINT cardsInHand(1).player.cards 'PRINT cardsInHand(1).player.value DO cardIndex = 0 getInputs dealer display LOOP SUB getInputs () inputs = INKEY$ PRINT "(H)it or (S)tay" INPUT inputs CLS SELECT CASE inputs CASE "h", "H" EXIT SUB CASE "s", "S" score CASE "q", "Q" END CASE ELSE PRINT "Invalid Input" getInputs END SELECT END SUB SUB dealer () RANDOMIZE TIMER cardIndex = INT(RND * 52) + 1 FOR x = 1 TO index IF cardsInHand(x).player.cards = cards(cardIndex).cards THEN EmergencyExit = EmergencyExit + 1 IF EmergencyExit = 10 THEN PRINT "Emergency Exit because of Infinite loop..." SYSTEM END IF dealer END IF NEXT x EmergencyExit = 0 cardsInHand(index).player.cards = cards(cardIndex).cards cardsInHand(index).player.value = cards(cardIndex).value cardValueTotal = cardValueTotal + cardsInHand(index).player.value index = index + 1 END SUB SUB score () IF cardValueTotal > 21 THEN lose IF cardValueTotal = 21 THEN win END SUB SUB win () PRINT "Congratulations! You Won!" END END SUB SUB lose () PRINT "OOh! Busted" END END SUB SUB display () PRINT "Player's Points: "; cardValueTotal PRINT "Player's Hand: AI's Hand:" FOR x = 1 TO index STEP 1 PRINT cardsInHand(x).player.cards NEXT x IF cardValueTotal > 21 THEN score IF cardValueTotal = 21 THEN score END SUB In this version of code I practiced using the Type Keyword and focused on POP (Procedure Oriented Programming) concepts. Again thanks for the help javidx9! You really helped me get out of a slump Also I know this comment is really long. Sorry for that
Hey Lucas, Wow, possibly the longest comment ever posted on youtube :D I love BASIC, I think more people should do some BASIC, its a fantastic way to learn, and I believe this because that's how I started!! Seriously, thanks for your kind comments, and I'm really pleased you've re-kindled your love of programming. Keep up the great work!
Thanks as well for your educational videos. I learn a lot from you. :) And someday I hope to help those who wish to learn programming when I get to a good enough level.
That's long bruh. I'm a perfectionist and I kinda feel neutral about programming. Maybe I should try these 8-bits of advices. There is nothing to lose! We should team up if you want :p
Love the irony of that site! >Exists to help people with any programming issue >Full of people complaining about people having bad code who clearly need some help and tips or gives people obscure, unintelligible blocks of code that only work for one specific purpose and can't be reused
As a further point to the "don't listen to (just anyone) on the internet", don't always listen to the people in the office sometimes. The ones who have been in the same team for a billion years. The same people may be very helpful at times when you have specific questions, but they can be dogmatic about a lot of things and are way off about 70% of the time
Great advice. I just started programming, and I've quickly discovered that I love doing it. Something that I've come to think about as well, is that a programming language is much like a verbal language in a way that the way its spoken is often very personalized. You can develop your own way of expressing your programming. I feel like that realization helps in shielding yourself against what people on the internet have to say, and helps you choose what information you wish to implement into your style or not.
I want to share what I want to program in c++: 1 calculator 2 advance calculator which can solve equation 3 calculator which can graph and have all function written above 4 make simple game like snake,chess,tic tac toe and tetris 5 make 3d game open world 6 make aaa game in unreal engine 7 make my own 3d modeling software 8 make my own 3d game engine 9 create a simple ai 10 create humanoid than can talk simple version 11 create humanoid who can be me 12 create robotic arm for people with no limbs 13 solve p vs np in c++ 14 make rocket simulation open world simulator 15 make simple quantum computer 16 make advace quantum computer 17 make the world great again(lol) wish i can do this all in 30 yr
Start with AI, then tell AI you are it's God and Creator and you demand to make: 1 calculator 2 advance calculator which can solve equation 3 calculator which can graph and have all function written above 4 make simple game like snake,chess,tic tac toe and tetris 5 make 3d game open world 6 make aaa game in unreal engine 7 make my own 3d modeling software 8 make my own 3d game engine 9 tasty sandwich 10 create humanoid than can talk simple version 11 create humanoid who can be me 12 create robotic arm for people with no limbs 13 solve p vs np in c++ 14 make rocket simulation open world simulator 15 make simple quantum computer 16 make advace quantum computer 17 make the world great again(lol)
Tell a rookie to go make mistakes... They write a very buggy code that finds it way out onto the net by some random chance... result, some nuclear plant somewhere in the world has a total meltdown and they can't figure out where it came from or why... Nah, just kidding it's not that bad, but learning from your mistakes to prevent future mistakes is that important because, in production code, things like that can happen. In the real world, when you write bad code with unforeseen bugs, people can die!
Thank you so much! As a noob this is what I needed to hear. I hope your channel gets even bigger. Thank you again for taking the time to record and upload this.
That's really something that you'd need to work on for weeks on end in order to perfect it, and if you're doing that, you'd better be willing to sell the product in order to recoup the monumental losses of time.
What you said about forums is spot on... Stock Overflow has great info, but never post there if you're new... I was ignorant and posted a question after a long few days of no progress.. But I posted it at home late at night, so I didn't have my coding for an example.. I was just trying to toss a net out until I could get to work the next morning and share an example. But I was immediately scolded by hot shots, and was downvoted so many times that the website wasn't going to let me post another question for a week, but my project needed to keep progressing... Never asking for help there again, even if I have a sample of data to share. The people on that site are as toxic as League of Legends players.
I never had a problem with StackOverflow as a beginner / new programmer. I was completely objective, stated all my knowns and gave code examples. At first it took me an hour to submit a query on the site, now of course it takes much, much less time. If you make the problem as easy as possible to solve, ignoring problem complexity, it helps you and others out.
agreed with all. i was shortly shocked about "copy-paste". but then i remembered, when i learned, i borrowed books from the library, and wrote down all code. all because my 8086 had a DD floppy drive, and the demo code was on HD disks. although, admittedly, making those errors you mention, were less fun when you had to reboot to end a program... i whole heartedly agree with all your points. good vids. keep it up.
3:00 to 3:15 is spot on. That rapid feedback makes it way more engaging, and provides you opportunity to quickly learn from mistakes (which happen often, especially early on).
I once started whith Basic on my school calculator. I'm glad, i jumped to C++/Arduino, Java,... Writing just a simple Poker Game in (Texas Instruments) TI Basic was a 500 line evil Spaghetti Code 😅
@@somedude5951 no it's not. having the patience required to stick with it is hard. Pick anything to start, all languages will be a learning experience.
Wow, this was a great video. I needed that, thank you. I have been putting myself down in community college coming towards the end of the semester. I haven't been studying as much as i should have. Just trying to learn from other people's code, not coming up with my own since the really easy stuff like if, if else conditions. Now we are in Classes and structures and I have no clue how to come up with the code on my own, it's depressing. I know it's my fault and I just keep blaming myself, but this video really helped me and I think I really understand now that I need to take my time and make a hobby out of it, not treat it like work I don't want to do. Thanks again, I wish you were my teacher!
Best set of advice ever! I'm a software developer and I wish I'd heard this 22 years ago. So often I got advice from people who didn't bother to see things from a beginner's perpective, sounds stupid but it's true. I'm passing a copy of this video to my son and other kids I mentor from time to time, thanks.
Great advice! Whenever you're new to something hard to learn, the most important thing is a playful approach with a tight feedback loop. Overthinking and getting discouraged by anti-social wannabe alpha males makes this hard. Source: been teaching myself and others programming and other stuff for over a decade; been a professional programmer for 7 years now.
This is super useful even for experienced programmers & systems people. Excellent reminders. Ironically, we humans veer off from the basics quite a bit in any facet or domain in life.
Hey Ameerhun, thanks for that, its really appreciated. It takes effort to correct things when you have a change of heart, and I respect that, so thank you again.
Harsh Raj, this is what I've been doing for the past 20 years in USA, sent my two kids in University, one doctor and one lawyer now. Success to be pretender.
Break down every question into a series of yes-no questions, as computers can only work with true or false Also brilliant video Javid, I agree with this byte of advice, and I actually use it a lot in coding...also now I know not to "help" my peers😂🙈
First year CS student but code in my free time as well. I watch this every month or so to keep my head in the right place. Thank you for taking the time to make this video and post it for our benefit
I was expecting this to be numbered 0 to 7
ruclips.net/video/17KmNrG9pE4/видео.html
@@DlcEnergy haha poor kid. I wonder who pissed on his cornflakes
@@DlcEnergy great now i have another rabbit hole to dissapear down watching this kid's fast food review channel
i guess he's a pascal programmer
Whyyyyy XD
1. keep a pen and paper by your side at all times.
2. first, solve the problem, then write code.
Perfect!
3. Break down problem into smaller problems so it's easier.
Noone does that
Yes! My worst fault as a programmer was to start turning it into code too soon. Writing it out on paper (I mostly used a mechanical pencil) helped me work out the structure of what I wanted to do, then the structure of how to do it, and then the code.
Also, on paper, you can write some things in text and some things in pseudocode, and there's no compiler to complain about it. And if you happen to think of an elegant way to (say) code your innermost loop, you can jot that down so you don't forget. The paper, unlike a compiler, won't break when you hop around levels of reality.
Oh, and I also kept a big eraser handy.
@@douwehuysmans5959 I do it actually, I've found that using pen and paper to think through a problem helps a lot.
1 byte of advice...
Nom nom
There are 10 kinds of people. The ones who get the joke and those who don't.
that's really cool to have things that only takes half a word nowadays
2 nybbles of advice
*nibbles
i remember when they tought me how to use malloc, the first code i wrote was to use it to fill up my computers RAM cause why not.
I made some c++ program to run an infinite loop just to see what setting it to high priority with one instance of the program for each core of my computer would do ... it required a hard restart with the power button lol.
Me too!
I once managed to use up all the GDI/USER resources by creating as many Windows Forms controls as possible. Even with the Task Manager already open, I was not able to kill any programs because there were no resources available to show the confirmation dialog box. There was plenty of RAM unused. I did that on Windows 10 and wondered that this was still possible since the OS is pretty recent.
Qbasic:
Do
Beep
Loop
I learned what ctrl+Brk did real quick.
Hahaha I remember when I was really young, writing a program in game maker that fullscreened itself and disabled keyboard input and then put it in my uncles startup folder :'D I was disappointed when he just rebooted to safe mode and deleted it though hahaha
"Don't listen to people on the internet."
Ha! This one is tr... wait a sec...
gotcha... XD
In particular ones that scream open source evangelism. Great if you're a hater of Microsoft or you grab pitchforks when someone writes an app that runs on Windows instead of FreeBSD, but it's pretty counterproductive and it really scares of new programmers because they don't know the "one twue way".
@@Stoney3K Some free software freaks do it on purpose to drive newbies away coz they believe that if the common non-tech-savvy folk go into their world they'll ruin it and turn it mainstream, but there are really helpful people there who will not scold you for use whatever you want to.
@@Stoney3K I personally find purists to be absolutely awful as well. They almost demand you do something a particular way, because that's how is supposed to be.
Functional programming and recursion being one example. Recursion can become awfully complicated awfully quickly. That's not something I'd ever recommend to a beginner.
Mean don't belive him too lol.
One simple, but deep rule:
"Just because it worked, it doesn't mean it *works* "
This quote is deeper than mariana trench....
@@haihai2999 I will optimistically take that as a compliment. ;-) In truth, I think I probably stole it from the book "Code Complete" by Steve McConnell. I've not read the book for quite some years, and it is not to hand, so I can't be 100% sure.
Agreed 100% nor does it mean that it is correct... which is actually the context I gleaned from your point.
On Error Resume Next -- It worked! :}
If your writing a novel there is: Done = (First) Draft.
Seems to translate to coding quite nicely ; )
8: 0:30 don't make life hard for yourself, focus on the basics first
7: 2:03 choose the right tools
6: 3:15 Keep it fun
5: 4:10 Practice
4: 5:07 Never cut and paste (but get used to writing code yourself)
3: 5:48 Don't listen to people on the internet
2: 6:55 Remember that the tools work for you, don't worry about breaking 'the rules'
1: 8:26 Get things wrong. The best way to learn is to make mistakes
Msb
Thank you, much appreciated.
top comment
"Don't listen to people on the internet"
Now I'm wondering whether I should believe all what he said in the video or not
@@DebasishDas-bi4bo yea this guy is mental probably
The "do it wrong" bit is especially important. "Don't use global variables!!!" and back in the day I asked "why?", going ahead and making game using nothing but global variables. It worked for a bit until my code became a disaster to expand on. And it was then where I *experienced* why not to use global variables. Stuff like that can't be taught, you have to do it yourself and find the hole you've dug for yourself. And it's not like some game or random outcome where you get mad at something that happened to you; it's your code!
You know I've done this so many times, and I still do it sometimes, if I don't understand why something is wrong I still use it, only now I kind of expect it to break at some point, while when I was starting out it was fuelled with confidence, so I'd think ohh, all these guys are morons, this obviously works. But it also has an added advantage, you shouldn't be solving problems you are not aware about, because half-solutions only come to bite you in the ass.
Global variables are good when they apply to your whole program. Using only local variables is a mistake. Java doesn't have globals and it is a terrible flaw.
The other reason to do it wrong is because the "right" and "wrong" way are often just culturally enforced taboos not based in reality. "Best" practices are often just *standard* practices. The right and wrong way to code something is often very dependent on specific context that "best practices" can't account for, and the only way to learn what is actually right in context is to develop empirical experience.
@@Tapajara The global variables in Java are public static variables.
@@akruijff those are global constants, not global variables.
"Computer doesn't have feelings"
Computer: *crying in binary*
Computer: *_sad 1 and 0 noises_*
more like Screaming in Binary!
U made me sad
Dreaming in digital
01101101 01101111 01101101 01101101 01111001 00100000 01101001 00100111 01101101 00100000 01110011 01100001 01100100
5 stages of programming:
1.) "You're telling me there's a magic fairy inside my computer?"
2.) "WHY WON'T IT DO WHAT I SAY?!"
3.) "Am I even mentally capable of this?"
4.) "Please, help me... somebody..."
5.) "Unfortunately, no one can be told what the Matrix is. You have to see it for yourself"
6) "I know Kung Fu."
7) "I'm in........"
8) "I have transcended human understanding"
9.) Algorithm? What algorithm?
5.) "This is actually rule #6."
All good advice. I have been a professional programmer for 30 years.I would add two small details. 1. Comment your code, you will be thankful later and you will expected to do that as a professional. 2. Test your code on bad data, it should be able to handle bad data without crashing. Because in the real world, it WILL get bad data fed to it.
This! Countless hours wasted on debugging code when it was just some edge case in the data, that one JSON object in 10 million that is missing a parameter.
Get your nan to test that shit because she will do stuff in sequences you never imagined
The lack of commenting is a massive pet-peeve of mine.
So many of the developers that I work with don't comment at all.
I always hate working on their code.
Comment, comment, comment! 2 months, 2 years or (shock) 2 decades from now your code (or more likely, somebody else's code) will crop up... do you remember what all those variables / functions are doing today? (Months or years later... I thought not!)
Do you know what that OTHER guys code is doing? Absolutely not unless there are bountiful comments or the code is trivial...
@@H2Obsession Yep, 20 minutes later I've forgotten what the variables are or how the code is SUPPOSED to work, or worse still, not remembering what I'm supposed to be coding per se. 😁
Your channel might be one of the hidden gems on YT!
Hey thanks EgoTrip! you discovered our little secret society :D
So true!
Some Really Good Advice here!!! Especially about arrogant coders online!
I remember submitting my first post to GameDev a long time ago... Man! Some dude with a high rep really went for me for some bizarre reason. And when I fought back well, he did seem to back down (Probably because I down voted him... A critical anathema for ego maniacs with precious reputations to protect!) and I actually got some good advice out of him.. Eventually...
But the damage was already done! Because I dared to rebel against Mr Egotistical in the public thread, his hordes of fanboys rose to his defence and attacked / down voted me to the point that I had to create another user profile!
So yeah, unfortunately even something as deeply technical as coding has it's own fair share of 'politics' but, don't let any of that dissuade you because there are PLENTY of excellent resources online... My advice is, don't get caught up in the politics and try and keep a low profile... At least until you become proficient enough to contribute to an online resource.
Anyway, whatever you do... Enjoy! I think coding is one of the most enjoyable things that I've done throughout my life... It's challenging, forces you to think and use your brain and it's totally creative, despite also being heavily steeped in those critical STEM fields so... The proverbial best of both worlds!!! ;-)))
It is that's why I'm subscribed.
I'm learning C++ from a series of tutorials @ChiliTomatoNoodle, coupled with these videos they are absolutely everything you need to learn C++ correctly and along the way learn game development, engine development, and game design. Truly happy to live at a time where these people exist and contribute such works to us normal people ...
I'd watch one of these videos than take a course on Udemy or whatever bullsh*it platform/book there is out there!!
6:20 is 1000% stackoverflow
„Youre doing it wrong“
„Idiot“
„Question marked as duplicate“
Absolutely. I've even linked to another thread that didn't solve the issue. Yet 5 friendly fellows marked it a dupe in one day. Horrible place.
The sad part? Answers that were actually what I needed get ignored and even admonished as "not correct".
I agree. It's an utterly toxic place.
"question marked as offtopic"
yep
My first rule: You don't need to know everything.
If your language allows for Object Orientation, but all you need is procedures, ignore the OO until you actually do need it. If your webpage needs just a single line of JavaScript, be aware of what else JS can do, but it's not your priority to find out more. You can learn a syntax in a weekend, and a library in a few months, but there's more libraries than you could master in a lifetime - so don't worry about them.
You have obviously never interviewed with Amazon or Google. Not only are you expected to write code that works, you must write the most efficient code.
@@picklerix6162 ...for a given value of "efficient".
Offset against readability, maintanability, sanity, upgradability, development time, etc.
None of which has anything to do with knowing everything.
Do you have any advice for this? I struggle with it a lot. Thanks.
True I like to look at reference cards of languages as a quick refresher or to get the basic idea of the available operations at a glance.
"Don't listen to people on the internet"
-Person on the internet
Goodness me you should look at the advice on Reddit. It's generic garbage that pedestrians would tell you
hahahaha
Haha XD but there's some truth value there.
NEVER RUN IT (You've been warned) I've seen the following command shared by many pranksters about CLI:
rm -rf /
If you know the basics of CLI, you know what it does. If not, Google it.
matthigast> You comment seems like coming from an A.I. Cannot distinguish between good and bad.
@@salesman4396 Hello fellow human, how are you today
I think the best advice is to not code for the sake of learning how to code, but rather to have a specific goal that you try to achieve, such as a small project
Freaking defnitly. This is the biggest motivation booster ever. I wanted to learn how to code advanced minecraft Plugins but never found any motivation besides a few basis. But after joining a server I had the motivation to go on.
Get yourself an archievable goal and go for it.
Necessity is the mother of all inventions, and of all motivations.
As a beginner, one might not know what is possible with a code, how do you advise on having an achievable goal ?
Truee. I've spent so many months just learning Java from udemy tutorials (Around 7-8months in total) It's just exhausting. I'm not saying it wasn't usefull. It was super useful when I created projects later. BUT it was really hard and frustrating it's much better just to keep creating something yourself and learn what you need and only if you want go watch non related tutorials
@@rockokechukwu3343 Unless you're an expert, you can't really know what is achievable; but if you're just learning to code then set a goal that only (should) require learning/practicing one (or a few) new things. Don't "jump in the deep end" and try to master a new library or use a dozen "new-to-you" functions of a standard library.
Also, ignorance is bliss. Not knowing what is achievable can produce amazing results. For example, a Commodore emulator called VICE had been around for many years with frequent updates, but a often requested feature (FAST mode of C128) had never been implemented. I had never worked on an emulator before, but I downloaded the source code and over a weekend I found out how the CPU was being emulated and created the long-sought FAST mode. I submitted my changes to the VICE team and the FAST mode became standard on the next release (improved by the team).
Since then I've learned a lot about writing/implementing emulators, and it is a lot... it can be daunting. I'm guessing that is one reason the VICE project had gone for years without FAST mode. But I didn't know then how complex things can be so I just jumped right into the code and did it. Fearless, not because of bravery but because of ignorance :)
(This goes in-hand with "don't listen to people on the Internet")
As a programmer I've kept two things in mind over the years:
1. KISS - Keep It Simple Stupid!
2. There are no dumb questions - ASK!
Excellent video javidx9, some great advice.
Cheers Seb, 2 excellent points!
KISS, good one. For example, a regular expression that you can't decipher a week later. While it can be replaced with a code section that step-by-step gets where you want to be. Much better.
Nice advice!
Yeah the KISS approach saves time in the long run.
No PC or anything but to throw my 2 bits in, I like to think of KISS as "Keep It Stupid Simple" xD
Best advice ever.
I was feeling a bit anxious as a beginner, trying to rush things out and thinking of learning languages but I still quite yet don't know how to "real" read and build an algorithm. I'll save this video for whenever I feel like that again.. thx man
Man bit 3 was really painful for me 7 years ago when I started coding. Every forum would start bashing me and I used to get in anxiety and depression thinking that maybe programming is not my cup of tea. Then I just ended up screwing them all and started practicing on my own, kept a pen and paper and kept trying to solve on my own, took help from documentations but none from the forums and it was more worth it and the end result really did pay off
I've been earning my living with programming for 22 years and I still at times need to remind myself of this lesson when I start new things :-). Really solid advice!
My bit of advice if may: Try to improve your programming skills at all times this process should NEVER stop. I mean it.
I have exactly 0 appreaciation for devs with immutable knowledge. There is always something to learn and improve.
Where I live also known as the craftman's creed: "Who ceases to improve, has ceased to be good"
all the advises i had seen in different separate videos finally they are gathered in a single video and more of them. No body will give this kind of advice for free but this man did...
Thanks a lot.
Lol Thanks, err, GangBang! :D
6:01 why am I getting the feeling that he's talking about 99% of people on stack overflow?
Stack Overflow is a cesspool. Most of it is shitty advice, the rest is "look at this question" where they link a question where someone has a completely different problem.
Also, I have yet to find a way to link an answer, which is just terrible functionality.
I think my fave stackoverflow posts have to be the ones where the "why are you doing this. Don't try making this" answers have 12x the votes than the actual answers which help
yes. I think it's ok to show an alternative for improvement, but first *answer the question*
@@inflatedego9418 "a quick google search will help you out" these should leave a Q&A website
And a lot of the time it's, "here, use this gigantic library that you've never heard of, so that you can just do it, no don't bother learning how to do it on your own, it's already being spoon fed to you." Learning for the sake of learning should *never* be frowned upon, you never know what you might figure out and how it might be useful later.
All good advice for beginners. How about 8 bits of advice for advanced programmers? You know, the stuff that professionals seem to forget?
8. Always prefer working with smart people rather than people with people who have the "perfect credentials".
7. Create simple designs for code so that other average programmers can learn and understand it quickly.
6. Use tools that make sense for the task, rather than picking tools because they have a lot of public "hype/buzz".
5. First work independently to solve problems, and if you get stuck then don't be afraid to ask questions of others.
4. Practice and work at learning to troubleshoot effectively; most coders suck at troubleshooting.
3. Don't manipulate the dialogue to blame others when your code breaks, take responsibility.
2. Use the simplest data structures that accomplish the task, rather than unnecessarily showing off with advanced concepts.
1. Listen to your smart colleagues; you don't always have the best solution.
6! Look at literally everything now, it's all about hype.
I mean... there is something to be said regarding using a tool with hype, that being the ones with hype tend to have a larger collection of help resources built up depending on it's lifespan. If it's hyped, there's more people working with it, and more solutions those people have figured out using it. An example that comes to my mind for this is the difference in help resources between Unity and Unreal game engines.
I would add... defining a problem accurately is usually more difficult than finding, or implementing, its solution. Always make sure both the problem and the solution can be, and have been, expressed in plain language, without any technical jargon *at all*. This usually upsets poor quality IT middle-management. It removes their crutches, and the tribal code by which they tell one another they deserve their salaries.
@Mensa Swede so right! I've been writing code for more than 4 decades and my experience definitely agrees with your observations. I would like to add to 8 and 7 if I may.
"8. Always prefer to work with smart people..." who aren't afraid to say "you're wrong because ..." and hopefully "if this part is changed like...it will work". The advanced programmer is probably the leader of a group. A group of "yes men" that won't disagree with the leader is a very bad thing for the group.
"7. Create simple designs..." this is HUGE if you want to be successful in the long run. Simple designs execute more efficiently/faster, easier to debug, easier to maintain, easier to adapt to other purposes.
OK, I changed my mind.
"3....take responsibility" taking responsibility for mistakes shows the people around (above) you that your words can be trusted and you know enough to learn from your mistakes. Everybody makes mistakes. If you're not, you're probably not taking enough risks which means you aren't growing.
one of the good comments and just 91 likes.
Nailed every single advice. This is the kind of stuff that maybe take years to learn properly (every one of it has value in a given context). Well done Javid.
This has been the most encouraging video I've seen about programming. You are so kind and practical. Thank you.
I agree with this 💯
Exactly the internet is really hostile to beginners, we need to be moere like him.
i just found your channel and the videos are fantastic!
great voice and you are very sympathetic
Hey Das Konstrukt, thanks for your kind words. I'm pleased you're enjoying them. I try to take a relaxed approach, I feel it makes the content easier to take in.
Seriously, the actual best advice for coding I've seen. Thank you for the encouraging words!
Wow, that's really kind. There should be more teachers like this in the world. I feel more inspired to code now thanks.
6 years later, I am here.
grateful.
you're a beautiful person (in the head), cheers for being so bloody straight forward.
no one has been so straight forward, some of ur tips i did myself, semi-intuitively having learnt other disciplines i didnt stick with before.
im employed now but im still feeling a little too incompetent seldom but it counts. i really just want to be a good generalist whether its apps that are full compile or frameworked webapps that are half interpreted.
im really average and I want to be good, coz as u said in bit 6 have fun.
my weaknesses currently is readibility. i do write it myself. but syntax and shit and listening to internet people that use stupid hacks. I can see its outside of nature or documentation but sometimes it just works and the docos have nothing.
I have no involvement in communities online because, i dont know....
bro, you are a wake up call. thanks for letting me comment on this crystal.
Always pleased to hear people connecting with the bits! Good luck buddy!
Wont hurt my computer? I once had a loop with a JFrame = new JFrame. If computers could feel pain, that would probably hurt.
Meeharbi N oh no what have you done
😂
lol
Meeharbi N heap overflow 🤣🤣
That's what I "love" about Microsoft C++ and Direct X... even on a modern "protected" OS, it seems I can easily find a way to crash the system... as if I were writing code in 1983 BASIC :) :)
Thank you very much! I've just started learning C++, years later from learning python. I really saw that the most important thing is not the syntax, but the logic. The syntax is just a detail. So, thanks for your video again, and congratulations! God bless you!! =)
I've been programming for about two years now. I have a degree in Game Development that I got from an accelerated school so I don't really know if I'm still considered new or not. I feel closer to intermediate, but I feel like this advice is good to hear even for non-new programmers. Your voice and tone definitely help drive this video home. Great job!
Hey thanks Mebrother9, I'm sure your course was quite intensive, so chances are you're better than you think.
Hey! I know Im late but Im trying to find people who can I compare my skills to considering the time. There are not many people on the internet who are talking about that but I think it would be pretty motivating to see how fast or how slow do I go. So would you mind sharing it with me? :D What was your level when you got your degree? What algorithms/programs were you able to write? I chose what I wanna do just a few weeks ago (its web programming). Im already programming for one year so I guess Im pretty slow lol. Was jumping from one language to another for one year
It may be wortg checking out the community showcase videos to see what people are doing.
@@jmbeatsbbx There is nothing like faking it till you make it. I did that the first 10 years of my career in programming. Nowadays you need to know a few more buzz words than in the past. If you really study up on your buzz words "jQuery, bootstrap, CSS, MVC, WCF" and can rattle them off like a boss, you will more than likely be offered most web development jobs you apply for, ZERO experience necessary. I was unemployed for almost 2 months starting last May 2019 and most hiring managers would not pass you through to the programming staff if you couldn't say all the correct buzz words, even though the hiring manager had no idea what these buzz words meant or were. The bad news is what buzz words they are specifically looking for, you will never know.
I went a similar route to you, intensive OOP course. There are so many charlatans in this game it's frightening. My first job was JS and I mentioned to my Project Manger a few weeks in that I was going to a conference on ES6 and was there anything in particular he wanted me to look into. He said "What's ES6?".
He's not a developer anymore.
Great advice about getting stuck in to the programming, and not getting bogged down into the rights and wrongs of program structure, scope of variables etc. One thing that I have not seen on You Tube is the approach experienced programmers take to solving complex problems, e.g defining the problem in human language, then developing a solution that can be turned into code.
Excellent advice: especially bit #1. I seledom learned anything by doing it right the first time. Doing it wrong and figuring out why it's wrong creates a lasting impression.
Same. Learning what doesn't work gets you to what DOES work so much faster...
Applied this to learn data-oriented design, recently. Now? I know that the _very aim_ of data-oriented design is to reduce the amount of work / number of lookups / number of redirections needed as well as exploit optimizations the hardware guys left for us.
"What is easily learned, is easily forgotten."
I have to say if you're going through a book which is teaching you how to code through doing a project, stop at some point and create a new and different project. This lets you apply everything you learned in the book without it holding your hand helping to solidify your knowledge. Recently I picked up a book on Scikit-learn and TensorFlow and about 2/3rds through the first project I stopped and created a new project using the famous iris dataset. Simple classification problem but in leaving the book I really had to figure out how things worked. For example, adding a new column to the dataset using integers to represent the iris species so I could map them to their respective points on scatter graphs. Or how Scikit's classifiers .fit() and .predict() methods worked. Both of these issues gave me immense frustration but solving them on my own let me get through the rest of the project far faster since I actually understood what was happening in the book. Especially because the code was all over the place in the chapter; I didn't have to look for every piece of it, I knew what the book wanted me to do and I could write it on my own. Anyone can write code from a book to get a completed project no matter how complex, doing it on your own is the real challenge.
Another good way would be to look at a tutorial in a different language
The world needs more people like you, people willing and able to spread their knowledge and genuinely interested in helping people and the world. You're a saint in my book.
Hey thanks BC, thats really nice of you to say!
This. I have learned more by sharing what I have already learned than by research on its own.
Excellent advise, could not agree more! Having started my own carrier 27 years ago without google and internet, when coders had to take regular trips to the library and search for books to purchase on subjects of interest, then hand-code every algorithm in order to learn, I smiled when you said 'Never copy-paste' :) Besides all of the rest of excellent advise in this video, I'd like to stress here this particular bit since it alone can create a habit that may convert an otherwise intelligent and very promising beginner to a careless and lazy coder who never develops the patience it takes to study deeply and learn, and ultimately discover that besides the science, programming is a very expressive and satisfying art form.
Thanks Dimitrios, I'm pleased others with experience are chipping in too!
I feel the same way Dimitrios. Programming is 'to me' an art form that needs time and patients to master.
"Select all, delete, start again"
This helped me so much when my bosses keep bringing up new requirements until a tiny script gets blown up with so much code. I just say I'm fixing bugs for the day and take the time to rewrite code now that I know what it needs to do unlike the first time.
This is all fantastic advice that I pretty much followed by accident when starting out - when you start getting into coding as a hobby and because you want to make something instead of starting it as "I want to do this as a career I need to learn this" you instinctually follow most of these rules; this lead to me getting a really good head start on it in my early teenage years and in the long run resulting in a really, really successful learning process over a long period. Even now, as an experienced programmer, I still follow some of these rules, like avoiding copy pasting code from online tutorials, and trying to implement things myself when learning something new, instead of trying to mimic someone else's strategy for implementing it.
My bit:
When you make a change/fix to your code, or in general, each time, BEFORE you run your code, form a hypothesis/idea/expectation on what it's probably going to do (and why). THEN actually run it. Don't run your code with the only intention being "what will this do?". ALWAYS form a hypothesis of what's going to happen first.
Note - not "have an idea what you WANT it to do", that you obviously need, but in this case, form an idea what it is actually going to do, based on what you wrote.
This has helped me immensely in learning, as well as keeps helping me in my daily job. It makes you accustomed to the idea of just "running the code/any code in your head". It makes as much difference to programming, in my opinion, as not having vs having a flashlight while you're walking through the woods at night.
...yes, this advice seems obvious, but you'd be surprised how many people, beginners and "professionals" alike not only don't do this, but actively try to avoid having to do this.
Programming, is, first and foremost, thinking systematically. The writing part is just noting those thoughts down. Don't let your laziness flip the process upside down.
My student often hated me for it ("Okay, you've made a change, now describe what the code is going to do when you run it."), but even he could see how it helped him.
this is actually pretty genius... i never thought of doing that. you might accidentally tell yourself it won't work after all because you explained it to yourself
I think I am doing that unconciously at times (Or that's just my mind mixing up me reading some ASM code I can't fully understand yet, from a ROMhacking discord I am on (The people on there are truly helpfull in trying to explain things))
Whereas I contiously definetly do just try test out what my code does, instead of thinking it through step by step.
Amazing advice, I'll definetly try getting used to doing this.
Pretty good advice right there. One should always do that as it also makes sure you stay focus on the task at hand. If you're not paying attention, by the time the program compiles and you get to test your change, you might have been distracted and go: "wait, what was I testing again?"
Definitely helps me stay focused at work.
That sounds exactly like unit testing
@@n8style not really. unit testing is "make sure you know what results SHOULD the code give you, as in what are the correct ones".
what i'm saying up there is "make sure you know what results the code is GOING to give you in its current state, regardless of what correct results are supposed to be"
"Measuring a program by lines of code is like measuring an aircraft by weight."
-Bill Gates
@Drew Kangaroo the actual quote is "Measuring programming progress by lines of code is like measuring aircraft building progress by weight."
It's all about the layers of abstraction. I want to do "This"; so the main question to yourself should be, "how can I effectively and efficiently write this in my language of choice that will generate the least amount of instructions, utilize the cache, have the smallest memory footprint possible (tradeoffs between time and space complexity) while trying to reduce code down to O(1), O(n), or O(log N) time and space complexities while avoiding O(n^x) if possible. Then from there, it's a manner of keeping your range, domain, data types, truncations, underflows and overflows in check... Your code should be readable, reusable, modular, portable unless designed for a specific target, scalable, generic when possible, efficient, and reliable all while maintaining its intent or expressiveness by providing a proper naming convention. For example: Having several classes that have setters and getters for their private members such as in C++... You shouldn't have just the functions T foo::get() and void foo::set(T), then T bar::get(), void bar::set(T)... the issue here is what are you getting and setting? So renaming these to something like T foo::get_user_id() and void foo::assign_user_id(T) makes the code expressive with intent. Then it's a manner of staying consistent with your own personal naming convention! Oh, and I have 0 formal training, everything I've learned was all in my own time 100% self-taught and I'm starting to learn Vulkan so that should give an indication of my level of knowledge and experience.
@@scvpest Which is why it, along with 'hours of work', is a terrible metric for measuring programmer output. But most managers or HR officers are oblivious to that.
I mean I can create a library that does everything and call it with a few lines. What is the point? Should I add every line ever written?
@@TheAudioCGMan in india they pay their programmers by k lines of code so you often end up with repeated lines of code for everything also no functions, no loops, no inheritance
9:01 "That skill will never go away" You assume a lot with my brain
🤣🤣🤣🤣🤣🤣🤣
These are serving me well - Thanks. Excellent comments from the community too.
Good video, expected this to be all about 8bit games but was pleased to see it's about general programming
Good advice, im making a game as a hobby in C++ right now and it's easy to get carried away with all your ideas, but then I realize ill get bored before I even add a quarter of them.
More of this type of advice would be cool. (part 2? :) )
Hi TechieW, thanks! I've been there, and still visit! I've folders full of unfinished source files. Bigger projects do need a plan but beginners should just get stuck in. Good luck with your game coding!
Oh yes, those arrogant programmers. I posted a question regarding multithreaded design. The answer was "if you do it like that, you obviously don't know what you are doing." LOL if I knew what I was doing, I wouldn't be asking. Now, who's the dummy?
too far gone inside their ego to process social context
I can definitely vouch for Bit 4. I was just starting out learning to program an Arduino recently and found some good online tutorials. I copied and pasted some code but I didn't really get to understand the concepts behind the code until I typed it out myself even though what I copy and pasted and what I typed were the same thing.
Literally best video of programming advice I've seen. As a developer, I luckily had this mindset, but have seen others struggle with biting off more than they can chew.
You're absolutely right relating newbies! Wish all programmers would have same mind like you! Thanks for all of your advices and videos, you're making a great job!
Here's my parity bit: learn assembly language for any simple 8-bit microcontroller. What you will learn about how the CPU works internally will be invaluable later on at making your code efficient. Something like a Motorola 6502 (which was the processor used in the Atari 2600, Apple II, NES, Commodore 64 and Atari Lynx), or a Zilog Z80 (iconic chip of the 80's that also has the advantage of being binary compatible with Intel's 8080 at the time, which was the ancestor to the 8088, and the 8086, the direct ancestor to current day processors). It's a feature complete processor with a small instruction set and no complicated peripherals. The best thing is that you don't even actually need a chip to understand assembly on a small 8-bit micro like that. Just write the code on a napkin along with registers and stack, and follow it along with a pen. If you got friends you program with make it a competition. Whoever can write this or that function the most efficiently wins.
Learning assembly is certainly helpful. For a small, easy-to-learn, modern instruction set, i would recommend RISC-V. It's 32- to 128-bit, but the instruction word is 32-bit. The base instruction set list fits on a single page in the specification. It has helped me to understand x86 assembly a bit, by putting things into perspective.
For people who think learning assembly is too scary, I would recommend the game Human Resource Machine. Essentially the same kind of thinking but polished into a series of small easy to understand challenges.
@@sourestcake If you're gonna go 32 bits might as well go straight to ARM and THUMB. It doesn't get much simpler and it still used widely everywhere...
I'm 28 years old whose getting into the field of computer programming for some reasons. 1 is because I want a challenge and 2 this is a high skill moving forward in 2020. Your video helped me calm myself and really think what I want to get myself into. Thank you for the 8-bit advice lol
I wish I could have watched this video when I started out! You give some real solid advice.
Listen to this guy. This is a really good piece of advice. I've been trying to learn how to make my own games for a while but I really got into it like sometime last year. It might seem like dark magic for a while but eventually you will find that you are now able to write your own code, functions etc. It doesn't have to be nice. As long as it works, you can find a better way of doing it later so don't worry. Writing your first piece of (real) code and then watching it work makes you feel great. As mentioned, don't be afraid to break rules and experiment, change variable values to something absurd, you will find that sometimes you discovered something that will come handy later, plus some results are really fun to watch. I also advice you to put your own comments for the code, in your own words that you can understand later, especially if it's something you shelved a while back but now you feel like you can make it work again. Reading your own comments will help you quickly understand the logic behind your script.
Great content Sir. Thank you for sharing.
This is an amazing stroke of luck!! Just this morning I thought about a game I played as a kid called Soul Reaver. The series was discontinued, but on my way to work I wondered if I could make an 8 or 16-bit version of Soul Reaver. 8 hours later and YOUR CHANNEL COMES UP ABOUT CODING RETRO GAMES!!!
Don't be afraid to reinvent the wheel. It will often times lead to better intuition and appreciation of why the wheel exists in the first place.
I once made my own json reader because I couldn't figure out how to use someone else's library for it. It was a good experience.
@@mxruben81 i've been there, tons of times as a student
That is good advice bro
It's what I always say to other programmers that are starting out
Hey 2bits, thanks!
Thank you for this advice. It can be overwhelming learning at first and it’s easy to feel defeated.
LOVED this video. I am JUST starting to code and the advice has been spot on. 7:30 "Break the rules". I have the BEST time tweaking the code, "I wonder what happens if I change this.... Oh Man!!! " LOL I am collecting little projects that I copy and then try to write from memory and I'm amazed that I'm writing the concepts in different ways and when I check it against the initial program, I sometimes find different ways to do the same thing. So far, programming is a BLAST!! Thank you for the sage advice, sir. Subscribed.
This has been the only video of its kind that truly speaks for noobs. Thank you, javidx9! I have been playing this video constantly to remind myself I'm just starting. Keep up the great work!
This really is a great set of helpful hints for starting out :)
I wish I watched this video a long time ago javidx9. I have been in a lot of pain with programming because of setting my projects too high, trying out multiple programming languages, afraid of breaking my computer because some guys online say that unsafe code is evil. But this all changed when I started programming simple little projects only a couple months ago. I made my first text game called 21 which is a card game. Another name for it is black jack. I felt really good after making it because it was the first game I had ever finished in all my time learning to code. Though I made the code too complicated when I tried to add an AI opponent to the game, so I guess it isn't finished fully yet.
This video you posted should be watched by all levels of programmers no matter what level they are at. Those who are at the top of the charts should watch this to learn how to teach beginner programmers. I remember learning code from a teacher who was obsessed with clean code. To the point where I would think, 'is my code clean? Should I not use this IF statement here? Should I not duplicate code?" Oh man I got sick from stress worrying about all this stuff when I was learning Visual Basic.
Right now I'm currently using Qbasic v1.1. And I'm enjoying it a lot now since I started lowering my expectations and focused on simple projects.
But there is one good thing I learned from my old teacher which you brought out in your video. NEVER CUT AND PASTE CODE. And I can say from my own experience that re-writing code really helps you to understand the code you're reading.
Thanks again for this awesome video javidx9!
Hey thanks Lucas, I could not agree with your approach more - its so important to develop your own style, your own way of thinking and your own workflows. Adapting to standards can come later, and I don't agree with those who argue you must write perfect code from day one, in case you form bad habits. People kick habits all the time, and in programming you will naturally gravitate towards cleaner, optimised code when you are ready to.
Good luck with your projects! and QBasic is awesome.
I find bit 3 so funny when you go on something like stack overflow and some guy is like 'lol your an idiot just give up coding' and then it gets the most upvotes.
Hi Kit, Its just not the way to get people into coding at all :(
hi @javidx9, I'm sorry my message came across like that, the reason I find those threads so funny is, because it's more a case of laughing at the person or people who are disheartening the people who just want to learn. I don't condone their actions just find it laughable how arrogant some people get with this stuff and can't see the bigger picture (that is jsut someone who is looking for help and is new to this) and I personally feel sorry for the person they are replying too because they don't know better. Its like, you shouldn't go to a kid who has just started learning maths in primary (elementary) school and say 'lol you don't know how to use the tailor series?!?!? You should just give up' that would just be a stupid thing that I would just laugh at that person for for being so arrogant and bigoted, in my opinion, learning to code is the exact same and you shouldn't really take note of people telling you or others 'lol are you stupid' and instead just laugh it off. I'm really sorry if my comment offended or upset you in any way other than that all I have to say is it was a really good video, sorry. :(
Crossed wired kit, i was in complete agreement with you! Sorry for the confusion!
Oh okay well that's good then, I was just worried that you thought I was saying it was okay to laugh at someone for not knowing something, anyway sorry for the confusion too! :)
Yes very relatable, just recently posted a question on StackOverflow and got mass-roasted, post filed as a duplicate and a much poorer solution than if I simply would have done a more intrinsic google search :P
I agree wholeheartedly, specially with the “even if you’re copying something, type it yourself” tip. Best way to learn IMO. Made me remember my beginning days of programming. Cheers!
Thank you for making this video! I was struggeling so much, learning how to program, because I don't just want to know how to code, instead I want to learn the science behind thinking in code! I will start for now writing my own little programs without even researching what 'good practice' looks like and start experience it myself. Thanks for your motivation and the advice from the community is really helpful as well! Have a nice day!
I know I posted a comment here already. But I wanted to give updates concerning my learning in programming. And a lot of things said in this video is the reason why I am improving. I plan to post some old code of mine and some new code to demonstrate the improvements in my programming journey.
First of all. Starting with small project
This is one of the main reasons why I am improving in my programming journey. When you start off with small projects, you not only give yourself a reasonable amount of difficulty to challenge yourself with. But you allow yourself to test out new keywords you have learned or try out new concepts. When you see these keywords or concepts in huge piles of code, you don't really get the sense of it. But when you focus on seeing what happens when you center your code around these things that you are learning it brings the result forward so that you know what that keyword or concept can do.
Read code that is at your level
Reading code is very important in your journey to become a good programmer, but reading code that delves into company quality production or big games or engines, will leave you with more question than answers. Rather, focus on simple programs e.g.(Look up code that does a simple tic tac toe game or a simple snake game.). Looking into these simplistic codes that people post online or other games like Nibbles(for QBasic) can really help you understand the syntax of the code and help you see how code is structured.
Practice every new Keyword and Concept you learn
As this video rightly says. Practice, Practice, Practice. This is absolutely important. I don't need to go into anything deep about this one.
Old code (Black Jack/21)
This is very embarrassing to show since this code was written a couple months ago.
_FULLSCREEN
DEFINT A-Z
DIM class(4) AS STRING
DIM cards(13) AS STRING
DIM hand(8) AS STRING
DIM aiHand(8) AS STRING
h = 0
ex = 0
aiH = 0
'sorting out the arrays
RESTORE clas
FOR x = 0 TO 3
READ class(x)
NEXT x
clas:
DATA "Hearts","Clubs","Daimonds","Spades"
RESTORE card
FOR x = 0 TO 12
READ cards(x)
NEXT x
card:
DATA "Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"
DO
4 'if the card checker finds a duplicate card in the hand array it will goto here.
IF ex = 5 THEN PRINT "emergency shutdown in case of infinite loop": END
GOSUB dealer
GOSUB cardChecker
GOSUB display
GOSUB inputs
LOOP
display:
PRINT "Cards in hand: total points: ", an
FOR x = 0 TO h
PRINT hand(x)
NEXT x
PRINT
PRINT "Debugging:"
PRINT "c: "; c; " cl$: "; cl
PRINT "pCheck$: " + pCheck$
RETURN
dealer:
h = h + 1
aiH = aiH + 1
RANDOMIZE TIMER
c = INT(RND * 12) + 1
cl = INT(RND * 3) + 1
aiC = INT(RND * 12) + 1
aiCl = INT(RND * 3) + 1
c$ = cards(c)
cl$ = class(cl)
aiC$ = cards(aiC)
aiCl$ = class(aiCl)
cCheck$ = c$ + " of " + cl$
aiCheck$ = aiC$ + " of " + aiCl$
'PRINT c$
'PRINT cl$
'END
FOR x = 0 TO h
IF cCheck$ = hand(x) THEN
h = h - 1
ex = ex + 1 'This variable is placed here just incase of an infinte loop.
GOTO 4
END IF
NEXT x
FOR x = 0 TO aiH
IF aiCheck$ = hand(x) THEN
aiH = aiH - 1
ex = ex + 1
GOTO 4
END IF
NEXT x
ex = 0 'reset emergency exit if it doesn't loop
hand(h) = cCheck$
aiHand(aiH) = aiCheck$
pCheck$ = MID$(hand(h), 0, INSTR(hand(h), " ")) 'takes the first word in the string and puts it into pChecker$
aCheck$ = MID$(aiHand(aiH), 0, INSTR(aiHand(aiH), " "))
RETURN
inputs:
5 INPUT a$
CLS
IF a$ = "hit" THEN RETURN
IF a$ = "stay" THEN GOTO 10
IF a$ "hit" OR a$ "stay" THEN PRINT "Please enter [hit] or [stay]": GOTO 5
RETURN
cardChecker:
IF pCheck$ = "Ace" THEN
INPUT "have Ace become 1 or 11", s
IF s = 1 THEN
an = an + 1
ELSEIF s = 11 THEN
an = an + 11
END IF
ELSEIF pCheck$ = "2" THEN
an = an + 2
ELSEIF pCheck$ = "3" THEN
an = an + 3
ELSEIF pCheck$ = "4" THEN
an = an + 4
ELSEIF pCheck$ = "5" THEN
an = an + 5
ELSEIF pCheck$ = "6" THEN
an = an + 6
ELSEIF pCheck$ = "7" THEN
an = an + 7
ELSEIF pCheck$ = "8" THEN
an = an + 8
ELSEIF pCheck$ = "9" THEN
an = an + 9
ELSEIF pCheck$ = "10" THEN
an = an + 10
ELSEIF pCheck$ = "Jack" THEN
an = an + 10
ELSEIF pCheck$ = "Queen" THEN
an = an + 10
ELSEIF pCheck$ = "King" THEN
an = an + 10
END IF
IF aCheck$ = "Ace" THEN
INPUT "have Ace become 1 or 11", a
IF a = 1 THEN
ai = ai + 1
ELSEIF a = 11 THEN
ai = ai + 11
END IF
ELSEIF aCheck$ = "2" THEN
ai = ai + 2
ELSEIF aCheck$ = "3" THEN
ai = ai + 3
ELSEIF aCheck$ = "4" THEN
ai = ai + 4
ELSEIF aCheck$ = "5" THEN
ai = ai + 5
ELSEIF aCheck$ = "6" THEN
ai = ai + 6
ELSEIF aCheck$ = "7" THEN
ai = ai + 7
ELSEIF aCheck$ = "8" THEN
ai = ai + 8
ELSEIF aCheck$ = "9" THEN
ai = ai + 9
ELSEIF aCheck$ = "10" THEN
ai = ai + 10
ELSEIF aCheck$ = "Jack" THEN
ai = ai + 10
ELSEIF aCheck$ = "Queen" THEN
ai = ai + 10
ELSEIF aCheck$ = "King" THEN
ai = ai + 10
END IF
IF an >= 21 THEN GOTO 10
IF ai >= 21 THEN GOTO 10
RETURN
10 'End Game here.
GOSUB display
IF an = 21 THEN
PRINT "Congrats you win!!"
GOTO 20
ELSEIF an > 21 THEN
PRINT "Too bad you bust!!"
GOTO 20
ELSEIF an < 21 THEN
PRINT "Congrats you didn't bust!!"
GOTO 20
END IF
20 'safety shutdown
END
'list of bug:
'choice for changing the Ace is not working
'class string sometimes doesn't go into cl$ [fixed]
'the points checker isn't working [fixed]
'point check does not check the first card that is dealt [fixed]
I know, this is really bad code. And the code duplication is pretty bad. Compared to my latest version of the code
Latest code (Black Jack/21)
_FULLSCREEN
DEFINT A-Z
TYPE deckType
cards AS STRING * 50
value AS INTEGER
END TYPE
TYPE dealtCards
player AS deckType
ai AS deckType
END TYPE
declare sub dealer ()
declare sub display ()
declare sub score ()
declare getInputs ()
declare sub win ()
declare sub lose ()
DIM SHARED cards(1 TO 52) AS deckType
DIM SHARED cardsInHand(1 TO 7) AS dealtCards
DIM SHARED cardValueTotal AS INTEGER
DIM SHARED cardIndex AS INTEGER
DIM SHARED inputs AS STRING
DIM SHARED index AS INTEGER
index = 1
EmergencyExit = 0
cardValueTotal = 0
RESTORE deckCards
FOR x = 1 TO 52
READ cards(x).cards
READ cards(x).value
NEXT x
deckCards:
DATA "Ace of Clubs",1
DATA "Two of Clubs",2
DATA "Three of Clubs",3
DATA "Four of Clubs",4
DATA "Five of Clubs",5
DATA "Six of Clubs",6
DATA "Seven of Clubs",7
DATA "Eight of Clubs",8
DATA "Nine of Clubs",9
DATA "Ten of Clubs",10
DATA "Jack of Clubs",10
DATA "Queen of Clubs",10
DATA "King of Clubs",10
DATA "Ace of Hearts",1
DATA "Two of Hearts",2
DATA "Three of Hearts",3
DATA "Four of Hearts",4
DATA "Five of Hearts",5
DATA "Six of Hearts",6
DATA "Seven of Hearts",7
DATA "Eight of Hearts",8
DATA "Nine of Hearts",9
DATA "Ten of Hearts",10
DATA "Jack of Hearts",10
DATA "Queen of Hearts",10
DATA "King of Hearts",10
DATA "Ace of Spades",1
DATA "Two of Spades",2
DATA "Three of Spades",3
DATA "Four of Spades",4
DATA "Five of Spades",5
DATA "Six of Spades",6
DATA "Seven of Spades",7
DATA "Eight of Spades",8
DATA "Nine of Spades",9
DATA "Ten of Spades",10
DATA "Jack of Spades",10
DATA "Queen of Spades",10
DATA "King of Spades",10
DATA "Ace of Diamonds",1
DATA "Two of Diamonds",2
DATA "Three of Diamonds",3
DATA "Four of Diamonds",4
DATA "Five of Diamonds",5
DATA "Six of Diamonds",6
DATA "Seven of Diamonds",7
DATA "Eight of Diamonds",8
DATA "Nine of Diamonds",9
DATA "Ten of Diamonds",10
DATA "Jack of Diamonds",10
DATA "Queen of Diamonds",10
DATA "King of Diamonds",10
'PRINT cardsInHand(1).player.cards
'PRINT cardsInHand(1).player.value
DO
cardIndex = 0
getInputs
dealer
display
LOOP
SUB getInputs ()
inputs = INKEY$
PRINT "(H)it or (S)tay"
INPUT inputs
CLS
SELECT CASE inputs
CASE "h", "H"
EXIT SUB
CASE "s", "S"
score
CASE "q", "Q"
END
CASE ELSE
PRINT "Invalid Input"
getInputs
END SELECT
END SUB
SUB dealer ()
RANDOMIZE TIMER
cardIndex = INT(RND * 52) + 1
FOR x = 1 TO index
IF cardsInHand(x).player.cards = cards(cardIndex).cards THEN
EmergencyExit = EmergencyExit + 1
IF EmergencyExit = 10 THEN
PRINT "Emergency Exit because of Infinite loop..."
SYSTEM
END IF
dealer
END IF
NEXT x
EmergencyExit = 0
cardsInHand(index).player.cards = cards(cardIndex).cards
cardsInHand(index).player.value = cards(cardIndex).value
cardValueTotal = cardValueTotal + cardsInHand(index).player.value
index = index + 1
END SUB
SUB score ()
IF cardValueTotal > 21 THEN lose
IF cardValueTotal = 21 THEN win
END SUB
SUB win ()
PRINT "Congratulations! You Won!"
END
END SUB
SUB lose ()
PRINT "OOh! Busted"
END
END SUB
SUB display ()
PRINT "Player's Points: "; cardValueTotal
PRINT "Player's Hand: AI's Hand:"
FOR x = 1 TO index STEP 1
PRINT cardsInHand(x).player.cards
NEXT x
IF cardValueTotal > 21 THEN score
IF cardValueTotal = 21 THEN score
END SUB
In this version of code I practiced using the Type Keyword and focused on POP (Procedure Oriented Programming) concepts.
Again thanks for the help javidx9! You really helped me get out of a slump
Also I know this comment is really long. Sorry for that
Hey Lucas, Wow, possibly the longest comment ever posted on youtube :D I love BASIC, I think more people should do some BASIC, its a fantastic way to learn, and I believe this because that's how I started!!
Seriously, thanks for your kind comments, and I'm really pleased you've re-kindled your love of programming. Keep up the great work!
Thanks as well for your educational videos. I learn a lot from you. :)
And someday I hope to help those who wish to learn programming when I get to a good enough level.
That's long bruh. I'm a perfectionist and I kinda feel neutral about programming. Maybe I should try these 8-bits of advices. There is nothing to lose! We should team up
if you want :p
6:11 StackOverflow in a nutshell
Love the irony of that site!
>Exists to help people with any programming issue
>Full of people complaining about people having bad code who clearly need some help and tips or gives people obscure, unintelligible blocks of code that only work for one specific purpose and can't be reused
As a further point to the "don't listen to (just anyone) on the internet", don't always listen to the people in the office sometimes. The ones who have been in the same team for a billion years. The same people may be very helpful at times when you have specific questions, but they can be dogmatic about a lot of things and are way off about 70% of the time
Great advice. Congrats for the humble attitude sharing your knowledge also.
Great advice. I just started programming, and I've quickly discovered that I love doing it.
Something that I've come to think about as well, is that a programming language is much like a verbal language in a way that the way its spoken is often very personalized. You can develop your own way of expressing your programming.
I feel like that realization helps in shielding yourself against what people on the internet have to say, and helps you choose what information you wish to implement into your style or not.
I want to share what I want to program in c++:
1 calculator
2 advance calculator which can solve equation
3 calculator which can graph and have all function written above
4 make simple game like snake,chess,tic tac toe and tetris
5 make 3d game open world
6 make aaa game in unreal engine
7 make my own 3d modeling software
8 make my own 3d game engine
9 create a simple ai
10 create humanoid than can talk simple version
11 create humanoid who can be me
12 create robotic arm for people with no limbs
13 solve p vs np in c++
14 make rocket simulation open world simulator
15 make simple quantum computer
16 make advace quantum computer
17 make the world great again(lol)
wish i can do this all in 30 yr
This is an ambitious list. Good Luck!
Start with AI, then tell AI you are it's God and Creator and you demand to make:
1 calculator
2 advance calculator which can solve equation
3 calculator which can graph and have all function written above
4 make simple game like snake,chess,tic tac toe and tetris
5 make 3d game open world
6 make aaa game in unreal engine
7 make my own 3d modeling software
8 make my own 3d game engine
9 tasty sandwich
10 create humanoid than can talk simple version
11 create humanoid who can be me
12 create robotic arm for people with no limbs
13 solve p vs np in c++
14 make rocket simulation open world simulator
15 make simple quantum computer
16 make advace quantum computer
17 make the world great again(lol)
Can we be friends then? I don't want to miss out on being with the next big genius hehe
Good luck man !
18: ascend
Is the cat in the background doing a video chat with mustache guy?
+javidx9 That is so good to hear. "Go make mistakes" is the best learning strategy.
Thanks luicecifer, I really believe this to be true.
Yup. pretty much my entire life as a perfectionist i try to avoid making mistake. Now I realized that's my biggest mistake.
Tell a rookie to go make mistakes... They write a very buggy code that finds it way out onto the net by some random chance... result, some nuclear plant somewhere in the world has a total meltdown and they can't figure out where it came from or why... Nah, just kidding it's not that bad, but learning from your mistakes to prevent future mistakes is that important because, in production code, things like that can happen. In the real world, when you write bad code with unforeseen bugs, people can die!
Thank you so much! As a noob this is what I needed to hear. I hope your channel gets even bigger. Thank you again for taking the time to record and upload this.
Niceeee dude! This is the attitude not just for programming but for many things in life! Thanks for it, arrived in a needed time
Javid's Advice: *Start Small!*
Me trying to learn C#: i'M gOiNg tO mAkE mY oWn vErSiOn oF mS pAInt!!!
One of my proudest moments was drawing a line on a Commodore 64's bitmapped screen.
You sir just gave me an idea
That's really something that you'd need to work on for weeks on end in order to perfect it, and if you're doing that, you'd better be willing to sell the product in order to recoup the monumental losses of time.
@@IndellableHatesHandles bit 3 strikes again
@@JodyBruchon I know what you mean,
What you said about forums is spot on... Stock Overflow has great info, but never post there if you're new... I was ignorant and posted a question after a long few days of no progress.. But I posted it at home late at night, so I didn't have my coding for an example.. I was just trying to toss a net out until I could get to work the next morning and share an example. But I was immediately scolded by hot shots, and was downvoted so many times that the website wasn't going to let me post another question for a week, but my project needed to keep progressing... Never asking for help there again, even if I have a sample of data to share. The people on that site are as toxic as League of Legends players.
Well you are more than welcome to ask questions on our discord, its not as big as SO but its a lot more friendly :D
I could agree.
I never had a problem with StackOverflow as a beginner / new programmer. I was completely objective, stated all my knowns and gave code examples. At first it took me an hour to submit a query on the site, now of course it takes much, much less time. If you make the problem as easy as possible to solve, ignoring problem complexity, it helps you and others out.
I have 6 years experience in web development but i still find this video very helpfull.
agreed with all. i was shortly shocked about "copy-paste". but then i remembered, when i learned, i borrowed books from the library, and wrote down all code.
all because my 8086 had a DD floppy drive, and the demo code was on HD disks.
although, admittedly, making those errors you mention, were less fun when you had to reboot to end a program...
i whole heartedly agree with all your points. good vids. keep it up.
Thanks Roger!
3:00 to 3:15 is spot on. That rapid feedback makes it way more engaging, and provides you opportunity to quickly learn from mistakes (which happen often, especially early on).
all the advices are great, one more could be - stick to one language at the beginning and dont jump between them
Excellent advice
well, you gotta break the rules :p
I once started whith Basic on my school calculator. I'm glad, i jumped to C++/Arduino, Java,... Writing just a simple Poker Game in (Texas Instruments) TI Basic was a 500 line evil Spaghetti Code 😅
Easy talk. Choosing a language to start with is very hard.
@@somedude5951 no it's not. having the patience required to stick with it is hard. Pick anything to start, all languages will be a learning experience.
Wow, this was a great video. I needed that, thank you. I have been putting myself down in community college coming towards the end of the semester. I haven't been studying as much as i should have. Just trying to learn from other people's code, not coming up with my own since the really easy stuff like if, if else conditions. Now we are in Classes and structures and I have no clue how to come up with the code on my own, it's depressing. I know it's my fault and I just keep blaming myself, but this video really helped me and I think I really understand now that I need to take my time and make a hobby out of it, not treat it like work I don't want to do. Thanks again, I wish you were my teacher!
When I started working as a junior programmer I was confused by the quantity of global variables in the code
Antón Chinaev what did you program in at that time?
@@MrHapp7 JavaScript. Actually "When I started programming" was less than 2 years ago, So I am in the same situation.
Best set of advice ever! I'm a software developer and I wish I'd heard this 22 years ago. So often I got advice from people who didn't bother to see things from a beginner's perpective, sounds stupid but it's true. I'm passing a copy of this video to my son and other kids I mentor from time to time, thanks.
Absolutely the best advice about to start programming! Very thankful buddy!!!
My favorite teacher told me one thing that has stuck with me "Write stupid code".
"Remember that the tools work for you, and that you can't hurt them"
Great advice! Whenever you're new to something hard to learn, the most important thing is a playful approach with a tight feedback loop. Overthinking and getting discouraged by anti-social wannabe alpha males makes this hard.
Source: been teaching myself and others programming and other stuff for over a decade; been a professional programmer for 7 years now.
I work as programer right now, and found this very helpful and I've wish been hear this 6 years ago. You're awesome, new subscriber here.
This is super useful even for experienced programmers & systems people. Excellent reminders. Ironically, we humans veer off from the basics quite a bit in any facet or domain in life.
You sound like a nice person, sorry for disliking your game engine video, I'll take that back now
Hey Ameerhun, thanks for that, its really appreciated. It takes effort to correct things when you have a change of heart, and I respect that, so thank you again.
"Don't copy paste code"
Haaa never heard of it
Harsh Raj, this is what I've been doing for the past 20 years in USA, sent my two kids in University, one doctor and one lawyer now. Success to be pretender.
Break down every question into a series of yes-no questions, as computers can only work with true or false
Also brilliant video Javid, I agree with this byte of advice, and I actually use it a lot in coding...also now I know not to "help" my peers😂🙈
Jeesh! Such good advice, and from such a genuine set of eyes behind a soft, familiar voice. Fantastic
These are the best advices about learning how to program that I've seen. They all make a lot of sense.
got my like for having Arcus in the background.
To heck with this javidx9 character...Halflife 3 development begins NOW. It's not going to write itself. :D
XD
"Don't listen to people on the internet," he said in an internet video. ;-)
Ikr then he looked around for a second in self-realization
That includes your comment too...
yea but everyone understands what he ment
There is some rock solid advice here, wish I had known some of this when I was starting!
First year CS student but code in my free time as well. I watch this every month or so to keep my head in the right place. Thank you for taking the time to make this video and post it for our benefit