8-Bits of Advice for New Programmers (The stuff they don't teach you in school!)
HTML-код
- Опубликовано: 30 июл 2024
- Coding is a wonderful hobby. It's challenging, rewarding and genuinely useful. I think it's harder today to start learning how to program, but easier to give it a go. Here are my 8 bits of advice for those wanting to take the leap!
Наука
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.
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.
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
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 ; )
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.
"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
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
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.
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
This is some of the best advice I've ever seen for learning to code, and even learning in general all across the board. Thanks for these bits of advice!
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!!
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. 😁
Wow, that's really kind. There should be more teachers like this in the world. I feel more inspired to code now thanks.
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!
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
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
Thank you so much for this. It was very encouraging to be told to take it slow, start small, make mistake. Sometimes it can get intimidating being around other programmers who talk about complicated things and it’s easy to feel pressure to be up at their level right away.
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.
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")
Seriously, the actual best advice for coding I've seen. Thank you for the encouraging words!
The last three bits are very encouraging! I always get in my head about standard practices and always second guessing myself. I sometimes get stuck in my own mind during personal projects! Sometimes it’s probably the best route to just to code it in a simple way that gets the job done and move on!
thank you! Great advice. I'm starting my programming journey through life this year. So far I love it.
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
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"
"Never cut and paste."
Instead, dig up an 80s computer magazine and a C64, and type in machine code from the pages.
Thank you for a good advice, the way you say it really makes me want to try all the programming stuff piece by piece.
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.
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."
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!
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.
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!! =)
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.
These are serving me well - Thanks. Excellent comments from the community too.
Thank you for the encouragement. I've been programming since the mid-1980's. What you say holds true even for someone who has some experience. You let me regain a whole new perspective. Thank you for the friendly reminder to help keep things fresh and fun! Sometimes deliberately 'breaking' things can be fun - the results may not be expected.
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!
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
Jeesh! Such good advice, and from such a genuine set of eyes behind a soft, familiar voice. Fantastic
Fantastic video. Watching this as I can say that I've ticked eached one of these steps off in my journey to become the programmer I am today. You hit the nail on the head
Thank you for this advice. It can be overwhelming learning at first and it’s easy to feel defeated.
This really is a great set of helpful hints for starting out :)
Niceeee dude! This is the attitude not just for programming but for many things in life! Thanks for it, arrived in a needed time
Absolutely the best advice about to start programming! Very thankful buddy!!!
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.
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!
Your videos are always extremely useful, but this is the best speech about programming I ever heard !! Thank You !!
Great advice. Congrats for the humble attitude sharing your knowledge also.
I wish I could have watched this video when I started out! You give some real solid advice.
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.
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.
"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
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!
Bit 2 was amazing. Honestly, I've gotten myself stuck before when programming so many times. Getting out of it and finding a new way of doing something, compiling the code and seeing it work finally is the best feeling in the world!
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"
"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
Best set of programming tutorials I've ever found. You really understand the path to success and how to teach as well. You should be a programming teacher if you're not already.
These are the best advices about learning how to program that I've seen. They all make a lot of sense.
9:01 "That skill will never go away" You assume a lot with my brain
🤣🤣🤣🤣🤣🤣🤣
That is good advice bro
It's what I always say to other programmers that are starting out
Hey 2bits, thanks!
One of the best out there. Thank you for all the great content.
Thank you for all you've done! You are so welcoming to aspiring coders!
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.
These are good advices for learning a new thing in general, and I needed to hear them 1 more time, thank you!
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.
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.
I've been learning web-design for the past year and a half.(javascript is the hardest part) I found this very informing. Thanks
Now I'm playing the arrogant guy. Please stop torturing yourself with js. Usually you don't need o write raw js. Learn typescript.
Thank you very much for this really useful advice, I've stumbled upon your video a good month of intensively learning python and I pretty much agree with everything you're saying. Especially the point about writing something that is fun for yourself. Keep it up, you've got a new subscriber!
Fantastic! Really helpful. I’ve been programming as an amateur for a bit(ahem) and was worrying my code isn’t good enough. I’m not worried anymore. I’ll just keep learning. Thanks for a great video.
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
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.
Really appreciate the advice, very helpful for me. The stress comes from my assignment due in 3 weeks and I'm confused! But I'll follow your advice.
Brilliant! I couldn’t agree more. My son is just learning, and you’ve completely spelled out the direction he is and should be going.
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 :) :)
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
You are an incredible human begin. I really do appreciate you and your channel. Thank you sincerely
Good video, expected this to be all about 8bit games but was pleased to see it's about general programming
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
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
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.
There is some rock solid advice here, wish I had known some of this when I was starting!
This is what I needed to hear to get back into coding again
Excellent Ryder Ant!
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 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!
Mate, thanks a lot, I'm starting out and this was really reassuring! Hope the best for you mate!
I started learning to code when I was 11, this was in QuickBasic for Dos. I just was browsing the files on my windows 3.1 machine and found qb.exe and ran it. I spent the next few months reading the help me file and looking over the example programs, and then learned how to use every function that was listen in the help me file. From there I created loops that counted and displayed it on screen, to then having it count and bounce the output around the screen like mystify, to then remaking the mystify screen saver exactly in dos. Loading wav files and displaying the waveform on the screen, they were 8-bit mono files which were far easier to work with at the time. This was during summer vacation and when school stared again I took computer programming as an elective. In my class for the end of year project I had created a complete painting program that loaded in and saved file in bmp and pcx format, flood fill, 256 colors, air brush, basically everything you find in the paint program windows ships with now, but at the time windows paint only supported 16 colors, so my app was amazing. The hardest thing really was learning how to initialize and get data from the mouse, because this was DOS and getting mouse inputs wasn't as easy to do as it is for VisualBasic (or whatever they call it these days). The class required I handed in the final project with all the code written out on paper so the teacher could check it, lol. My app was a little over 4,000 lines of code. You can make great things in short time, but as this video describes you need to start from the ground up.
Aww, this is heart-warming. Thank you very much for these 8-Bits of Advice which are truly difficult to get around my life-style.
I just wonder: Could you tell me how long have you been programing for? I'm just really curious, thanks :)
Probably the best list like this I've ever heard. Thank you.
you have an awesome channel, I have a physics degree, currently enrolled in a physics and machine learning master's program, but programming turned out to be the thing I'm most motivated to do! and watching and learning with you is making me more confident to follow a career in this area, thank you!!
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!
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...
Thank you so much for this content! This is gold. 👌🏽
I'm a junior in college and impostor syndrome is real. It felt really good to watch this and realize how much I've learned over the past 2.5 years. And the cherry on top was realizing that I've actually been writing decent quality code. So yeah.. I'm gonna go be kind to myself 😇🙏🏽
A wonderful resource! I unintentionally followed all of these in my earliest days of programming and I don't want to be the arrogant type but I think I'm doing pretty damn well for myself. I'll be sending this to my own teacher so they can actually teach this in school because it's really bloody valuable stuff.
you're awesome and seem authentically kind hearted
Well thank you Andrew, I try to just be honest all the time.
I have 6 years experience in web development but i still find this video very helpfull.
Great advice thank you. I am almost finished my 1st year in a software development diploma, and videos like yours are extremely helpful.
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
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😂🙈