Do THIS To Master Programming (why coding exercises are KILLING your progress!)

preview_player
Показать описание
You will never become a great programmer by doing exercises and assignments. It really doesn’t matter how good you get at solving coding problems, learning algorithms, mastering the jargon, the methodologies and the paradigms. That’s all background knowledge. Useful, maybe. But not what you should spend most of your effort on. And yet that is exactly what a great many novice (and some not-so-novice) programmers spend most of their time doing…

In this video, I explain why this is never going to help you achieve your ambition of being a great programmer. And I’ll give you my opinion on what you should be doing to learn the real skills of programming quickly and effectively.

MORE LESSONS
=============
I have hundreds of videos and even complete programming courses on my YouTube channel. They cover everything from low-level programming in C to coding an adventure game in C# or Java. I cover languages as varied as Ruby, Object Pascal and Smalltalk. No matter what your programming level or area of expertise, I’m sure you’ll find something to interest you. Go to my Playlists page and browse around:

Be sure to subscribe to the Code With Huw channel so that you get a notification when I upload more lessons.

PROGRAMMING BOOKS
====================
If you want to learn programming in more depth (and also support this channel!) you might think of buying one of my books. I have written books on C programming, Using Pointers in C, Delphi, Ruby, Recursion and other programming topics. You can buy my books (paperback or Kindle) on Amazon.

*** The Little Book Of Pointers ***

*** The Little Book Of C Programming ***

“CODE WITH HUW” ON TWITTER:
=================================

“CODE WITH HUW” ON FACEBOOK:
=================================

Good luck! And good programming!
Рекомендации по теме
Комментарии
Автор

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!

mrroobarb
Автор

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.

GfoxSim
Автор

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.

rudya.hernandez
Автор

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!

synthercat
Автор

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 YouTube 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.

OneAndOnlyMe
Автор

Excellent advice! After programming for 35 years, on IBM iSeries, Delphi, C, smallTalk assembly language, etc., I was the sole developer for a new website which provided foreign language lessons for medical professionals. I had not used HTML since 2004, and had done only simple web projects. I designed a SQL database with many relational files, used JSON to communicate with the database, and used drag-and-drop, audio, CSS, and the various editors. I also created all of the customized tools I needed to help me manage the code, database, and website. It took many hours over SEVERAL months, but was a very good, and fun learning experience. Now looking for a new project.

jeffrogers
Автор

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.

gzozulin
Автор

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

emperorpalpatine
Автор

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

CrapE_DM
Автор

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.

chickenslips
Автор

Agree. I started really learning when I began writing projects for various purposes.

radosmirkovic
Автор

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.

ragtop
Автор

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.

danielmazur
Автор

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

turanamo
Автор

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.

amineerrachdi
Автор

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!

muesique
Автор

i think your right when i started using QML for UI develooment i started to understand OOP and a little bit of programming concepts

mr.shredder
Автор

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.

empathy_monster
Автор

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.

MultiPwolf
Автор

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.

brandonjablasone