Ex software engineer here - couldn't agree more. Learned so much trying to write assembly language on my first (ZX81) computer... not very well, but it worked!
I have to disagree a little here. During my studies, I had problems finding projects that I found really exciting. The result was that I always did some bullshit projects that somehow came to mind. It wasn't until the 4th semester that I started to find projects that really captivated me. If I had followed the instructions in this video, I would probably have dropped out of university long ago because I couldn't find anything that captivated me. The problem is that I like solving problems. But I'm not good at coming up with them. When I first started working, I could hardly save myself from problems. Today, my list is far longer than I can work through. From scripts for automation to extensions for IDEs, I've done all kinds of things. So, if you have a passion for programming but can't find anything that captivates you, then hang in there. Find partners and solve their problems together until you stumble upon something that captivates you. If you only chose the subject because of the supposedly good salary, believe me, it's not worth it. Otherwise, have fun.
@@ashrithreallyashrith6875 Yes. Think of something you really *really* want to program. You can start small (it doesn't have to be a huge program) but be ambitious. Good luck. Huw
@@LearnWithHuw Sir, I have come to realize a couple of things, after working my butt of in this IT field. First is, everybody all knows something is right or wrong, but they always end up doing the wrong things anyway. I don't know why that is, I just know that it is the "trend" now. And the vast majority of people always do this, myself included. Second, is that exercises and assignments are "Good" if you want to "impress" the employers, in a general way. Because, employers always give you assignment and exercises. However, the real projects do not work like that, at all. In fact, even companies don't work like that. When it comes to real projects, you always have to fix the code of the previous developers(Who already quit the job), and it is a huge mess to deal with. Doing exercises and assignment will not train you on how to fix that. Third, in my opinion, just go to github, clone a project, then work on top of that project by building more and more features that you can think of. I think that's more efficient than practicing exercises. Courses are full of exercises and stuff, yet, I have seen guys who can't program after getting done with the courses. The best way to me, is either build something on top of the already existing projects(There are tons of them on github), or learn by interacting with your friends, and both will check each other's mistakes to correct them.
yes but no. it's not about exercises or tutorial. its about specialize. you dig deep into a specific or two-three specific languages. tutorials enable the ground work. you want a .NET backend, Angular frontend app. here's a limited version. you want to make a nextjs app with authentication and use APIs and services ? here you go. want to learn cloud like azure, aws or google? here you got an app or similar use these to build something solid. now you got your feet wet. time to continue if you like. 😂
From my perspective, as soon as I understood Input, Processing, and Output, and the fact that Information Technology is all about storing, manipulating and displaying information, programming became more and more fun. Logic is also important. Fun fact is that you don't have to cram the syntax, that's what docs are for. Just sketch, or visualize your output then figure out your input and how you'll manipulate that input to form your output. Example: I want to register a student to my system. First thing, I will visualize my output, maybe a form to collect the student's information. Then I will model the student's information (data) to store it programmatically. Then once that has been stored in my database, the rest is to display it whenever it's needed.
Starting with the view? I always start with the logic to make it work independently of the view so that the system could be hosted on a server, run in a console application or a desktop app.
@@fumano2679 Starting with the output helps me see the vision. It's what almost everybody does, they put vision boards, flow charts, and or sketches to see the vision. Then they execute. The input comes from seeing the output, that's how I approach programming.
I couldn't agree more! Do projects, finish projects, overcome obstacles! Even if you do the end result the wrong way you will learn SO much during that!
Couldn't agree more! When I stated programming in the 80s, I learned the basics (BASIC and 6502 machine code) from home computer magazines. And then I got really curious about computer graphics, particularly 2D platforms games like I used to watch people play in the arcades. I wanted to recreate my own version at home. We didn't have TH-cam or websites, we had to figure out algorithms all by ourselves, and self learn about compilers, memory and CPU architectures to optimize code for speedy execution. That's how I became a programmer, and everything I learned took me on to a professional software developer career.
Yes, that's right. It's great to have so much information a mouse-click away on TH-cam and the Internet but the only *real* learning has to be done the way it always was done. Best wishes Huw
I was asked if I wane do a degree in programming in at a university. I'm glad I didn't subscribed to that advice. My plan get the basics on a platform like solo learn. Python and c++. See what it can offer and go wild
I started a program in 2015 , it was a tool that generated normal maps through regular color textures. Today , it's a 3D application with a pbr viewer that takes a scene and bakes it using various path tracing methods, with also a pseudo realtime raytracing viewer , and distributed on gpu using cuda. not only it skyrocketed my C++/OpenGL/Cuda skills , but it taught me CMake , build configurations , avoiding circular dependencies , proper interfacing of modules , reduction of dependencies using various methods like pimpl, and dependency injections , unit testing , python/bash scripting for downloading + building custom libraries and integrating them into the main project, SIMD , multi threading , QT UI , and will probably add a bit of networking to distribute computation across multiple devices, proper architecture for a path tracing engine , performance optimization by ditching the virtual method dispatch and replacing it with static polymorphism . But hey ... companies want people solving leet code instead those dumb morons lol
Because leetcode-style problems are easy to assess in a short time (time is critical in recruiting). Also selected for smart, driven people willing to jump through hoops too.
Being good at Data Structure and Algorithms (DSA) is a strong indicator that you will be able to learn and be good at anything else. Besides it is precisely DSA that built the foundation of all those optimizations you used in the very first place. What companies want is not people who can use tools, but people who deeply understand tools, in order further those tools and create new ones.
Just want to add that exercises ARE useful at the beginning of learning to program to get practice with the different structures and learn their semantics. After that, bigger programs are mich more useful
I couldn't agree more. I started learning python about a month ago. I'm a dad and I work. I'm at a point where I'm just going through exercises and their solutions cos I'm still trying to wrap my head around some of the basics. I'm hoping that a few months from now, I'll have the confidence (and courage) to tackle more serious problems. 🙂
Writing games is the best way to learn programming or improve at it. This is just an axiom at this point. And the worst-leetcode and a corporate job. Dear youngsters, if you dream about perks and a job @ FAANG and not about all those cool apps/frameworks you invent, please don't torture yourself/your code reviewers. Just start climbing the corporate ladder right away instead of doing precisely that only ten years later.
I think a better way to put this is to work on projects, not code challenges if I'm understanding you right. My university focuses a lot on projects, like file system explorers, games, compiler, etc. Those kinds of assignments are wildly useful.
Oh, I agree. If they are encouraging you to develop fully-fledged programs that's a lot different (and much better) than the typical "coding assignments" that people spend so much time on.
The stepping stone to being a good programmer is to understand the language fundamentals. You can't write large programs without that. And so learn to solve the small problems the teacher gives you and then advance to complex programs
As a Counterpoint to this opinion: all large programs consist of many, many small programs, and you can learn the language better by being motivated throughout because you have something that you really want to do. That's very hard to feel for small problems. I think the mindset that thrives on small problems is much more of a mathematical mindset.
@@LiterateProgramming as a counter counterpoint think of all that you'll learn by building an entire house without learning anything about wiring, plumbing, pouring concrete, or industry standards related to building safety. i think this is a ridiculous mindset that sounds profound on the surface but is a facade for gatekeeping a skill set from a wide range of people who could learn it methodically, on behalf of a bunch of elitists who believe you should just be smart enough to grasp it as a whole and muddle your way through until it clicks.
@@stegwise I didn't suggest that one could do without learning the material methodically by building it up from first principles, with many small examples etc. I did not suggest replacing the entire class or learning experience by a large project - but based on my experience, except a small elite of people already dedicated to programming, the large number of students (these days) will not experiment, they do not appreciate method, and they might have to be lured into the belly of the beast. Granted, many of these probably shouldn't be programming in the first place. I also agree with your summarizing comment though that's not what I was advocating. The name of my TH-cam channel kind of gives that away: "Literate Programming" is not for the faint-hearted or the weak-willed, and it is the opposite of "muddling through ... until it clicks" - it's structured, methodical, modular and mindful of both the human and the machine. I picked it up as a graduate student a long time ago, and it saved me from tinkering.
I started programming in the early 1980s. My first program drew a solid filled circle on the screen based on the size and color provided by the user. My second program was a checkbook balancer/budget tracker. It too had tens of thousands of lines of code. I had no idea what was doing and I failed a lot, but I learned way more by building an actual application than I have through any other methods.
Writing own programs is just a prerequisite I would say. It's like learning a foreign language just by speaking. Reading, analysing and understanding an existing code written by other programmers is the next level of mastering. And the final milestone to become a programmer is contribution to existing projects, fixing bugs, design and development new features. Thanks to open source everybody can easily learn all of those elements. 🙂
Okay, but I have the opposite problem. I have worked on too many projects before understanding data structures and algorithms, and other significant things. University is actually useful to me, it has improved my logical thinking tremendously. At university, I discovered competitive programming, and I'm working towards becoming a grandmaster in codeforces. Before you ask, I did have knowledge of data structures. It's kind of not possible to not understand them at all and make fairly complex projects. But I did not actually learn them past the basics, I just read up on what I needed to know to get my game working, I understood the basic logic behind them, but did not try to learn them more deeply and when it comes to algorithms I could count the ones I knew on my left hand's fingers and the rest I'd just forget right after copy-pasting and modifying the part of code I needed for my project.
I do agree that project help. But I would say start by programming a command line project. Once you master that you can than move on to learning about GUI and building a GUI project. Biggest thing is to know how data is transferred across many file or classes. This depends on the language you are learning.
I largely agree with your sentiment. Certainly you don't become an engineer without doing any engineering... But exercises can be useful too. The exercises in casey muratoris performance aware programming series, for example, seem fairly well considered. It depends entirely on the objective of the material. If you're trying to familiarise somebody with fundamentals of formal grammars, or more importantly, trying to introduce a process such as how to take a piece of logic and achieve that same thing but faster, or how to use a debugger to observe the logic as it's executing and observe as the programs state changes over the time, then exercises can be particularly useful. More so, probably, than trying to learn such procedures and methods on arbitrary logic. I think beginners and people trying to gain insight into something new should begin with exercises. But I definitely agree it's no substitute for then putting that knowledge into real world application. It's like training muscles in isolation instead of training the body as a whole. But this is at the core of why everybody says they learned everything on the job. Or why people say they learned so much from their first real world project. But then deliberate practice is also a thing. And that's pretty essential.
How i actually became better was that i stopped for awhile and just thought about concept and broke it down with pseudo code. Then i looked at other people's code and try to break the code down in my mind to be able to visualize the steps that are happening. Then maybe write the same thing (get the same results) but in a different way; it doesn't matter if it's more efficient or not. Other than that just looking up parameters and arguments for functions can help you understand the layout and syntax of the language.
I totally agree with that point. As you start programming for a big project you face many problems that would multiply your learning speed instead of making some slow progress by just solving some simple coding exercises.
As a college student learning programming, I do agree. In order to do so though you have to learn how to understand documentation and APIs. THAT would be a good course any beginner programmer would learn from.
You're absolutely right! I'm a self taught programmer. When you think like a programmer you don't have any problem finding programming tasks. Your hard drive is full of doublets of files? Write a program! You have to produce a series of letters with a given skeleton but some changing passages? Write a program! You want to show what company near you have service times when you are closed? Write a program! For me it's not the problem to find a task. I'm never happy with my programs they have to be refactored, bugs occur I never thought of (the SD card of my pi was trashed full of log files so my program refused to run). Often I see my code and think: too complicated, ugly, messy! I'm never finished!
Before getting into programming I didn't like messing with computers in general but now I also sometimes write bash commands to make my life easier, like deleting a bunch of json files downloaded via google drive exports. Still, I had a bad experience with Linux in college (since I installed it on a VM which ran out of memory a loot) and was lazy back then in terms of actually writing code, not only learning concepts and solving things in my head/on paper 😅 Now after some professional experience I mostly believe practice is better, though I still challenge myself with Leetcode (and this makes me more ready for a potential swe role, 'cause big companies swear on it 😅)
And also (which many people don't seem to understand) the fundamental importance of creating a logical and maintainable structure for a program. Best wishes Huw
Huw's a fantastic name, mate. Great video, too. I, like many others (id wager) have been looking for 'exercises' to practice to make coding a breeze. I envisioned 'wax on, wax off' type drills to make me a great programmer without any effort. There are no shortcuts to success, anyone saying otherwise will try and put their hand in your pocket.
Just want to say, a a beginner myself, that i think exercises and assignments are crucial for beginners to really get a hold of the basic. But within a couple months (or weeks), one should be able to delve into attempting more serious programs. Thank you.
Wrote my first real program in 1999 for a friend. He is a gourmet cook with hundreds of recipes that he wanted to store in a database, MS Access in those days. He was using some other program and was able to export his recipe data to a delimited file and I managed after several attempts to parse it into a single Access table. I then wrote a Visual Basic 6 form with a grid control on it to display the recipes. Added some functionality to sort, import/export and report on the recipes, they were just text files, so he could email them to his friends when he had a new recipe. Funny thing he's still using the same application today! Software does have a life of it's own it seems and I've been writing software ever since.
@@LearnWithHuw Over the years whenever he would buy a new computer he would contact me to ask if his recipe program was still going to work. So far it alway has. It's just an exe file with an Access database so why wouldn't it?
right. it's like playing a video game, if you want to finish it, you spend time on it, level by level until you get familiar with it. programming is just a tool like an items and unlockable movements that progress you to the next level. so if you want to finish the game you dive to unknown and make repeatable mistakes and overcome it.
As a self taught programmer that got jobs as Software, Data and MLOps engineer. I never did exercises, I just build stuff. Like a database rn. A bad one, with it's own stupid query language and memory leaks. But man I am learning, like crazy. I never touched a system programming language and now I start to really understand how memory work, how to make something efficient, etc. I did started adventofcode this year, not really an exercise but this is good practice I think.
i fully agree. I am currently learning Python, i’m pretty much a newbie based on my standards, but thinking with your own head is the key to being a programmer. An exercise will only make you able to create something someone else wanted you to make.
There is another great benefit to writing whole programs: you have to learn how to create a "structure" for the code, one that is understandable, reliable and maintainable. This is something that you can never learn from coding exercises.
I generally agree with the overall thesis this fine gentleman is making. Yes, you should ideally be applying your software engineering skills to projects. And yes, the ultimate goal of software is to build useful things. However, exercises can still be useful to those who need minor stepping stones before they feel confident to tackle larger scale projects. But think of that as a training exercise before a real “sparring session”. I personally prefer taking a moment to do some reading and smaller exercises, THEN I’ll tackle the project. At least then I’ll have an intuition of where to start a solution in a larger project that might feel daunting.
@@1Lll_llllllLLLLllllll_llL1 i have two degrees in music and cant find a job. ive been trying to study code and ive got one thing on Github, but i have yet to make a full website. my back aches because im fat. i did the music thing when i was hip and cool. now i dont know what to do as im aging...... you wish you were a musician.... i wish i was a programmer. go figure lmao
I'm a graduate in Computer Science and I am now unemployed and trying to insert myself in a programming career. Yes, in college we mostly had lists full of exercises and while I do recognize those were important for me to understand the basics of programming, the main issue I'm facing now is the one said in the video. Exercises don't teach you how to solve actual real world problems, they have "ready fornulas" that can be used to solve that one exercise and that's it, it's more of a mechanical thing than logical. Now to understand how to actually develop a software I'm having to work my ass off and do some research to find solutions for my programming problems. Each solution is unique and it is based on the specific requirements of a software, thinking is better than just following ready formulas.
It's a great shame, I think, that so many courses fail to teach (or, fail to encourage students to learn, I should say! 🙂) how to write, structure and maintain complete programs. Still, this is something you can do yourself and anyone who does this will learn a huge amount that those "academic exercises" won't teach. I hope you make good progress. Best wishes Huw
I wrote a database program in Delphi. Had a nervous breakdown getting it working. After some time I redesigned it better and it works. The experience was hard but made me think about it really hard. To this day I am thankful for that nervous breakdown.
I agree that writing real programs is critically important, as is _reading_ real programs (perhaps even more so), but exercises are not completely useless. All forms of practice will help you improve your craft, and it's much more important that you practice than how you practice. Most students spend all day on instagram, reddit, tiktok, etc. and that is their true downfall. In order to learn programming, you need to actually program, who knew!?
How do I write program if I don't know ABC yet? How can I start writing programs from day one? First I got to learn and practice exercises. It's like saying "why don't you do integration and calculus and trigonometry" when the person is learning subtraction, multiplication.
You start by learning enough to get started. What's a variable? What's a data type? What's a function? Then you start writing functions with variables and data types. Then you want to do something repetitive so you add a loop. And so on. The "exercises" then become an intrinsic part of learning to write programs - real programs. You learn new things when you need to learn them in order to solve a problem in your program. It is, in my view, counterproductive to solve exercises for the sake of solving exercises. You *must* write programs. Writing programs is a very different skill from solving exercises. Best wishes Huw
Agree 100% - makes total sense to me. If you are in any way interested in programming, you will have no problem at all finding significant projects to work on!
When I learnt programming I would do the exercises and then turn them in-to real world programmes, this was frowned upon, but I kept doing it my way and as you have pointed out you learn so much more.
That's a very good way of tackling he problem. Anyone who feels weighed down by exercises and assignments should do exactly that! Many thanks for the comment. Huw
I am a student in my final degree of CS bachelors in France . I respect your opinion because i did SO many projects during my curriculum and all of them were failed ones. I mean yes we created apps we choosed even games that were composed of small exercices .. but .. never worked ! I had like a trauma of big projects that didn't work I mean , whenever the exercices' scale grew bigger and algorithms got complicated, they became more difficult for me to make them work and I feel I'm lost ! But what I learnt from the experience is exercices that work are just like small programs And a programmer must relate to them in some way and never get scared of the size of the project or how it is unrelated to them !
In that regards , I advise students that face my problems to start and see big programs as small exercices ! I discovered by experience for example this year that trying to document a code you've written makes you detect why it isn't working and makes it seem like it's a small exercice you have just solved ! I am trying to take advantage of this strategy and this seems like it is starting to work and makes big code seems like smaller programs Never start from zero and always be a detective Because a programmer is a detective! He tries to find the patterns in all programs And creates a reasoning that is easy for him to understand, manage and maintain Never be scared to ask for help , take advantage from others' help In the same time , analyse , understand And test , test , test ! The problem is smaller than you think And taking others' code especially if it's more beautiful or elegant or simply works is OK ! However Never understanding the pattern behind it won't make you a real programmer
Sounds like a planning issue. Writing code is a very small part of it. The rest is planning and solutioning. Harder to get lost if you have things broken into users stories and focus on mvps.
@@bertski7950 the time you replied I was already in the peak of my sufferings because of my ancient method in parallel programming xD Really one must plan before writing code the less modifications done on the actual code ( try and error xD ) the better It's like imagining the code being executed before It's even tested Testing should really be a verification that the code works rather than the main concern Thanks again for your tip it came in a good time xD
Totally agree with you. I started programming in the 80s with BASIC, then with DBASE and FoxBase, in my country at time internet was very limited and no online documentation, just books. No windows, just DOS.
It's impossible for modern learners to do that now, I think. It takes discipline to work things out rather than Googling. But it's a discipline worth acquiring! Best wishes Huw
I'm trying to expand my knowledge in a new area - Python programming. Also, I like django and already completed two or three really big courses which were supposed to teach me how to create django apps. But, instead, when I've started my own project, I've burned out, felt like I've learned nothing. And in time left this idea. Now, I'm starting for the 3rd time. I've already refreshed Python with one of the specialization course which was good - overall refresh of basic Python language structure. And now, I'm starting again, my new project. And I hope that this time I'm not going to let go but keep it pushing until MVP and then add extra functions layer by layer. Thank you for this short and important message - to dig into my own "passionate project" not another django course. BTW: I'm also learning to play drums! I want to be a rockstar and I'm learning rock grooves&fills ha ha ha :D
Keep at it! If you hit a barrier or get bored, go and play those drums then come back to programming when you feel more positive. Make sure you don't get so frustrated that it stops being fun. Good luck!
this video is absolutely a gem! Great advice. The analogy of programmer and musician was insightful and made me think what would I like to work on really. I usually say I don't know what to code and ask for ideas because I implicitly was thinking to myself what can I program right now with my skills that I can see end to end how to do. But this video made me think outside my current abilities and just focus on what do i find interesting and what would i like to be able to program and realize that it would stretch me and force me to learn things which is great. Just like with music, a musician hears a song and they just have to play it and learn it and they get to it and they find it makes them do things they can't do presently. I love all of this but I have a question. What or how do you go about programming something that is way outside your current knowledge and abilities? You wouldn't know the roadmap on what to do to get to the end goal. I love converters and would really like to make a converter that could take a epub file and make it a pdf. I use these all the time. But I have no clue how to make one. Or I would love a program that would automatically click the skip ad button on youtube videos and even better is just mute and black out the screen during ads. But I have no clue how to do that either or where to start researching. Do you have advice on how to about building software that does something you have no clue where to start? Thanks. I think someone who could mentor a programmer on their projects would be super cool. So if you wanted to do 1:1 mentoring where you have a introductory call and hear the project idea and you know what the person needs to do, then they could pay you to mentor them and build out a roadmap on how to accomplish their software goal. That is something I would pay for to save me time having to research so much. And then it might be that after that I know enough how to research on my own for projects that are in the same domain. But yeah if i am just starting out on my first project that is I/O device programming heavy and I don't realize that, then paying someone for that first mentoring would be good and then other I/O projects would be easier since I have enough fundamental knowledge of that domain. Then if I had a project that was OS heavy and didn't realize it, another mentorship cycle would be good for that.
Thank you. I can't advise in detail on a specific project goal. As a general principle, though, I'd say that if you feel a project is beyond your present ability, break it down into parts and start with the part you think seems most approachable. Then gradually build towards the more complex elements. I'll put another video online soon that tries to offer a few ideas on this. Good luck! Huw
Start learning a language, start doing lots of small exercises to try what you've learnt, and then start working on a big(ger) project. Exercises are important. Projects are also important.
I think a better plan would be to build a tool. Build a small program that does something useful, but that you can extend. There's no real danger that you won't be able to make your program bigger. The danger is that you won't be able to break it into composable pieces that you can reuse. So, starting with a smaller tool, first, means you can complete a working product, which is a sizable achievement in itself in coding, and that you can think about how components work together, which is the grand slam of learning coding. Composability is systems thinking.
If you are new to coding, write this - you have a cube (rocket) and horizontal line (land), client should be able to pick fuel type and planet, both have different take off patern , on "up" key rocket should take off accordingly. Happy coding :)
I agree writing programs is the best way to learn programming. However, the unfortunate reality of getting a programming job, especially FAANG / Big Tech and startup jobs, is you have to learn how to solve medium to hard Leetcode style programming problems in 30 to 45 minutes (possibly via whiteboard) because companies use those types of problems to filter candidates.
I was about to say that. No matter how many and impressive projects you build, if you cant solve problems you are given in the hiring process you cant get a job.
I know html, css and some gml for gamemaker. Since I struggle a lot with gml I decided to learn c. I’m currently watching a 4 hr video of brocode to get started with c and after that I will write a text adventure game. Glad I clicked on this video it makes me confident in learning it.
I am learning web development, we used to solve those coding exercises, and when i tried to do some real world challenges i was lost. I had to go and learn a lot more.
I partially agree, but a lot of assignments are training you how to think logically. Learning a proof for why merge sort is O(n log n) isn’t really useful to building a crud app but is useful, however, for training you how to think in small steps.
my biggest heart break in coding is when I realized what I learned in school and the projects I did in school in C++ **didn't help** me in building real world program at work...because all I did was following a path or structured projects and not writing anything by myself. I put didn't help in ** ** because at that time that how I felt...but C++ help me learn many other language easily.
To be positive, I think *all* programming experience is valuable - even if it's only in teaching us what *not* to do in future. But I do think you are right: programming your own projects is an immensely important way of learning. Best wishes Huw
I discovered my best method is to recreate a game in my target language (I am trying to learn)by following a tutorial in a completely different source language(I also want to learn). This forces me to figure out how to perform a similar function in the target language. Then, I have a game in two different languages. I can repeat the process by swapping the languages and following a tutorial in the old target language, while recreating it in the source language. This forces me to learn the fundamentals and stay out of tutorial hell. It also helps with the problem of finding something to program.
Sounds reasonable. I think "tutorial hell" is a problem that many people grapple with (and I say that as someone responsible for lots of tutorials! 😂) Best wishes Huw
I would say that it is true but exercises can teach u concepts and practices that u wouldn't learn Attempting everything on ur own hands on coding is more beneficial but exercises have benefits too
I want to see this man teach a beginner in programming, code complex programs right away without using exercises and/or problems. If he cannot then he should not say that his theory is the "only way" to learn programming.
@@LearnWithHuw Thank you for your response. But I haven't seen in my entire life of someone who become a good programmer who started building complex program right away. This is from a guy who have been teaching programming for the last 15 years or so. And I have a lot of students who become senior programmers or working as lead in medium size to large software company. But they all started learning the basics through exercises before building complex ones. I am also teaching on a country right now wherein kids come into college without even having seen a single programming code let alone write one. Sure building complex stuff will speed up your programming skills. But claiming that building complex program right away for a new programmer is the only way to learn programming is just silly. And please don't sell me books so that I will learn your stuff...lol
@@LearnWithHuwHi there! Is this advice for more intermediate programmers, or for beginners too, if so, what projects do they work on? I teach Python, so I’d really appreciate some coding project ideas my students can do, my teaching method is very hands on, I start from small exercise then do projects based on their level.
@@AayaatAlakhras-Codegirls I think beginners can be guided through moderately large projects as long as they take it a small bit at a time. Watch out for a "code along" video I'll publish later this week. This will guide a beginner through the process of writing an adventure game. The first lesson is just one class: a Room. But once they've coded that it's a short hop to an entire map. Each step introduces 1 or 2 new ideas and soon they are building a *real* program rather than learning techniques and syntax one (unrelated) problem at a time. I think most people get much more satisfaction from creating fairly big programs than they do from solving coding exercises but that doesn't mean that they don't learn all the same skills along the way. (Anyway, that's how I see it!) Best wishes Huw
Exercises makes a concept well understood then you apply this understanding on real projects to learn more. Exercises focus on one concept at a time which make it easier lo learn while a project include many concepts at a time that may become overwhelming.
This great, there are projects i had in mind but have no real idea where to start but i will just do it. Text editor: i can follow some tuts for this to guide me. Renderer : i want to make something that looks really pretty Drawing software: i feel truly alone on this one everytime i seaech up how to make a drawing software i get drawing tutorials instead, it made search engines feel so worthless looking for stuff for this. But i really want to do it. I want to make an app/ sodtware that me my friends and other people can truly enjoy so i won't give up on it.
Not a programmer here. However, as a visual artist (drawing, sculpting, mix media). The first 9 years of doing art I had no one to tell me how to do any of it. So I would copy(not trace) other artist works. Trying to figure out how they did it. I would learn a lot from each project I copied. Then I would apply different techniques to my own original projects that I learned from copying. There was some point along the way I just started doing my own thing but with influences from that learning period. So if you were learning to program would it not be a good idea to try and copy someone else’s program without looking at their code. Or is that also a no no.
If you can find a good model (in art, I guess that would be like copying Bridgeman or Loomis), yes, copying can be very useful. But maybe a better way of describing my recommended approach in these terms is to work at creating simple but complete projects (like building a figure from a gesture drawing and then adding the details) rather than becoming very good at doing tiny component parts - that is like doing endless exercises to draw eyes and fingers but never having any skill at drawing a whole figure. Best wishes Huw
I'm making games, too. A virtual card game. Its taught me a lot, so far. Thank God for LLM's. Any question is quickly answered, but I try not to copy-paste
This was my biggest issue with my coursework in university. I wanted to make projects and my professors wanted vocab tests and reinventing the wheel types of assignments.
I agree with you about the exercises. How many times can you write a converter or a lunar lander? Those projects are for the basics like IPO charts, flowcharts and converting logic to algorithms. When I think back, writing a MS Paint rip-off in C++ is where I realized what coding really involved. I loved the idea of having to research the graphics code. Heck, it makes me want to write something I haven't right now.
You are also remembering the excitement of creating real programs. That is another thing that students miss when they confine their efforts to solving exercises. The burning enthusiasm to write programs needs to be instilled at as early a stage as possible (in my view). Best wishes Huw
i am not a programmer but i love programming on my own desire, the importante things are only 2, just define the initials and update the initials thats it, functions are just way to manipulate the initials so you can get the final output. and thats it
I learned to program by writing a web app used by 30 people, completely agree that a small program is different large program, cause it requires you to think deeply about architecture and stuff
The musician analogy is so perfect. I never thought about it that way. When I was learning to play the guitar I remember really wanting to be able to play the Country Roads song and music that sounded like it. I definitely lost that mindset when I first started learning software.
I've studied guitar (and a few other instruments) too and I've made all the learning mistakes that most other people make. You have to keep reminding yourself why you are doing it (learning an instrument or programming) and get yourself back on track! Best wishes Huw
100% agree. Solving little code puzzles is an entirely separate endeavor from writing actual software. Judging a potential employee based on one or two randomly chosen puzzles is a meaningless waste of time. It leaves the interview process wide open to personal bias, racism, and ageism.
Just my cents on this topic , you could have been more clear and emphasis that you mean leet code sort of questions. A better way to put it would be like - you can solve small problems but keep a big picture in mind on how you would apply those data structures to your problems. The way I see programming is like abstractions. You solve problems and build projects by fitting those abstractions on those problems. As someone else said, its also about storing and managing data. It reminds me of legos for some reason. Please if you disagree kindly add your opinions, I would love to hear them. Ah, another thing, theres not much room for ego. I mean, its better to keep that aside and take everything as a learning opportunity No one knows everything, and when it comes to algorithms as an author once said, you can't be satisfied and think thats the best it can be. Theres always room for improvements.
Before you start writing your peograms. You'll have to understand how to write basic programs which is where coding sites and programming online videos and exercises come in. Practice, then write your own.
btw, my second program was similar to you and it was I HUGE learning experience!!!!!!!!!! When you write big code you learn VERY QUICLEY to structure you code, but sadly most programmers today SUCK at it!
@@stevenbliss989 That's so true. And yet from the comments I can see so many people who are resistant to that idea. I always encourage people to be ambitious beyond their current skill level. That's when the hard-core learning begins!
I was teaching programming at a university for applied sciences for 5 years. In every semester, I recommended to choose your favourite Arcade Game (Pac Man, Frogger, Asteroids, whatever) and while I teach some math and coding concepts you go on with your project, that's the only homework. Those who did, evolved fine. Oh, I forgot: When I see a certain lack of skills for a student, then I keep him a certain exercise, just him. Plus: I fill that gap for everybody in the lecture (often, he's not the only one with that gap)
You’re absolutely right. I did a full degree and fortunately got a good job because I was good at coding challenges, but quickly realized I couldn’t build an application or write production code worth crap. I basically had to learn everything from scratch. University classes should be having students build functional software to learn, not just writing code to implement some algorithm 90% of students will never touch again.
I can see from some comments that are pro-example-solving that people are thinking "how can i pass tests to get my first job" rather than "how can I build a career as a really good programmer". The fixation on passing tests is really counterproductive. Thanks for your comment. Huw
Can't agree more. That's how I learnt front and backend. By making my own website and app from absolute scratch. Spent about 5 months full of mistakes and misery but in the end I learnt and improved beyond any crappy academical approach. No professor I know can build a website. Professors of my a$$ 😂
I’ve done some exercises to get familiar with the language, C mostly. From that I got the insight I needed to finally start to make a program. I do have a game in mind which is a card game using AI machine learning to train NPC’s . But it’s about to get so complicated now I’m about stop understanding what’ve done and why it works so far.
If a problem seems too complicated, break it down into smaller parts. Programs that seem too complicated usually are trying to do too much too quickly! Good luck.
This is a common problem! You think of a big project but when you want to code it, you are overwhelmed by the complexity. Start by making a list of all the little "bits" that are needed to make the whole program then figure out which bit is the most fundamental building block and start there. I've just started a new "code along" series that you might find helpful. The project is an adventure game. Eventually it will have a complex network of rooms, a player who can move, take and drop treasures. Treasures that can be put into containers. Puzzles that can be solved. File save/load, error-handling, command-processing and lots more. So where do I start? I have to work out what the most essential feature of the game is. Answer. A single room. That's it. Nothing else. One room. Once I have that I can try two rooms, then several rooms and so on. But right now, all I am coding is one Room. That's more or less how I would tackle any new project. th-cam.com/video/7T7Z-AsmR40/w-d-xo.htmlsi=Lv0-bZtDo5vKPQQ3
I was told to learn the basics of programming using C++, object-oriented programming, algorithms and data structures, and then move on to my own path, which is web development. I want your advice. I have completed everything, but what remains are algorithms and data structures. Should I stay to learn them or move on to the language used in the web?
Naturally, if you are following a course, you will be obliged to follow whatever path is set. If you are free to learn on your own, I am not sure that lots of work on C++ (etc.) will advance your studies of web development very much. While algorithms and data structures are essential, it would be better to work of developing something relevant to your end goals and learn the algorithms and data structures that you really need to rather than simply learn ever more of them which you will never use. Good luck!
@@LearnWithHuw I learn on my own, but if I learn on C# for the web, shall I leave my study of algorithms and data structures in C++ and complete it in c# or study it in everyone, Study alone , thank you
@ I can't say what exactly will be right for you. But it seems to me that you know what you really want to do already so you would be wise to do that. During your studies you will discover which algorithms you need and that is when you should study them. Studying algorithms without any real motivation or purpose is not the most interesting or productive way to go forward. From what you are saying, I think you already know what path you want to follow. So go for it! Best wishes Huw
Learning should ideally be a combination of watching (or reading) on the subject and actually sitting down at your computer and writing programs. You need some of both but it's when you write programs yourself that you will learn the most!
What a gem this video is! This should be an obvious fact yet this is so profound! Been wondering about the best way to learn coding/programming and there's just too many advices out there but this piece of advice just solidified and confirmed that I'm on the right track of learning. Keep creating man!
Hello, I started programming out of necessity, because I was not satisfied with the solutions on the software market, however I must say that learning from experience has a small problem, namely you can find that you have certain "knowledge gaps" which theoretically a well-structured course should cover.
I have nothing against well structured courses (I teach several myself! 🙂). However, knowledge is only theoretical until you put into use. In my view, the *real* learning happens when people create programs of their own. If they have to fill gaps along the way, they will learn and remember far more than they would merely by studying isolated problems with model solutions. Best wishes Huw
90% of all corporate programmers end up writing programms that other people thought of. That's the job of a software engineer. If you're learning, what "big complicated" programs should they write? If you find that tinkering with mechanics is your thing, you start with a bike or a soapbox car and not a real one. That is overwhelming. Many Rockstars also don't write their own songs. Also, you can write programs that actually work easily. The point of the exercises is to show the stuff that is necessary to a programm but not actually for its core function. If your only goal is a "working" peogramm you'll get one. With vulnerabilities and bugs. Among the most famous ones: sql injections. But sure, don't give them simple tasks that they can write in a week. Ask them what programs they want to write and let them try it when they say "a real time video chat" when you know, they barely manage to write a file manager.
Ex software engineer here - couldn't agree more. Learned so much trying to write assembly language on my first (ZX81) computer... not very well, but it worked!
A great way to learn (tough though 🙂 ).
Best wishes
Huw
I have to disagree a little here. During my studies, I had problems finding projects that I found really exciting. The result was that I always did some bullshit projects that somehow came to mind. It wasn't until the 4th semester that I started to find projects that really captivated me. If I had followed the instructions in this video, I would probably have dropped out of university long ago because I couldn't find anything that captivated me. The problem is that I like solving problems. But I'm not good at coming up with them.
When I first started working, I could hardly save myself from problems. Today, my list is far longer than I can work through. From scripts for automation to extensions for IDEs, I've done all kinds of things.
So, if you have a passion for programming but can't find anything that captivates you, then hang in there. Find partners and solve their problems together until you stumble upon something that captivates you. If you only chose the subject because of the supposedly good salary, believe me, it's not worth it. Otherwise, have fun.
What you do now?
Im an engineering student pursuing a cs degree, i never written a code before im in my first year and learning c and cpp, any suggestions
@@ashrithreallyashrith6875 Yes. Think of something you really *really* want to program. You can start small (it doesn't have to be a huge program) but be ambitious.
Good luck.
Huw
To the point. What many of us already know and yet here we are watching a video telling us, hoping it was something else we didn't know. Thank you.
Sometimes it helps all of us to be reminded of something we already knew, I think!
Thanks for the comment.
I did not know :)
@@franciscobautista3158what changed now that you do?
@@LearnWithHuw
Sir, I have come to realize a couple of things, after working my butt of in this IT field.
First is, everybody all knows something is right or wrong, but they always end up doing the wrong things anyway. I don't know why that is, I just know that it is the "trend" now. And the vast majority of people always do this, myself included.
Second, is that exercises and assignments are "Good" if you want to "impress" the employers, in a general way. Because, employers always give you assignment and exercises.
However, the real projects do not work like that, at all. In fact, even companies don't work like that. When it comes to real projects, you always have to fix the code of the previous developers(Who already quit the job), and it is a huge mess to deal with. Doing exercises and assignment will not train you on how to fix that.
Third, in my opinion, just go to github, clone a project, then work on top of that project by building more and more features that you can think of.
I think that's more efficient than practicing exercises. Courses are full of exercises and stuff, yet, I have seen guys who can't program after getting done with the courses.
The best way to me, is either build something on top of the already existing projects(There are tons of them on github), or learn by interacting with your friends, and both will check each other's mistakes to correct them.
yes but no. it's not about exercises or tutorial. its about specialize. you dig deep into a specific or two-three specific languages.
tutorials enable the ground work. you want a .NET backend, Angular frontend app. here's a limited version. you want to make a nextjs app with authentication and use APIs and services ? here you go.
want to learn cloud like azure, aws or google? here you got an app or similar use these to build something solid. now you got your feet wet. time to continue if you like. 😂
From my perspective, as soon as I understood Input, Processing, and Output, and the fact that Information Technology is all about storing, manipulating and displaying information, programming became more and more fun. Logic is also important.
Fun fact is that you don't have to cram the syntax, that's what docs are for. Just sketch, or visualize your output then figure out your input and how you'll manipulate that input to form your output.
Example: I want to register a student to my system. First thing, I will visualize my output, maybe a form to collect the student's information. Then I will model the student's information (data) to store it programmatically. Then once that has been stored in my database, the rest is to display it whenever it's needed.
Starting with the view? I always start with the logic to make it work independently of the view so that the system could be hosted on a server, run in a console application or a desktop app.
@@fumano2679 Starting with the output helps me see the vision. It's what almost everybody does, they put vision boards, flow charts, and or sketches to see the vision. Then they execute. The input comes from seeing the output, that's how I approach programming.
I couldn't agree more! Do projects, finish projects, overcome obstacles! Even if you do the end result the wrong way you will learn SO much during that!
Couldn't agree more! When I stated programming in the 80s, I learned the basics (BASIC and 6502 machine code) from home computer magazines. And then I got really curious about computer graphics, particularly 2D platforms games like I used to watch people play in the arcades. I wanted to recreate my own version at home. We didn't have TH-cam or websites, we had to figure out algorithms all by ourselves, and self learn about compilers, memory and CPU architectures to optimize code for speedy execution.
That's how I became a programmer, and everything I learned took me on to a professional software developer career.
Yes, that's right. It's great to have so much information a mouse-click away on TH-cam and the Internet but the only *real* learning has to be done the way it always was done.
Best wishes
Huw
I was asked if I wane do a degree in programming in at a university. I'm glad I didn't subscribed to that advice. My plan get the basics on a platform like solo learn. Python and c++. See what it can offer and go wild
I started a program in 2015 , it was a tool that generated normal maps through regular color textures.
Today , it's a 3D application with a pbr viewer that takes a scene and bakes it using various path tracing methods, with also a pseudo realtime raytracing viewer , and distributed on gpu using cuda.
not only it skyrocketed my C++/OpenGL/Cuda skills , but it taught me CMake , build configurations , avoiding circular dependencies , proper interfacing of modules , reduction of dependencies using various methods like pimpl, and dependency injections , unit testing , python/bash scripting for downloading + building custom libraries and integrating them into the main project, SIMD , multi threading , QT UI , and will probably add a bit of networking to distribute computation across multiple devices, proper architecture for a path tracing engine , performance optimization by ditching the virtual method dispatch and replacing it with static polymorphism .
But hey ... companies want people solving leet code instead those dumb morons lol
Because leetcode-style problems are easy to assess in a short time (time is critical in recruiting). Also selected for smart, driven people willing to jump through hoops too.
Being good at Data Structure and Algorithms (DSA) is a strong indicator that you will be able to learn and be good at anything else. Besides it is precisely DSA that built the foundation of all those optimizations you used in the very first place. What companies want is not people who can use tools, but people who deeply understand tools, in order further those tools and create new ones.
Just want to add that exercises ARE useful at the beginning of learning to program to get practice with the different structures and learn their semantics. After that, bigger programs are mich more useful
I couldn't agree more. I started learning python about a month ago. I'm a dad and I work. I'm at a point where I'm just going through exercises and their solutions cos I'm still trying to wrap my head around some of the basics. I'm hoping that a few months from now, I'll have the confidence (and courage) to tackle more serious problems. 🙂
Bravo@@rinjisrylopenes8534
Writing games is the best way to learn programming or improve at it. This is just an axiom at this point. And the worst-leetcode and a corporate job.
Dear youngsters, if you dream about perks and a job @ FAANG and not about all those cool apps/frameworks you invent, please don't torture yourself/your code reviewers. Just start climbing the corporate ladder right away instead of doing precisely that only ten years later.
I think a better way to put this is to work on projects, not code challenges if I'm understanding you right. My university focuses a lot on projects, like file system explorers, games, compiler, etc. Those kinds of assignments are wildly useful.
Oh, I agree. If they are encouraging you to develop fully-fledged programs that's a lot different (and much better) than the typical "coding assignments" that people spend so much time on.
The stepping stone to being a good programmer is to understand the language fundamentals. You can't write large programs without that. And so learn to solve the small problems the teacher gives you and then advance to complex programs
As a Counterpoint to this opinion: all large programs consist of many, many small programs, and you can learn the language better by being motivated throughout because you have something that you really want to do. That's very hard to feel for small problems. I think the mindset that thrives on small problems is much more of a mathematical mindset.
@@LiterateProgramming as a counter counterpoint think of all that you'll learn by building an entire house without learning anything about wiring, plumbing, pouring concrete, or industry standards related to building safety. i think this is a ridiculous mindset that sounds profound on the surface but is a facade for gatekeeping a skill set from a wide range of people who could learn it methodically, on behalf of a bunch of elitists who believe you should just be smart enough to grasp it as a whole and muddle your way through until it clicks.
@@stegwise I didn't suggest that one could do without learning the material methodically by building it up from first principles, with many small examples etc. I did not suggest replacing the entire class or learning experience by a large project - but based on my experience, except a small elite of people already dedicated to programming, the large number of students (these days) will not experiment, they do not appreciate method, and they might have to be lured into the belly of the beast. Granted, many of these probably shouldn't be programming in the first place. I also agree with your summarizing comment though that's not what I was advocating. The name of my TH-cam channel kind of gives that away: "Literate Programming" is not for the faint-hearted or the weak-willed, and it is the opposite of "muddling through ... until it clicks" - it's structured, methodical, modular and mindful of both the human and the machine. I picked it up as a graduate student a long time ago, and it saved me from tinkering.
Couldn't agree more. Nobody writes a complicated program on their 1st day of a computer science degree. You need to understand the fundamentals first.
No you only learn programming fundamentals to their core, through large projects.
I started programming in the early 1980s. My first program drew a solid filled circle on the screen based on the size and color provided by the user. My second program was a checkbook balancer/budget tracker. It too had tens of thousands of lines of code. I had no idea what was doing and I failed a lot, but I learned way more by building an actual application than I have through any other methods.
Absolutely. You have to be over-ambitious and you have to fail in order to learn.
Best wishes
Huw
Writing own programs is just a prerequisite I would say. It's like learning a foreign language just by speaking. Reading, analysing and understanding an existing code written by other programmers is the next level of mastering. And the final milestone to become a programmer is contribution to existing projects, fixing bugs, design and development new features. Thanks to open source everybody can easily learn all of those elements. 🙂
Okay, but I have the opposite problem. I have worked on too many projects before understanding data structures and algorithms, and other significant things. University is actually useful to me, it has improved my logical thinking tremendously. At university, I discovered competitive programming, and I'm working towards becoming a grandmaster in codeforces. Before you ask, I did have knowledge of data structures. It's kind of not possible to not understand them at all and make fairly complex projects. But I did not actually learn them past the basics, I just read up on what I needed to know to get my game working, I understood the basic logic behind them, but did not try to learn them more deeply and when it comes to algorithms I could count the ones I knew on my left hand's fingers and the rest I'd just forget right after copy-pasting and modifying the part of code I needed for my project.
Agree. I started really learning when I began writing projects for various purposes.
I do agree that project help. But I would say start by programming a command line project. Once you master that you can than move on to learning about GUI and building a GUI project. Biggest thing is to know how data is transferred across many file or classes. This depends on the language you are learning.
I largely agree with your sentiment. Certainly you don't become an engineer without doing any engineering... But exercises can be useful too. The exercises in casey muratoris performance aware programming series, for example, seem fairly well considered. It depends entirely on the objective of the material. If you're trying to familiarise somebody with fundamentals of formal grammars, or more importantly, trying to introduce a process such as how to take a piece of logic and achieve that same thing but faster, or how to use a debugger to observe the logic as it's executing and observe as the programs state changes over the time, then exercises can be particularly useful. More so, probably, than trying to learn such procedures and methods on arbitrary logic. I think beginners and people trying to gain insight into something new should begin with exercises. But I definitely agree it's no substitute for then putting that knowledge into real world application. It's like training muscles in isolation instead of training the body as a whole.
But this is at the core of why everybody says they learned everything on the job. Or why people say they learned so much from their first real world project.
But then deliberate practice is also a thing. And that's pretty essential.
How i actually became better was that i stopped for awhile and just thought about concept and broke it down with pseudo code. Then i looked at other people's code and try to break the code down in my mind to be able to visualize the steps that are happening. Then maybe write the same thing (get the same results) but in a different way; it doesn't matter if it's more efficient or not. Other than that just looking up parameters and arguments for functions can help you understand the layout and syntax of the language.
I totally agree with that point. As you start programming for a big project you face many problems that would multiply your learning speed instead of making some slow progress by just solving some simple coding exercises.
As a college student learning programming, I do agree. In order to do so though you have to learn how to understand documentation and APIs. THAT would be a good course any beginner programmer would learn from.
Also, learn how to debug and write code that makes debugging easier. This is a vital skill that many programmers overlook.
You're absolutely right! I'm a self taught programmer. When you think like a programmer you don't have any problem finding programming tasks.
Your hard drive is full of doublets of files? Write a program! You have to produce a series of letters with a given skeleton but some changing passages? Write a program! You want to show what company near you have service times when you are closed? Write a program!
For me it's not the problem to find a task. I'm never happy with my programs they have to be refactored, bugs occur I never thought of (the SD card of my pi was trashed full of log files so my program refused to run). Often I see my code and think: too complicated, ugly, messy! I'm never finished!
Before getting into programming I didn't like messing with computers in general but now I also sometimes write bash commands to make my life easier, like deleting a bunch of json files downloaded via google drive exports. Still, I had a bad experience with Linux in college (since I installed it on a VM which ran out of memory a loot) and was lazy back then in terms of actually writing code, not only learning concepts and solving things in my head/on paper 😅 Now after some professional experience I mostly believe practice is better, though I still challenge myself with Leetcode (and this makes me more ready for a potential swe role, 'cause big companies swear on it 😅)
I have to agree. And the key quality one learns THIS way is persistence while balancing the creative mode and the pedantic mode of mental work.
And also (which many people don't seem to understand) the fundamental importance of creating a logical and maintainable structure for a program.
Best wishes
Huw
Huw's a fantastic name, mate.
Great video, too.
I, like many others (id wager) have been looking for 'exercises' to practice to make coding a breeze. I envisioned 'wax on, wax off' type drills to make me a great programmer without any effort.
There are no shortcuts to success, anyone saying otherwise will try and put their hand in your pocket.
Many thanks. I'm always pleased when someone can take just one useful idea from one of my videos.
Best wishes
Huw
Just want to say, a a beginner myself, that i think exercises and assignments are crucial for beginners to really get a hold of the basic. But within a couple months (or weeks), one should be able to delve into attempting more serious programs.
Thank you.
Wrote my first real program in 1999 for a friend. He is a gourmet cook with hundreds of recipes that he wanted to store in a database, MS Access in those days. He was using some other program and was able to export his recipe data to a delimited file and I managed after several attempts to parse it into a single Access table. I then wrote a Visual Basic 6 form with a grid control on it to display the recipes. Added some functionality to sort, import/export and report on the recipes, they were just text files, so he could email them to his friends when he had a new recipe. Funny thing he's still using the same application today! Software does have a life of it's own it seems and I've been writing software ever since.
Wow! That program really has lasted well. I never understood why Microsoft ditched VB6.
@@LearnWithHuw Over the years whenever he would buy a new computer he would contact me to ask if his recipe program was still going to work. So far it alway has. It's just an exe file with an Access database so why wouldn't it?
right. it's like playing a video game, if you want to finish it, you spend time on it, level by level until you get familiar with it. programming is just a tool like an items and unlockable movements that progress you to the next level. so if you want to finish the game you dive to unknown and make repeatable mistakes and overcome it.
As a self taught programmer that got jobs as Software, Data and MLOps engineer. I never did exercises, I just build stuff.
Like a database rn. A bad one, with it's own stupid query language and memory leaks. But man I am learning, like crazy.
I never touched a system programming language and now I start to really understand how memory work, how to make something efficient, etc.
I did started adventofcode this year, not really an exercise but this is good practice I think.
i fully agree. I am currently learning Python, i’m pretty much a newbie based on my standards, but thinking with your own head is the key to being a programmer. An exercise will only make you able to create something someone else wanted you to make.
There is another great benefit to writing whole programs: you have to learn how to create a "structure" for the code, one that is understandable, reliable and maintainable. This is something that you can never learn from coding exercises.
I generally agree with the overall thesis this fine gentleman is making.
Yes, you should ideally be applying your software engineering skills to projects. And yes, the ultimate goal of software is to build useful things. However, exercises can still be useful to those who need minor stepping stones before they feel confident to tackle larger scale projects. But think of that as a training exercise before a real “sparring session”.
I personally prefer taking a moment to do some reading and smaller exercises, THEN I’ll tackle the project. At least then I’ll have an intuition of where to start a solution in a larger project that might feel daunting.
Kids don’t want to be rock stars anymore because they don’t listen to rock music. Everyone wants to be a billionaire youtuber tech ceo nowadays.
how i wish i became a musician than in front of a computer typing with my back aching
@@1Lll_llllllLLLLllllll_llL1 i have two degrees in music and cant find a job. ive been trying to study code and ive got one thing on Github, but i have yet to make a full website. my back aches because im fat. i did the music thing when i was hip and cool. now i dont know what to do as im aging...... you wish you were a musician.... i wish i was a programmer. go figure lmao
😂
u would be surprised by the amount of young people who listen to rock music
Wel yea
i think your right when i started using QML for UI develooment i started to understand OOP and a little bit of programming concepts
I'm a graduate in Computer Science and I am now unemployed and trying to insert myself in a programming career. Yes, in college we mostly had lists full of exercises and while I do recognize those were important for me to understand the basics of programming, the main issue I'm facing now is the one said in the video. Exercises don't teach you how to solve actual real world problems, they have "ready fornulas" that can be used to solve that one exercise and that's it, it's more of a mechanical thing than logical. Now to understand how to actually develop a software I'm having to work my ass off and do some research to find solutions for my programming problems. Each solution is unique and it is based on the specific requirements of a software, thinking is better than just following ready formulas.
It's a great shame, I think, that so many courses fail to teach (or, fail to encourage students to learn, I should say! 🙂) how to write, structure and maintain complete programs. Still, this is something you can do yourself and anyone who does this will learn a huge amount that those "academic exercises" won't teach.
I hope you make good progress.
Best wishes
Huw
I wrote a database program in Delphi. Had a nervous breakdown getting it working.
After some time I redesigned it better and it works. The experience was hard but made me think about it really hard.
To this day I am thankful for that nervous breakdown.
Yikes! Well, I won't advise other people to go quite that far!!! But I agree. The bad experiences can be the best lessons.
I agree that writing real programs is critically important, as is _reading_ real programs (perhaps even more so), but exercises are not completely useless. All forms of practice will help you improve your craft, and it's much more important that you practice than how you practice. Most students spend all day on instagram, reddit, tiktok, etc. and that is their true downfall. In order to learn programming, you need to actually program, who knew!?
How do I write program if I don't know ABC yet? How can I start writing programs from day one? First I got to learn and practice exercises.
It's like saying "why don't you do integration and calculus and trigonometry" when the person is learning subtraction, multiplication.
You start by learning enough to get started. What's a variable? What's a data type? What's a function? Then you start writing functions with variables and data types. Then you want to do something repetitive so you add a loop. And so on. The "exercises" then become an intrinsic part of learning to write programs - real programs. You learn new things when you need to learn them in order to solve a problem in your program. It is, in my view, counterproductive to solve exercises for the sake of solving exercises. You *must* write programs. Writing programs is a very different skill from solving exercises.
Best wishes
Huw
@LearnWithHuw 🫡❤️
I couldn't agree with you more on this. You hit the nail right on the head. That's great indeed!
Many thanks.
Agree 100% - makes total sense to me.
If you are in any way interested in programming, you will have no problem at all finding significant projects to work on!
Absolutely. Thanks for the comment.
When I learnt programming I would do the exercises and then turn them in-to real world programmes, this was frowned upon, but I kept doing it my way and as you have pointed out you learn so much more.
That's a very good way of tackling he problem. Anyone who feels weighed down by exercises and assignments should do exactly that!
Many thanks for the comment.
Huw
Start with pet projects- a simple calculator, a simple banking system based on files (no db), etc.
I am a student in my final degree of CS bachelors in France .
I respect your opinion
because i did SO many projects during my curriculum and all of them were failed ones. I mean yes we created apps we choosed even games that were composed of small exercices .. but .. never worked !
I had like a trauma of big projects
that didn't work
I mean , whenever the exercices' scale grew bigger and algorithms got complicated, they became more difficult for me to make them work and I feel I'm lost !
But what I learnt from the experience is exercices that work are just like small programs
And a programmer must relate to them in some way and never get scared of the size of the project or how it is unrelated to them !
In that regards , I advise students that face my problems to start and see big programs as small exercices ! I discovered by experience for example this year that trying to document a code you've written makes you detect why it isn't working and makes it seem like it's a small exercice you have just solved ! I am trying to take advantage of this strategy and this seems like it is starting to work and makes big code seems like smaller programs
Never start from zero and always be a detective
Because a programmer is a detective!
He tries to find the patterns in all programs And creates a reasoning that is easy for him to understand, manage and maintain
Never be scared to ask for help , take advantage from others' help
In the same time , analyse , understand
And test , test , test !
The problem is smaller than you think
And taking others' code especially if it's more beautiful or elegant or simply works is OK !
However Never understanding the pattern behind it won't make you a real programmer
Sounds like a planning issue. Writing code is a very small part of it. The rest is planning and solutioning. Harder to get lost if you have things broken into users stories and focus on mvps.
@@bertski7950 the time you replied I was already in the peak of my sufferings because of my ancient method in parallel programming xD
Really one must plan before writing code the less modifications done on the actual code ( try and error xD ) the better
It's like imagining the code being executed before It's even tested
Testing should really be a verification that the code works rather than the main concern
Thanks again for your tip it came in a good time xD
Totally agree with you. I started programming in the 80s with BASIC, then with DBASE and FoxBase, in my country at time internet was very limited and no online documentation, just books. No windows, just DOS.
It's impossible for modern learners to do that now, I think. It takes discipline to work things out rather than Googling. But it's a discipline worth acquiring!
Best wishes
Huw
I'm trying to expand my knowledge in a new area - Python programming. Also, I like django and already completed two or three really big courses which were supposed to teach me how to create django apps. But, instead, when I've started my own project, I've burned out, felt like I've learned nothing. And in time left this idea. Now, I'm starting for the 3rd time. I've already refreshed Python with one of the specialization course which was good - overall refresh of basic Python language structure. And now, I'm starting again, my new project. And I hope that this time I'm not going to let go but keep it pushing until MVP and then add extra functions layer by layer. Thank you for this short and important message - to dig into my own "passionate project" not another django course. BTW: I'm also learning to play drums! I want to be a rockstar and I'm learning rock grooves&fills ha ha ha :D
Keep at it! If you hit a barrier or get bored, go and play those drums then come back to programming when you feel more positive. Make sure you don't get so frustrated that it stops being fun. Good luck!
You are absolutely right! I agree with you 100% 😊🎉
this video is absolutely a gem! Great advice. The analogy of programmer and musician was insightful and made me think what would I like to work on really. I usually say I don't know what to code and ask for ideas because I implicitly was thinking to myself what can I program right now with my skills that I can see end to end how to do. But this video made me think outside my current abilities and just focus on what do i find interesting and what would i like to be able to program and realize that it would stretch me and force me to learn things which is great. Just like with music, a musician hears a song and they just have to play it and learn it and they get to it and they find it makes them do things they can't do presently.
I love all of this but I have a question. What or how do you go about programming something that is way outside your current knowledge and abilities? You wouldn't know the roadmap on what to do to get to the end goal. I love converters and would really like to make a converter that could take a epub file and make it a pdf. I use these all the time. But I have no clue how to make one. Or I would love a program that would automatically click the skip ad button on youtube videos and even better is just mute and black out the screen during ads. But I have no clue how to do that either or where to start researching. Do you have advice on how to about building software that does something you have no clue where to start? Thanks. I think someone who could mentor a programmer on their projects would be super cool. So if you wanted to do 1:1 mentoring where you have a introductory call and hear the project idea and you know what the person needs to do, then they could pay you to mentor them and build out a roadmap on how to accomplish their software goal. That is something I would pay for to save me time having to research so much. And then it might be that after that I know enough how to research on my own for projects that are in the same domain. But yeah if i am just starting out on my first project that is I/O device programming heavy and I don't realize that, then paying someone for that first mentoring would be good and then other I/O projects would be easier since I have enough fundamental knowledge of that domain. Then if I had a project that was OS heavy and didn't realize it, another mentorship cycle would be good for that.
Thank you. I can't advise in detail on a specific project goal. As a general principle, though, I'd say that if you feel a project is beyond your present ability, break it down into parts and start with the part you think seems most approachable. Then gradually build towards the more complex elements.
I'll put another video online soon that tries to offer a few ideas on this.
Good luck!
Huw
Start learning a language, start doing lots of small exercises to try what you've learnt, and then start working on a big(ger) project. Exercises are important. Projects are also important.
I loved your c programming language course. It was really beneficial and interesting. Thank You 😊 🙏🏽
That's very kind of you to say so. I'm glad it was useful.
Best wishes
Huw
I think a better plan would be to build a tool. Build a small program that does something useful, but that you can extend. There's no real danger that you won't be able to make your program bigger. The danger is that you won't be able to break it into composable pieces that you can reuse. So, starting with a smaller tool, first, means you can complete a working product, which is a sizable achievement in itself in coding, and that you can think about how components work together, which is the grand slam of learning coding. Composability is systems thinking.
If you are new to coding, write this - you have a cube (rocket) and horizontal line (land), client should be able to pick fuel type and planet, both have different take off patern , on "up" key rocket should take off accordingly. Happy coding :)
I agree writing programs is the best way to learn programming. However, the unfortunate reality of getting a programming job, especially FAANG / Big Tech and startup jobs, is you have to learn how to solve medium to hard Leetcode style programming problems in 30 to 45 minutes (possibly via whiteboard) because companies use those types of problems to filter candidates.
I was about to say that. No matter how many and impressive projects you build, if you cant solve problems you are given in the hiring process you cant get a job.
I know html, css and some gml for gamemaker. Since I struggle a lot with gml I decided to learn c. I’m currently watching a 4 hr video of brocode to get started with c and after that I will write a text adventure game. Glad I clicked on this video it makes me confident in learning it.
C is quite a challenging language so be prepared for setbacks. However, once you know C, other languages are much less intimidating.
Good luck!
I will keep working in my engine, thank you. ❤
Sir, You are the best.
Your honesty is helpful.
Thank you!
I am learning web development, we used to solve those coding exercises, and when i tried to do some real world challenges i was lost. I had to go and learn a lot more.
That's when the "real world" hits you. At least, you survived the challenge!
Best wishes
Huw
@@LearnWithHuw yeah exactly, i was shocked and excited cuz i found out that bugs and errors are the best teachers... And docs obviously 😅.
Yeah you are right, writing own code is real programming but excersises are just an introduction.
I partially agree, but a lot of assignments are training you how to think logically. Learning a proof for why merge sort is O(n log n) isn’t really useful to building a crud app but is useful, however, for training you how to think in small steps.
my biggest heart break in coding is when I realized what I learned in school and the projects I did in school in C++ **didn't help** me in building real world program at work...because all I did was following a path or structured projects and not writing anything by myself. I put didn't help in ** ** because at that time that how I felt...but C++ help me learn many other language easily.
To be positive, I think *all* programming experience is valuable - even if it's only in teaching us what *not* to do in future. But I do think you are right: programming your own projects is an immensely important way of learning.
Best wishes
Huw
I discovered my best method is to recreate a game in my target language (I am trying to learn)by following a tutorial in a completely different source language(I also want to learn). This forces me to figure out how to perform a similar function in the target language. Then, I have a game in two different languages. I can repeat the process by swapping the languages and following a tutorial in the old target language, while recreating it in the source language. This forces me to learn the fundamentals and stay out of tutorial hell. It also helps with the problem of finding something to program.
Sounds reasonable. I think "tutorial hell" is a problem that many people grapple with (and I say that as someone responsible for lots of tutorials! 😂)
Best wishes
Huw
I would say that it is true but exercises can teach u concepts and practices that u wouldn't learn Attempting everything on ur own hands on coding is more beneficial but exercises have benefits too
Im an engineering student pursuing a cs degree, i never written a code before im in my first year and learning c and cpp, any suggestions
This is very good advice and is the reason i argue that students should learn GUIs first. Today people use GUI applications not CLI.
I want to see this man teach a beginner in programming, code complex programs right away without using exercises and/or problems. If he cannot then he should not say that his theory is the "only way" to learn programming.
If you follow any of my courses or read any of my books, your wish will be granted. 🙂
@@LearnWithHuw Thank you for your response. But I haven't seen in my entire life of someone who become a good programmer who started building complex program right away. This is from a guy who have been teaching programming for the last 15 years or so. And I have a lot of students who become senior programmers or working as lead in medium size to large software company. But they all started learning the basics through exercises before building complex ones. I am also teaching on a country right now wherein kids come into college without even having seen a single programming code let alone write one. Sure building complex stuff will speed up your programming skills. But claiming that building complex program right away for a new programmer is the only way to learn programming is just silly. And please don't sell me books so that I will learn your stuff...lol
@@EdperCastro You clearly haven't met as many programmers as I have! 🙂
Best wishes
Huw
@@LearnWithHuwHi there!
Is this advice for more intermediate programmers, or for beginners too, if so, what projects do they work on? I teach Python, so I’d really appreciate some coding project ideas my students can do, my teaching method is very hands on, I start from small exercise then do projects based on their level.
@@AayaatAlakhras-Codegirls I think beginners can be guided through moderately large projects as long as they take it a small bit at a time. Watch out for a "code along" video I'll publish later this week. This will guide a beginner through the process of writing an adventure game. The first lesson is just one class: a Room. But once they've coded that it's a short hop to an entire map. Each step introduces 1 or 2 new ideas and soon they are building a *real* program rather than learning techniques and syntax one (unrelated) problem at a time. I think most people get much more satisfaction from creating fairly big programs than they do from solving coding exercises but that doesn't mean that they don't learn all the same skills along the way.
(Anyway, that's how I see it!)
Best wishes
Huw
Exercises makes a concept well understood then you apply this understanding on real projects to learn more. Exercises focus on one concept at a time which make it easier lo learn while a project include many concepts at a time that may become overwhelming.
This great, there are projects i had in mind but have no real idea where to start but i will just do it.
Text editor: i can follow some tuts for this to guide me.
Renderer : i want to make something that looks really pretty
Drawing software: i feel truly alone on this one everytime i seaech up how to make a drawing software i get drawing tutorials instead, it made search engines feel so worthless looking for stuff for this. But i really want to do it. I want to make an app/ sodtware that me my friends and other people can truly enjoy so i won't give up on it.
Pick the one that interests you most. Since you have a free choice, work on something that will give you the greatest satisfaction. Good luck!
But programming exercises are the building blocks don't forge that
Not a programmer here. However, as a visual artist (drawing, sculpting, mix media). The first 9 years of doing art I had no one to tell me how to do any of it. So I would copy(not trace) other artist works. Trying to figure out how they did it. I would learn a lot from each project I copied. Then I would apply different techniques to my own original projects that I learned from copying. There was some point along the way I just started doing my own thing but with influences from that learning period. So if you were learning to program would it not be a good idea to try and copy someone else’s program without looking at their code. Or is that also a no no.
If you can find a good model (in art, I guess that would be like copying Bridgeman or Loomis), yes, copying can be very useful. But maybe a better way of describing my recommended approach in these terms is to work at creating simple but complete projects (like building a figure from a gesture drawing and then adding the details) rather than becoming very good at doing tiny component parts - that is like doing endless exercises to draw eyes and fingers but never having any skill at drawing a whole figure.
Best wishes
Huw
I'm making games, too. A virtual card game. Its taught me a lot, so far.
Thank God for LLM's. Any question is quickly answered, but I try not to copy-paste
The more you figure out yourself, the faster you'll learn. Good luck!
This was my biggest issue with my coursework in university. I wanted to make projects and my professors wanted vocab tests and reinventing the wheel types of assignments.
That must be very frustrating.
I think you can do both exercises and projects involving bigger programs
I agree with you about the exercises. How many times can you write a converter or a lunar lander? Those projects are for the basics like IPO charts, flowcharts and converting logic to algorithms. When I think back, writing a MS Paint rip-off in C++ is where I realized what coding really involved. I loved the idea of having to research the graphics code. Heck, it makes me want to write something I haven't right now.
You are also remembering the excitement of creating real programs. That is another thing that students miss when they confine their efforts to solving exercises. The burning enthusiasm to write programs needs to be instilled at as early a stage as possible (in my view).
Best wishes
Huw
@@LearnWithHuw I completely agree.
I love it. You are so right.
I didn't see anyone who was bad at axercise and was a very good programmer. So we need to do some exercise sometimes to be in the shape .
This is so true. No bite-sized programming assignment will ever approach the complexity of million line codebase that's 10 years old.
Agree, but ability to write programs comes after learning basics.
You will dwell on the basics forever if you have such a mindset. I suggest you start writing complex programs right away.
Thank you! I could not agree more.
Many thanks.
I wholeheartedly agree. If I wasn't already itching to write my own big programs, I wouldn't have the passion needed to succeed.
Spot on. I completely agree.
i am not a programmer but i love programming on my own desire, the importante things are only 2, just define the initials and update the initials thats it, functions are just way to manipulate the initials so you can get the final output. and thats it
I learned to program by writing a web app used by 30 people, completely agree that a small program is different large program, cause it requires you to think deeply about architecture and stuff
Totally agree.
The musician analogy is so perfect. I never thought about it that way. When I was learning to play the guitar I remember really wanting to be able to play the Country Roads song and music that sounded like it. I definitely lost that mindset when I first started learning software.
I've studied guitar (and a few other instruments) too and I've made all the learning mistakes that most other people make. You have to keep reminding yourself why you are doing it (learning an instrument or programming) and get yourself back on track!
Best wishes
Huw
100% agree. Solving little code puzzles is an entirely separate endeavor from writing actual software. Judging a potential employee based on one or two randomly chosen puzzles is a meaningless waste of time. It leaves the interview process wide open to personal bias, racism, and ageism.
It also leads people to confuse "passing tests" with "understanding how to program". Two very different things.
Just my cents on this topic , you could have been more clear and emphasis that you mean leet code sort of questions.
A better way to put it would be like - you can solve small problems but keep a big picture in mind on how you would apply those data structures to your problems.
The way I see programming is like abstractions.
You solve problems and build projects by fitting those abstractions on those problems.
As someone else said, its also about storing and managing data.
It reminds me of legos for some reason.
Please if you disagree kindly add your opinions, I would love to hear them.
Ah, another thing, theres not much room for ego. I mean, its better to keep that aside and take everything as a learning opportunity
No one knows everything, and when it comes to algorithms as an author once said, you can't be satisfied and think thats the best it can be. Theres always room for improvements.
Before you start writing your peograms. You'll have to understand how to write basic programs which is where coding sites and programming online videos and exercises come in.
Practice, then write your own.
I wrote some of these adventure games in the 80s. They used to publish magazines with pages of code listings which we learned from.
Yes, I think PCW published code listings. I must admit I never had the patience to try typing them all in again! Some of them were enormous.
@@LearnWithHuw I was the guy who typed them in , week in and week out , often they took many hours and didn't work.
@@paulbrown5839 You put my mind at rest. I'm glad I didn't do it! 😂
This is the motivation that I needed. Thank you
I'm very pleased to have helped. Good luck!
TOTALLY AGREE!!!!!!!!!!!!!!!!!!!!!!!!
...I am a recently retired programmer/engineer.
btw, my second program was similar to you and it was I HUGE learning experience!!!!!!!!!!
When you write big code you learn VERY QUICLEY to structure you code, but sadly most programmers today SUCK at it!
@@stevenbliss989 That's so true. And yet from the comments I can see so many people who are resistant to that idea. I always encourage people to be ambitious beyond their current skill level. That's when the hard-core learning begins!
I was teaching programming at a university for applied sciences for 5 years. In every semester, I recommended to choose your favourite Arcade Game (Pac Man, Frogger, Asteroids, whatever) and while I teach some math and coding concepts you go on with your project, that's the only homework. Those who did, evolved fine. Oh, I forgot: When I see a certain lack of skills for a student, then I keep him a certain exercise, just him. Plus: I fill that gap for everybody in the lecture (often, he's not the only one with that gap)
Sounds like a great way of teaching. Your students struck lucky! 🙂
You’re absolutely right. I did a full degree and fortunately got a good job because I was good at coding challenges, but quickly realized I couldn’t build an application or write production code worth crap. I basically had to learn everything from scratch. University classes should be having students build functional software to learn, not just writing code to implement some algorithm 90% of students will never touch again.
I can see from some comments that are pro-example-solving that people are thinking "how can i pass tests to get my first job" rather than "how can I build a career as a really good programmer". The fixation on passing tests is really counterproductive.
Thanks for your comment.
Huw
Can't agree more. That's how I learnt front and backend. By making my own website and app from absolute scratch. Spent about 5 months full of mistakes and misery but in the end I learnt and improved beyond any crappy academical approach. No professor I know can build a website. Professors of my a$$ 😂
It's a hard lesson to learn but mistakes are your best friends! 🤒 Thanks for the comment.
@ great channel 👍🏻 thank you
I’ve done some exercises to get familiar with the language, C mostly. From that I got the insight I needed to finally start to make a program. I do have a game in mind which is a card game using AI machine learning to train NPC’s . But it’s about to get so complicated now I’m about stop understanding what’ve done and why it works so far.
If a problem seems too complicated, break it down into smaller parts. Programs that seem too complicated usually are trying to do too much too quickly! Good luck.
@@LearnWithHuw
Thanks for the tip.
My problem is that i do know what i want to program, but when i open my IDE i dont know how to start.
This is a common problem! You think of a big project but when you want to code it, you are overwhelmed by the complexity. Start by making a list of all the little "bits" that are needed to make the whole program then figure out which bit is the most fundamental building block and start there.
I've just started a new "code along" series that you might find helpful. The project is an adventure game. Eventually it will have a complex network of rooms, a player who can move, take and drop treasures. Treasures that can be put into containers. Puzzles that can be solved. File save/load, error-handling, command-processing and lots more. So where do I start? I have to work out what the most essential feature of the game is. Answer. A single room. That's it. Nothing else. One room. Once I have that I can try two rooms, then several rooms and so on. But right now, all I am coding is one Room. That's more or less how I would tackle any new project.
th-cam.com/video/7T7Z-AsmR40/w-d-xo.htmlsi=Lv0-bZtDo5vKPQQ3
@LearnWithHuw thanks :D ill take a look
This is a real good advice! couldn't agree more
Many thanks.
I was told to learn the basics of programming using C++, object-oriented programming, algorithms and data structures, and then move on to my own path, which is web development. I want your advice. I have completed everything, but what remains are algorithms and data structures. Should I stay to learn them or move on to the language used in the web?
Naturally, if you are following a course, you will be obliged to follow whatever path is set. If you are free to learn on your own, I am not sure that lots of work on C++ (etc.) will advance your studies of web development very much. While algorithms and data structures are essential, it would be better to work of developing something relevant to your end goals and learn the algorithms and data structures that you really need to rather than simply learn ever more of them which you will never use.
Good luck!
@@LearnWithHuw I learn on my own, but if I learn on C# for the web, shall I leave my study of algorithms and data structures in C++ and complete it in c# or study it in everyone, Study alone , thank you
@ I can't say what exactly will be right for you. But it seems to me that you know what you really want to do already so you would be wise to do that. During your studies you will discover which algorithms you need and that is when you should study them. Studying algorithms without any real motivation or purpose is not the most interesting or productive way to go forward. From what you are saying, I think you already know what path you want to follow. So go for it!
Best wishes
Huw
شكرا لك | Thank You
Can I watch project from TH-cam and learn programming
Learning should ideally be a combination of watching (or reading) on the subject and actually sitting down at your computer and writing programs. You need some of both but it's when you write programs yourself that you will learn the most!
What a gem this video is! This should be an obvious fact yet this is so profound! Been wondering about the best way to learn coding/programming and there's just too many advices out there but this piece of advice just solidified and confirmed that I'm on the right track of learning. Keep creating man!
Thank you so much. I'm glad you found it useful. Good luck with your projects.
Huw
Awesome advice. Thank you for this video.
Many thanks
Hello, I started programming out of necessity, because I was not satisfied with the solutions on the software market, however I must say that learning from experience has a small problem, namely you can find that you have certain "knowledge gaps" which theoretically a well-structured course should cover.
I have nothing against well structured courses (I teach several myself! 🙂). However, knowledge is only theoretical until you put into use. In my view, the *real* learning happens when people create programs of their own. If they have to fill gaps along the way, they will learn and remember far more than they would merely by studying isolated problems with model solutions.
Best wishes
Huw
Thanks brother.
90% of all corporate programmers end up writing programms that other people thought of. That's the job of a software engineer.
If you're learning, what "big complicated" programs should they write? If you find that tinkering with mechanics is your thing, you start with a bike or a soapbox car and not a real one. That is overwhelming.
Many Rockstars also don't write their own songs.
Also, you can write programs that actually work easily. The point of the exercises is to show the stuff that is necessary to a programm but not actually for its core function.
If your only goal is a "working" peogramm you'll get one. With vulnerabilities and bugs. Among the most famous ones: sql injections.
But sure, don't give them simple tasks that they can write in a week. Ask them what programs they want to write and let them try it when they say "a real time video chat" when you know, they barely manage to write a file manager.
How would I go about coding a huge project with zero knowledge of coding?
The first step is the most important one!
The only programming advice I really need right now, thank you! 😂
Excellent. Good luck with whatever you are programming! 🙂
Completely agree!