0. Be logical and realise the machine code is only running the logic that you have programmed into that code which the program executes. If you understand all the concepts and fundamentals, even the most basic fundamentals, you will then be able to engage with AI to help you with your code, but you must know how to program first, so that you may ask AI to correct the errors that will present to ensure you’re actually a true programmer.
lol roadmap, make webpages, stay away from frameworks, stick with the basic fundamentals and innovate, work alongside with AI to create super cool pieces of software for web development purposes, perhaps even apps that align with the web development projects. Have fun. Re-invent web design and web development for the personal computer sphere that will bring webpages back to the people, so that personal home pages may exist as they did in the 90’s but with 34 years of advancements. Leave the business pages to all of the cliche web designs we’ve all seen before and create not over the top but webpages a person would want to have so others who have personal computers may see their webpage, a store of information unique to their interests and self expression unlike social media which imposes limitations on the freedom of expression, but to also be their main point of call over the internet complimentary to social media.
6. Read the docs properly! Too many times for me, an error was caused by overlooking something in the docs. Even the seemingly unimportant text (e.g. as a footnote) are usually important. If the docs are unclear, ask for help either on forums or in a community group e.g. discord if they have one. Or simply create an issue and ask the developer.
"Learn by doing" is absolutely one of the biggest, if not the biggest, hurdles to overcome when you want to code. You have to commit to failing quickly and failing fast. You need to look forward to the problems and want to solve them. Failing is a "GOOD THING". This is not just something that only applies to programming. This applies to life as a whole! Usually, the hardest things in life are very rewarding and worth the time. But that only holds if you interpret it that way with the right attitude. Good advice Esla!
Could not agree more!!! I've been dipping in and out of it for years, giving up quickly by 'watching' rather than doing. Started a small project recently, using books and the net to help with any specific problems and I've learned more from my mistakes than I ever learned watching endless tutorial videos!
I still have the printed listing of my first attempt to write a program around 1970. It was an optical marked card fortran program to add 2 numbers on an IBM 1130. I did not read the manual first, and quickly found the syntax was not "intuitive". Got a manual, and kept on going.... By the time I took my first computer course, I was writing complex programs and able to operate the IBM system with a full understanding of the console foo error codes, and restart procedures.
When you first start learning programming, it may seem like language proficiency is the most important thing. But over time, you realize that the key isn’t which language you use, but how you approach problems. This moment of realization is when you truly enter 'god mode.' Being able to analyze problems correctly and discover solutions gives you a power far greater than just knowing the language itself.
I would not call it god mode; that's ego. Learning to write good code should be more personal. Coding well-done offers confidence to explore, learn, and move forward in your growth and career.
When I realized that I didn't have to learn an entire library but instead how to search on a documentation or resource a specific information, I managed to finish my projects faster. I am not that good at memorizing exact technical stuff but instead I memorize concepts and abstract processes, so I give up forcing myself to memorize new functions with their exact implementation, instead I know at the higher level what tot do and where to find that information. I also have a file with code snippets for specific tasks. Coding now is a joy. So my advice to my younger me would be: 1. Learn general stuff about what ALL programming languages have in common: (variables, functions, loops, conditions) 2. Don't worry to much if you can't memorizing the exact specific syntax for certain things, just write it down on a text file 3. Try to do the same thing in 3-4 different ways and see where it breaks the code, that way you learn what doesn't work and you figure out why it doesn't work.
3. For example, array.filter is supppsed to work just like the iterative approach of building an array. However as the size of array increases, filter may not work always. In such cases, iterative approach is the way to build the filtered array. No one tells you this. You learn this by writing the same logic using different ways and finding what breaks the code.
As someone with 30 years experience in programming, I 100% agree with this advice. For me, 'prioritize understanding' is something I'm been guilty of skipping. I have deadlines, and I see an example that works, so I run with it, only to later realize it wasn't the best solution to the problem and may even end up being a bigger problem in the end!
All so true. The only thing I'd add to this for beginner programmers is this: before you write a single line of code for a project, outline the entire program in comments in the same way you are taught to outline a paper. Amazing what a difference this makes.
I often do this and I've had coworkers ask me why. I point out the obvious: my first programming language was English (insert any human language you're comfortable enough in to be creative and express what needs to be done.) The more I did this the fewer bugs I found when I finally coded and executed my programs (and most of the ones I did find were simply typos).
You can write your main control methods that handles the key execution, but then your secondary methods don't need in the details, but just get the basic structures, classes, and event system / execution path working. Then work down to the details from there.
I said nearly the same thing as you to an intern at work last week about comments and commit messages. Programming is story-telling and being aware of it results in better code.
A lot of developers feel they don't have the luxury of understanding how every code fix works when they have deadlines, but I completely agree that they need to know how it works in order to improve.
1:06 exactly what i repeat to my students that hands on practice with coding is a must. You wont learn until you type it. Make shorter programs and learn to create solve and debug problems. Very few keep on practicing rest like yeah we saw what we did.
"what do you want to build?" whatever gets me a job, I'm not doing this for fun. Everyone asks this question but very rarely do they allow for the prospect that some people are studying programming solely to get a job, not because it's a "passion".
Exactly! I'll build whatever it takes, but I don't even know what's worth it to build. There are basic projects, sure, but those have little correlation to what it seems people need coders for
I started coding in approximately 1983. At that time everything was included in the hardware (Sinclair ZX81 and Sinclair ZX Spectrum). You turned on the computer which didn't have any software installed from elsewhere, and the first key you hit was a part of the number for your first line of code, usually "10". Something like that. Today you have to understand what IDE would be best, what language to choose, what framework would be suitable for your project, how different parts and versions are dependent of each other, how much disk space you will need in the long run and on what drive you should install the IDE, where and how to find the information you will need when coding (books, text sites, videos), and a few more things. So you have to do very much research before you can start coding, or you have to be prepared to go back to the beginning if you did a bad choice. And when you start watching the first introduction video, someone will start throwing a lot of strange, technical words at you while scrolling through code and menus, for more than five minutes, before writing the first line of code. What did we do wrong when we ended up here?! Nowadays, when you are coding, you will be rewarded much later in the working process. Today you really have to have patience if you want to get to the finish line in your project. You can't expect to say "Hello World!" in the first day of your programming career, like we did in the 1980s.
I am coding Python in Idle, which is almost as basic as your ZX81. What, exactly, is hard about print("Hello World!")??? You aren't making any sense whatsoever, Dude.
@@lepidoptera9337 Sure. You can start any kind of IDE and quite fast reach that stage when you can start writing code. But if you thought that that was the goal for all the research that I was mentioning, you missed my message and the bigger picture. My situation is that that I have made so many choices about languages, frameworks and other things, through the years, and seen my skills (and software) become more or less obsolete, that I nowadays prefer to think twice when making choices for a new project. By doing so, I will be rewarded when coding problems will get solved easier and when the software will live for a longer time. One of my better choices have been VBA in Access - a rather "closed environment" which rarely has been changed. The worst cases are from making site specific add-ons for a web browser and seeing the code on the web site being modified. But that problem is indeed about other kinds of choices. In other words, don't take that sentence about "Hello Word!" too literally. The project doesn't stop at "Hello Word!", does it? Also remember that a bad choice or defect introduced early in the development process can have big consequences (se table at en.wikipedia.org/wiki/Software_testing?useskin=vector#Controversy).
do not memorize everything. understand the concepts and build a mental index/keywords, so you can search/find details of whatever you need whenever you need them. Good video!
No matter what language you learn. For your first project learn how to build and search a database for your snippets. Use the same language you are learning to do it. Use notes and comments in the database. That is the best lesson you can give yourself and you will use it as long as you progpram.
The hard part when learning to code is that it's catch 22 situation a little bit. When I first started I made the huge mistake in believing I had to understand every little piece and parts of the code, know what every little keyword meant etc, before I could move on to learning the next thing, and that made the learning process so much more difficult. Everything seemed very abstract because I couldn't relate to any of it, it's just gibberish at that point. Eventually I realized I had to take some time to just learn the syntax by writing various types of code over and over until I knew exactly _how_ to write a constructor class or a setter class or whatever it was, even though I didn't really understand how it worked or what these characters really meant. Just learning the syntax "upfront" like this, was a massive help to me.
I agree. The best thing I've learn graduating as an engineer and now use every day as a programmer: 1/ Architecture: knowing from the start how computer works (CPU, cache, RAM, heap/stack memory, ...) is a bless. Whatever language or technology you are using, you should always know how it works. If some language manage complicate things for you (memory) it's still up to you to use it well. 2/ Boolean algebra. Every scientific student should learn that, it is beautiful and very useful. 3/ Assembly. As a C/C++ programmer, there are so many problems I could never solved without analyzing the generated assembly. Always be curious, invest your time to understand in depth the how it works rather than learning to repeat what you see.
Why on EARTH would you recommend new programmers to learn Assembly? Not only is Assembly hardware specific, it’s almost always NOT computational “safe” (thread safe). Stack and Heap is important to understand (boxing and unboxing). The market for hardware specific Assembly programmers is next to zero. The market for C++ programmers is VERY small and getting smaller by the year. But understand exactly how a CPU works with RAM I/O is going to turn someone off programming quickly … they don’t need to know how the CPU is doing predictive evaluations to determine operation efficiency for the next instruction. Not even going to start in on the HAL and its coding implications.
@@robainscough Like I said, I'm a C++ developper. Assembly knowledge helped me solving countless bugs with much more success than colleague that never tried having a look to disassembly to understand problems and performance issues. I've heard that C++ or compiled languages are over for decades. But guess what, they are still there and used to build most OS and many big server application. C++ is evolving every years and several compiled languages have been created relatively recently. Assembly knowledge will always be very useful with those technologies. Thinking you don’t need any assembly knowledge because the compiler handle it for you is like thinking you don’t need to know how memory is used with managed languages.
Great video. Conceptualizing the problem is something I wish I could rewind and burn into my brain. For anyone out there just learning - a simple example would be something like, "Imagine you have 10 friends and you need to give each of them a high five. Think about this like what you would do as a human, go one by one and high five them". That’s a for loop. Obviously to anyone who knows what they’re doing they know they can high five all people at once in a lot of cases but for getting started, just think about these things the way you would think about them normally without programming. What would you do? That’s it. Everything else is just syntax and research on how people have figured out the optimal way to do that thing (or if you’re super smart you come up with your own way and people name it after you). :)
Absolutely valuable advices. This is something I needed from beginning. It took me ages running through tutorial hell and trying to make "todo lists" and such stuff, unable to work independently, because I sit and what now. So I sat again and ran again through tutorials. This year's spring I finally got a project. I am a bookworm and I often go through antique book shops searching for books no longer in sale in common book stores. I did it every day. One day it clicked - yes, I will automatize it! I was familiar with Python enough to code but not familiar with building. It was pain. Confusion. Hardships. I struggled a lot. But I finally learnt how to sit down, think of project, break into pieces, think of smaller pieces, implement pieces, test them, find flaws, take a day to think of this piece and redo it again and again. My project can schedule scraping, scrape shops, compose mails and provide me a mail with results - book, edition, issue, price, link. It finally works! First version sucked. One big messy file. Second version was more modular but with many mistakes and bad practices. This time I got feedback from experienced guys. I am finishing third version. I am almost done. I learnt many principles in my journey. Something I can sell at interview because I can talk about my project, about design problems I faced and why I chose this solution over another. I feel like I understand now. Alongside my project I try to learn golang and when I said to it, I did one day syntax overview, some practice, and now I am sitting and trying make my own TUI game just using my experience with building. I feel the difference. I can build whole project in pseudocode and now I face just the fact golang forces me to think of "pieces" differently, less OOP, but okay. But it is just fun for rest. I keep moving towards my main project.
Sister, I would usually skip short videos like this one but I am glad I watched. Learn to code before coding language was the biggest idea that helped me. Thank you so so so much!!
I personally believe those who refuse learning math and calling themselves programmers by writing some code to join a bunch of dependencies are the most prone to losing their jobs to AI, they should be scared far more than those who are comfortable thinking mathematically
🎯 Key points for quick navigation: 00:00:14 *💻 The speaker has been a software engineer at a FAANG company for almost four years, gaining confidence over time despite early struggles.* 00:00:43 *💡 The first lesson: "Learn by doing." You can't master coding by just watching videos; actual practice is essential.* 00:01:12 *🌐 Start by building something you want, like a website, to learn more effectively and create a portfolio piece.* 00:01:27 *🧠 The second lesson: "Learn to program, not just a programming language." Understanding concepts is more critical than memorizing syntax.* 00:02:39 *🔍 Focus on understanding the abstract concepts behind algorithms, which can be applied across any programming language.* 00:03:20 *🗺️ The third lesson: "Create a road map." Determine what you want to build, then learn the necessary technologies in a structured way.* 00:05:15 *🔧 The fourth lesson: "Prioritize understanding over everything." Take the time to understand why your code works, which will save time in the long run.* 00:07:06 *🔁 The fifth lesson: "Get used to failing." Failure is essential for learning and growth as a software engineer.* Made with HARPA AI
been a programmer for like 10 years now and i have told young programmers about understanding the program rather than the language but this is what you master as you progress most young people dont listen to such advise they want quick results until after some time they begine to understand. but this is Ouwsome > I would also recommend them a book for structure and interpretation of computer programms
This is such a good video. The great thing is you can apply this approach to many things in life, not just programming (I’m not a programmer). Well done!
You have shared my thoughts. Many of my friends randomly started learning about programming languages and lectures instead of the origin , purpose and logic to learn programming. Really a good video : )
Ms. Scola: Thank you dearly, for this video. I watched it twice, and I can see the logic behind your video, and you know what? Your right. #2 was especially helpful. In 1981, I got a TI99/4a computer as my first system. Wonderful system aside from one tiny problem. THERE WAS NO STORAGE to speak of! Yes we had an audio tape storage, but that was worthless. 99% of the time it wouldn't save all the code or correctly so I gave up. I finally started just typing back in the code I wanted when ever I started the computer. Ultimately coding became instinctial to the point I could write it in my head, or work out problems, by simply thinking of it. Ultimately by the 90s I burned out since it was so damned frustrating to write; We had a saying in one of my computer classes; 1 hour programming, 5 hours debugging cause there wasn't any debuggers, no google or nothing. I've been starting back into BASH and Python for about a year, but struggled badly. I now know, I was doing the other part; learning the language, not programming. :( Now at 58 I'm trying to became something in IT, (I'm just starting) but this entire video is useful for many things, especially since I now know I'm ADHD but now controlled and so much better than I was. Your other video about having a roadmap also helps in just basically learning, but also in my writing too since ADHD causes problems with that. My job will pay for some IT certificate trainings, but with this new structure, maybe now I can even go on to even better things. Thank you again, for helping an older, frustrated person now possibly achieve her goals and dreams in life. -- Kantuck
I LOVE YOU!!!! Finally, someone that gets it! I actually just lost my job as a teacher because most schools want happy students not knowledgeable ones. I told my students what you are saying. Students have to know what they are doing and actually be able to do it not just watch others do it and hand in someone else's work for their "A". Failure is good to learn from and we grow by problem solving which is just part of life. Your playing the piano example is perfect because I am a musician that is changing careers to computers and you have to practice to be good at anything. I apply my practicing music techniques to learning computers - a lot of repetition and problem solving. Thanks again.
I learned when I was 12. I read some code, wrote it, ran it, and understood why it happened. Then I learned some more, rinse and repeat. When an error happened, I instantly knew where the mistake was. More learning, simultaneous with programming. I just had a comprehensive and easy to read book. No Internet back in 1985.
Number 1 is very important for a lot of people. Don't get too concerned about doing coding the "right way" or making lots of mistakes. You need the mistakes. You should read about patterns and other practices but don't always try to implement them straight away. You will realise when your code is repeating itself or becoming messy and you will naturally refactor. It will take time. As she said just work on a self initiated project, not something too simple but not huge. Something that you or someone you know might actually use.
Thank you, this was extremely useful. I've been struggling to discern the underlying fundamentals of programming logic, as you outlined in 2, so it was reassuring to hear this was something worth focusing on. If you ever plan to upload a video with a more abstract overview of how to approach programming logic, that would be amazing. Alternatively, if you have any recommendations on specific resources for this, that would be helpful too. Regardless I wish you luck, and look forward to exploring the rest of your channel. I think we may have similar thinking styles. Sincere Thanks Liz
Depends on the colleagues. If they are normal - they will help in any cost (and if you are decent as well). If they are toxic - nothing will help you, you are doomed.
This video was a refreshing paradigm shift for me. I have been told that I spend too much time pondering the fundamentals and that I ask too many questions concerning situations that might never be encountered. While some of that may be true in certain professional contexts, the "learn by doing" mantra leads to very bad and difficult to overcome habits without the understanding aspect. Personally, I don't feel comfortable sharing my programs with others when I haven't already tested all reasonable possibilites for it to fail... And I can't rightfully do that when I don't understand what I wrote haha.
Thank you! My mentor emphasizes the understanding of what is happening under the hood and will never give the answer, forcing me to figure it out through my own mistakes. This video is clearly an example of how to approach software engineering with the right mindset. I've learned so much from spending hours staring at my mistakes, drawing diagrams, scribbling on paper, just to teach my mind how to understand what is happening. And also thanks for the course info!
Brilliant and absolutely true! As a person who has been a software engineer for 37 years and typed out millions of lines of code, I can confidently say that I use these 5 things every day.
All are good points. Number five is the best. When I started software development, I hated mistakes. As I became a better Engineer, I learned to love mistakes. They were opportunities to review my thinking and solution skills. I found that being forced to review my work and find errors made me a better Engineer. It made me consider the re-useability and clarity of my software. It taught me how to design and implement better software. For me, it wasn't enough to build a project solution. It was just as important to provide a solution which was easy to understand by another engineer. Self-documenting code and methods no larger than one screen length became big considerations. I began to look at my design and translation to code to be an artistic endeavor. That there was no reason for engineering solutions to be terse and abrasive.
I love the way you are telling the truth about doing ANYTHING, including learning something. By asking the "W-Questions" first, and once you have a good idea of "What" you want to do, "Why" you want to do it, "When" you should do it, and "Where" you should do it, (even "Who" should do it) then you can move on to the "How" to do it. Everybody is always asking "How do I do this, instead of What should I... When, Why, Where, Who...?? Great advice you are sharing here. Thank you.
I find Jackson Structured Programming (JSP) still valid and a great help. Also ”You don’t understand a problem until you can simplify it” Also “you don’t program programs, you BUILD programs” has influenced my thinking for the better.
Implementing the math is the crazy part which is a crucial factor in devising an algorithm. The algorithm is meant to sort out the datastructures by performing functions like search, add, delete, etc. I use w3schools offline version
great video finally getting to catch some of the basics through a project based tutorial wish is a great way to know how to implement the basics thank you for your effort
I just completed my first PowerShell script. It’s something like 7 lines and so simple to anyone with experience, however it was satisfying to complete something. I got chatgpt to teach me, which was imperfect for sure (randomly adding c# into it, for example) but I enjoyed being able to ask my questions from as dumb a position as needed and it would understand. Combined with all of the points in this video, it works great.
THIS!....Was Brilliant Elsa. Incredibly insightful and a must for any and everyone from beginner to advanced to always keep in mind from simple to enterprise tasks. Thanks again.
Simple but spot on , 1 What , 2 How , 3 Why, logical evaluation and simple logical thinking what your doing ,and How are doing it [in real time] , and for why yor are doing it to , & if you have a time revaluation and think to yourself "what else" can be done better or just a step & sit back for what you done by yourself and appreciate it ,for that doing mistakes will be a new lesson to learn
One other encouragement is to understand the coders in tutorial videos and classroom instruction are working with code they know very well because they have prepared by essentially memorizing much of the code. They appear to be wizards b we cause of this.
Excellent video. Concise and precise with no artificial additives or flavourings. .As in code, so in life. If the rest of your videos are as good as this I'll be watching more. Thanks!
Great advice; all relevant, all true. However, I highly recommend switching #4 and #5. It is a fact that people remember the first and last item on lists the most, and Understanding is in my opinion the most important advice. In fact, tongue in cheek, the list should be: #5 Understand, #6 Understand, and #7 Understand.
Great video. It is very simple advice but "simple" is not the same as easy. I have lost count on the number of times I have tried to learn coding. I think this advice may get me through it. Thank you.
The "create a road map" suggestion is the one for me. I think so many people get caught up in learning everything for FOMI (fear of missing out). Instead of asking "What should I learn?" ask yourself "What do I want to do?"
Good points. To the 1st point (learn by doing), one sub-task is to learn how to *test* ideas, programs and experiments (TDD, test driven development). That will help setting the right context, answer the "why" questions and help focusing on the problem to solve. It might also help with the later packaging, deployment and production phases.
Really good video, seriously I was ready to add something to the conversation, but seriously you covered all bases. And the number 1 tip is really the number 1 tip, DO STUFF, whenever I have to help someone with coding and I ask "what have you done so far" and the answer is nothing, there's little to nothing for me to help, I can't gauge how to help that person because it's impossible to know what they need helping with, and most of the time simply trying, getting it wrong and understanding why you got that wrong takes the person farther than if I sit down with them and explain exactly what they need to do. Awesome video!
You eventually get to a point in your coding journey where you can watch YT videos on 2x speed and understand everything that’s going on. But that comes after coding for years, not before.
Yep, very good advice. Fail your way to Success! I am actually making training tutorials for kids who want to start programming but need a fun way to learn by making a game. Thanks for a nice video.
Thanks. I thought i could take shortcuts with C++ but every progress I made sent me right back to the basics which i kinda skipped😂 this video has re-in-forced my interest in re-learning the problem solving concepts instead of coding. Thank you!
1. Learn by doing
2. Learn to program, not programming language
3. Create a roadmap for yourself
4. Prioritize understanding
5. Get use to failing
0. Be logical and realise the machine code is only running the logic that you have programmed into that code which the program executes. If you understand all the concepts and fundamentals, even the most basic fundamentals, you will then be able to engage with AI to help you with your code, but you must know how to program first, so that you may ask AI to correct the errors that will present to ensure you’re actually a true programmer.
lol roadmap, make webpages, stay away from frameworks, stick with the basic fundamentals and innovate, work alongside with AI to create super cool pieces of software for web development purposes, perhaps even apps that align with the web development projects. Have fun. Re-invent web design and web development for the personal computer sphere that will bring webpages back to the people, so that personal home pages may exist as they did in the 90’s but with 34 years of advancements. Leave the business pages to all of the cliche web designs we’ve all seen before and create not over the top but webpages a person would want to have so others who have personal computers may see their webpage, a store of information unique to their interests and self expression unlike social media which imposes limitations on the freedom of expression, but to also be their main point of call over the internet complimentary to social media.
When this happens as is starting now, you’re welcome.
@@thefreshprince-t4m what are you babbling about? lol webpage webapage..no!
6. Read the docs properly!
Too many times for me, an error was caused by overlooking something in the docs. Even the seemingly unimportant text (e.g. as a footnote) are usually important. If the docs are unclear, ask for help either on forums or in a community group e.g. discord if they have one. Or simply create an issue and ask the developer.
The Algorithm recommended this video. The timing was impeccable. “You have to take the time to understand what you are doing”.
Agree
.
As I was reading this comment, they said it like a second later in the video. ✨😆
Helpful for me too. but I'm planning on learning guitar. Still applies
"Learn by doing" is absolutely one of the biggest, if not the biggest, hurdles to overcome when you want to code. You have to commit to failing quickly and failing fast. You need to look forward to the problems and want to solve them. Failing is a "GOOD THING". This is not just something that only applies to programming. This applies to life as a whole!
Usually, the hardest things in life are very rewarding and worth the time. But that only holds if you interpret it that way with the right attitude.
Good advice Esla!
Could not agree more!!!
I've been dipping in and out of it for years, giving up quickly by 'watching' rather than doing.
Started a small project recently, using books and the net to help with any specific problems and I've learned more from my mistakes than I ever learned watching endless tutorial videos!
I still have the printed listing of my first attempt to write a program around 1970. It was an optical marked card fortran program to add 2 numbers on an IBM 1130. I did not read the manual first, and quickly found the syntax was not "intuitive". Got a manual, and kept on going.... By the time I took my first computer course, I was writing complex programs and able to operate the IBM system with a full understanding of the console foo error codes, and restart procedures.
When you first start learning programming, it may seem like language proficiency is the most important thing. But over time, you realize that the key isn’t which language you use, but how you approach problems. This moment of realization is when you truly enter 'god mode.' Being able to analyze problems correctly and discover solutions gives you a power far greater than just knowing the language itself.
I would not call it god mode; that's ego. Learning to write good code should be more personal. Coding well-done offers confidence to explore, learn, and move forward in your growth and career.
When I realized that I didn't have to learn an entire library but instead how to search on a documentation or resource a specific information, I managed to finish my projects faster.
I am not that good at memorizing exact technical stuff but instead I memorize concepts and abstract processes, so I give up forcing myself to memorize new functions with their exact implementation, instead I know at the higher level what tot do and where to find that information. I also have a file with code snippets for specific tasks. Coding now is a joy.
So my advice to my younger me would be:
1. Learn general stuff about what ALL programming languages have in common: (variables, functions, loops, conditions)
2. Don't worry to much if you can't memorizing the exact specific syntax for certain things, just write it down on a text file
3. Try to do the same thing in 3-4 different ways and see where it breaks the code, that way you learn what doesn't work and you figure out why it doesn't work.
Thank you!
This helped me so much
thanks
copied, saved 👍🏻
3. For example, array.filter is supppsed to work just like the iterative approach of building an array. However as the size of array increases, filter may not work always. In such cases, iterative approach is the way to build the filtered array. No one tells you this. You learn this by writing the same logic using different ways and finding what breaks the code.
This is the best lecture on introductory programming I've ever heard. Bravo!
As someone with 30 years experience in programming, I 100% agree with this advice.
For me, 'prioritize understanding' is something I'm been guilty of skipping. I have deadlines, and I see an example that works, so I run with it, only to later realize it wasn't the best solution to the problem and may even end up being a bigger problem in the end!
I agree with you!
There's nothing more permanent than a temporary solution...!!!
All so true. The only thing I'd add to this for beginner programmers is this: before you write a single line of code for a project, outline the entire program in comments in the same way you are taught to outline a paper. Amazing what a difference this makes.
I often do this and I've had coworkers ask me why. I point out the obvious: my first programming language was English (insert any human language you're comfortable enough in to be creative and express what needs to be done.)
The more I did this the fewer bugs I found when I finally coded and executed my programs (and most of the ones I did find were simply typos).
Yes pseudo code in plain English
You can write your main control methods that handles the key execution, but then your secondary methods don't need in the details, but just get the basic structures, classes, and event system / execution path working. Then work down to the details from there.
I said nearly the same thing as you to an intern at work last week about comments and commit messages. Programming is story-telling and being aware of it results in better code.
@@williamivey5296
Makes sense❤
A lot of developers feel they don't have the luxury of understanding how every code fix works when they have deadlines, but I completely agree that they need to know how it works in order to improve.
Straight on. You're a good coach.
Most people run away from the work input, yet expect a max output.
1:06 exactly what i repeat to my students that hands on practice with coding is a must. You wont learn until you type it. Make shorter programs and learn to create solve and debug problems. Very few keep on practicing rest like yeah we saw what we did.
This is something that sould be at the beginning of every programming tutorial on youtube. Well said, Elsa.
What helps me is putting layman terms to names in software for example an array is a list, an entity is something you add fields to, etc
An array isn't a list. A list is a list. An array is an n-dimensional list.
"what do you want to build?" whatever gets me a job, I'm not doing this for fun. Everyone asks this question but very rarely do they allow for the prospect that some people are studying programming solely to get a job, not because it's a "passion".
Exactly! I'll build whatever it takes, but I don't even know what's worth it to build. There are basic projects, sure, but those have little correlation to what it seems people need coders for
Exactly!
Great advice! I have been programming for 30+ years, and this is exactly what you need to do. Thank you! Cheers Dave
I started coding in approximately 1983. At that time everything was included in the hardware (Sinclair ZX81 and Sinclair ZX Spectrum). You turned on the computer which didn't have any software installed from elsewhere, and the first key you hit was a part of the number for your first line of code, usually "10". Something like that. Today you have to understand what IDE would be best, what language to choose, what framework would be suitable for your project, how different parts and versions are dependent of each other, how much disk space you will need in the long run and on what drive you should install the IDE, where and how to find the information you will need when coding (books, text sites, videos), and a few more things.
So you have to do very much research before you can start coding, or you have to be prepared to go back to the beginning if you did a bad choice. And when you start watching the first introduction video, someone will start throwing a lot of strange, technical words at you while scrolling through code and menus, for more than five minutes, before writing the first line of code.
What did we do wrong when we ended up here?! Nowadays, when you are coding, you will be rewarded much later in the working process. Today you really have to have patience if you want to get to the finish line in your project. You can't expect to say "Hello World!" in the first day of your programming career, like we did in the 1980s.
I am coding Python in Idle, which is almost as basic as your ZX81. What, exactly, is hard about print("Hello World!")??? You aren't making any sense whatsoever, Dude.
@@lepidoptera9337 Sure. You can start any kind of IDE and quite fast reach that stage when you can start writing code. But if you thought that that was the goal for all the research that I was mentioning, you missed my message and the bigger picture. My situation is that that I have made so many choices about languages, frameworks and other things, through the years, and seen my skills (and software) become more or less obsolete, that I nowadays prefer to think twice when making choices for a new project. By doing so, I will be rewarded when coding problems will get solved easier and when the software will live for a longer time. One of my better choices have been VBA in Access - a rather "closed environment" which rarely has been changed. The worst cases are from making site specific add-ons for a web browser and seeing the code on the web site being modified. But that problem is indeed about other kinds of choices.
In other words, don't take that sentence about "Hello Word!" too literally. The project doesn't stop at "Hello Word!", does it? Also remember that a bad choice or defect introduced early in the development process can have big consequences (se table at en.wikipedia.org/wiki/Software_testing?useskin=vector#Controversy).
do not memorize everything. understand the concepts and build a mental index/keywords, so you can search/find details of whatever you need whenever you need them. Good video!
No matter what language you learn. For your first project learn how to build and search a database for your snippets. Use the same language you are learning to do it. Use notes and comments in the database. That is the best lesson you can give yourself and you will use it as long as you progpram.
The hard part when learning to code is that it's catch 22 situation a little bit. When I first started I made the huge mistake in believing I had to understand every little piece and parts of the code, know what every little keyword meant etc, before I could move on to learning the next thing, and that made the learning process so much more difficult. Everything seemed very abstract because I couldn't relate to any of it, it's just gibberish at that point. Eventually I realized I had to take some time to just learn the syntax by writing various types of code over and over until I knew exactly _how_ to write a constructor class or a setter class or whatever it was, even though I didn't really understand how it worked or what these characters really meant. Just learning the syntax "upfront" like this, was a massive help to me.
I was struggling with a certain code and It's been 2 days and this vid pops up! Incredible timing! Thank you my lady
Glad it helped!
I agree.
The best thing I've learn graduating as an engineer and now use every day as a programmer:
1/ Architecture: knowing from the start how computer works (CPU, cache, RAM, heap/stack memory, ...) is a bless. Whatever language or technology you are using, you should always know how it works. If some language manage complicate things for you (memory) it's still up to you to use it well.
2/ Boolean algebra. Every scientific student should learn that, it is beautiful and very useful.
3/ Assembly. As a C/C++ programmer, there are so many problems I could never solved without analyzing the generated assembly.
Always be curious, invest your time to understand in depth the how it works rather than learning to repeat what you see.
I start learning C and I really don't know what the career for this language what I can do ot work with I will be so much thankful if you help me out
Do you have any book or channel recommendation to learn all thise topics you suggested in your reply?
Why on EARTH would you recommend new programmers to learn Assembly? Not only is Assembly hardware specific, it’s almost always NOT computational “safe” (thread safe). Stack and Heap is important to understand (boxing and unboxing). The market for hardware specific Assembly programmers is next to zero. The market for C++ programmers is VERY small and getting smaller by the year. But understand exactly how a CPU works with RAM I/O is going to turn someone off programming quickly … they don’t need to know how the CPU is doing predictive evaluations to determine operation efficiency for the next instruction. Not even going to start in on the HAL and its coding implications.
@@robainscough Like I said, I'm a C++ developper. Assembly knowledge helped me solving countless bugs with much more success than colleague that never tried having a look to disassembly to understand problems and performance issues.
I've heard that C++ or compiled languages are over for decades. But guess what, they are still there and used to build most OS and many big server application. C++ is evolving every years and several compiled languages have been created relatively recently. Assembly knowledge will always be very useful with those technologies.
Thinking you don’t need any assembly knowledge because the compiler handle it for you is like thinking you don’t need to know how memory is used with managed languages.
C++is very hard
Great video. Conceptualizing the problem is something I wish I could rewind and burn into my brain. For anyone out there just learning - a simple example would be something like, "Imagine you have 10 friends and you need to give each of them a high five. Think about this like what you would do as a human, go one by one and high five them". That’s a for loop. Obviously to anyone who knows what they’re doing they know they can high five all people at once in a lot of cases but for getting started, just think about these things the way you would think about them normally without programming. What would you do? That’s it. Everything else is just syntax and research on how people have figured out the optimal way to do that thing (or if you’re super smart you come up with your own way and people name it after you). :)
Absolutely valuable advices.
This is something I needed from beginning.
It took me ages running through tutorial hell and trying to make "todo lists" and such stuff, unable to work independently, because I sit and what now. So I sat again and ran again through tutorials.
This year's spring I finally got a project.
I am a bookworm and I often go through antique book shops searching for books no longer in sale in common book stores. I did it every day.
One day it clicked - yes, I will automatize it! I was familiar with Python enough to code but not familiar with building. It was pain. Confusion. Hardships. I struggled a lot.
But I finally learnt how to sit down, think of project, break into pieces, think of smaller pieces, implement pieces, test them, find flaws, take a day to think of this piece and redo it again and again.
My project can schedule scraping, scrape shops, compose mails and provide me a mail with results - book, edition, issue, price, link. It finally works! First version sucked. One big messy file.
Second version was more modular but with many mistakes and bad practices. This time I got feedback from experienced guys.
I am finishing third version. I am almost done. I learnt many principles in my journey. Something I can sell at interview because I can talk about my project, about design problems I faced and why I chose this solution over another.
I feel like I understand now.
Alongside my project I try to learn golang and when I said to it, I did one day syntax overview, some practice, and now I am sitting and trying make my own TUI game just using my experience with building. I feel the difference. I can build whole project in pseudocode and now I face just the fact golang forces me to think of "pieces" differently, less OOP, but okay.
But it is just fun for rest. I keep moving towards my main project.
Sister, I would usually skip short videos like this one but I am glad I watched. Learn to code before coding language was the biggest idea that helped me. Thank you so so so much!!
This is awesome I would definitely recommend future programmers to this video!
I personally believe those who refuse learning math and calling themselves programmers by writing some code to join a bunch of dependencies are the most prone to losing their jobs to AI, they should be scared far more than those who are comfortable thinking mathematically
🎯 Key points for quick navigation:
00:00:14 *💻 The speaker has been a software engineer at a FAANG company for almost four years, gaining confidence over time despite early struggles.*
00:00:43 *💡 The first lesson: "Learn by doing." You can't master coding by just watching videos; actual practice is essential.*
00:01:12 *🌐 Start by building something you want, like a website, to learn more effectively and create a portfolio piece.*
00:01:27 *🧠 The second lesson: "Learn to program, not just a programming language." Understanding concepts is more critical than memorizing syntax.*
00:02:39 *🔍 Focus on understanding the abstract concepts behind algorithms, which can be applied across any programming language.*
00:03:20 *🗺️ The third lesson: "Create a road map." Determine what you want to build, then learn the necessary technologies in a structured way.*
00:05:15 *🔧 The fourth lesson: "Prioritize understanding over everything." Take the time to understand why your code works, which will save time in the long run.*
00:07:06 *🔁 The fifth lesson: "Get used to failing." Failure is essential for learning and growth as a software engineer.*
Made with HARPA AI
Thank you ❤
The algorithm today blessed me . Nice video
new generations of kids learning coding: YT videos about "Master X programing language in 2 minutes" + chatGPT + ctrl-C + cntrl-V
Thank you so much for the lessons. No more getting stuck in tutorials 👍
been a programmer for like 10 years now and i have told young programmers about understanding the program rather than the language but this is what you master as you progress most young people dont listen to such advise they want quick results until after some time they begine to understand. but this is Ouwsome > I would also recommend them a book for structure and interpretation of computer programms
This is such a good video. The great thing is you can apply this approach to many things in life, not just programming (I’m not a programmer). Well done!
You have shared my thoughts. Many of my friends randomly started learning about programming languages and lectures instead of the origin , purpose and logic to learn programming. Really a good video : )
Ms. Scola:
Thank you dearly, for this video. I watched it twice, and I can see the logic behind your video, and you know what? Your right.
#2 was especially helpful. In 1981, I got a TI99/4a computer as my first system. Wonderful system aside from one tiny problem. THERE WAS NO STORAGE to speak of! Yes we had an audio tape storage, but that was worthless. 99% of the time it wouldn't save all the code or correctly so I gave up. I finally started just typing back in the code I wanted when ever I started the computer. Ultimately coding became instinctial to the point I could write it in my head, or work out problems, by simply thinking of it.
Ultimately by the 90s I burned out since it was so damned frustrating to write; We had a saying in one of my computer classes; 1 hour programming, 5 hours debugging cause there wasn't any debuggers, no google or nothing.
I've been starting back into BASH and Python for about a year, but struggled badly. I now know, I was doing the other part; learning the language, not programming. :(
Now at 58 I'm trying to became something in IT, (I'm just starting) but this entire video is useful for many things, especially since I now know I'm ADHD but now controlled and so much better than I was. Your other video about having a roadmap also helps in just basically learning, but also in my writing too since ADHD causes problems with that.
My job will pay for some IT certificate trainings, but with this new structure, maybe now I can even go on to even better things.
Thank you again, for helping an older, frustrated person now possibly achieve her goals and dreams in life.
-- Kantuck
Excellent content, solid advices, loved it! Thank you.
This is sound advice and will be very useful. Active learning is necessary.
Super great
The Five are really inspiring
And it builds me up in my coding skills
I LOVE YOU!!!! Finally, someone that gets it! I actually just lost my job as a teacher because most schools want happy students not knowledgeable ones. I told my students what you are saying. Students have to know what they are doing and actually be able to do it not just watch others do it and hand in someone else's work for their "A". Failure is good to learn from and we grow by problem solving which is just part of life. Your playing the piano example is perfect because I am a musician that is changing careers to computers and you have to practice to be good at anything. I apply my practicing music techniques to learning computers - a lot of repetition and problem solving. Thanks again.
Which key/chords d,you program in lol
Not in today’s world it’s all smoke and mirrors. It is better to tell a lie than tell the truth.
I learned when I was 12. I read some code, wrote it, ran it, and understood why it happened. Then I learned some more, rinse and repeat. When an error happened, I instantly knew where the mistake was. More learning, simultaneous with programming. I just had a comprehensive and easy to read book. No Internet back in 1985.
i agree with all (each has their own path and taste)
Number 1 is very important for a lot of people. Don't get too concerned about doing coding the "right way" or making lots of mistakes. You need the mistakes. You should read about patterns and other practices but don't always try to implement them straight away. You will realise when your code is repeating itself or becoming messy and you will naturally refactor. It will take time.
As she said just work on a self initiated project, not something too simple but not huge. Something that you or someone you know might actually use.
Thank you, this was extremely useful. I've been struggling to discern the underlying fundamentals of programming logic, as you outlined in 2, so it was reassuring to hear this was something worth focusing on. If you ever plan to upload a video with a more abstract overview of how to approach programming logic, that would be amazing. Alternatively, if you have any recommendations on specific resources for this, that would be helpful too.
Regardless I wish you luck, and look forward to exploring the rest of your channel. I think we may have similar thinking styles.
Sincere Thanks
Liz
Hi Elsa, as a noob, I really appreciate this. Thank you!
This was so goooood! I am just beginning. I loved each point. Number 5 is really important for me as well! Great video! Thank YOU!
If you are afraid of looking stupid in front of your colleagues you could always prefix your question with "this may be a stupid question, but"
when you ask, you MAY look stupid once. when you don't ask, you DO look stupid every time.
@@g06o84r and you will remain stupid if you dont ask, coz you will lose the opportunity to learn and get your answer
There are no stupid questions....just a lot of inquisitive idiots.😅😂
Depends on the colleagues. If they are normal - they will help in any cost (and if you are decent as well). If they are toxic - nothing will help you, you are doomed.
Other code teachers don't say this. This is so invaluable.
Superb advice Elsa, thank you! A very high tolerance for failure, and an ability to get up again, is a kind of superpower.
Like a dog on a bone
This video was a refreshing paradigm shift for me. I have been told that I spend too much time pondering the fundamentals and that I ask too many questions concerning situations that might never be encountered. While some of that may be true in certain professional contexts, the "learn by doing" mantra leads to very bad and difficult to overcome habits without the understanding aspect. Personally, I don't feel comfortable sharing my programs with others when I haven't already tested all reasonable possibilites for it to fail... And I can't rightfully do that when I don't understand what I wrote haha.
Single best video on what to do to get better that I've ever seen. I actually learned something here, thank you Elsa!!
1. Learn by doing
2. Learn to program, not programming language
3. Create a roadmap for yourself
4. Prioritize understanding
5. Get used to failing
You you are casually destroying her watch time 😂😂
Thank you! My mentor emphasizes the understanding of what is happening under the hood and will never give the answer, forcing me to figure it out through my own mistakes. This video is clearly an example of how to approach software engineering with the right mindset. I've learned so much from spending hours staring at my mistakes, drawing diagrams, scribbling on paper, just to teach my mind how to understand what is happening. And also thanks for the course info!
Brilliant and absolutely true! As a person who has been a software engineer for 37 years and typed out millions of lines of code, I can confidently say that I use these 5 things every day.
All are good points. Number five is the best.
When I started software development, I hated mistakes. As I became a better Engineer, I learned to love mistakes. They were opportunities to review my thinking and solution skills. I found that being forced to review my work and find errors made me a better Engineer. It made me consider the re-useability and clarity of my software. It taught me how to design and implement better software.
For me, it wasn't enough to build a project solution. It was just as important to provide a solution which was easy to understand by another engineer. Self-documenting code and methods no larger than one screen length became big considerations.
I began to look at my design and translation to code to be an artistic endeavor. That there was no reason for engineering solutions to be terse and abrasive.
Thank you Epsa Scola for the best tips on how to improve in coding
I needed this video, as I'm new to this. But that light-up dinosaur behind you is SO cute!! I want one.
I love this video. You learn nothing from success. You learn from pushing through failure.
I wish I could like this more than once. Very helpful and reassuring advice! Thank you!
I've been programming since the early 00s. This short video is spot on.
I love the way you are telling the truth about doing ANYTHING, including learning something. By asking the "W-Questions" first, and once you have a good idea of "What" you want to do, "Why" you want to do it, "When" you should do it, and "Where" you should do it, (even "Who" should do it) then you can move on to the "How" to do it. Everybody is always asking "How do I do this, instead of What should I... When, Why, Where, Who...??
Great advice you are sharing here. Thank you.
"No discomfort no expansion".... That was nice
Lesson #1 Work hard. .....Alright, let me stop you right there. ✋🏼
"No discomfort, no expansion." Ok2 noted!
One of the best advise i recieved in my entire life so far. Thanks for making this video.
Thank you, just THANK YOU! ♥
So true. Thanks for sharing to the community.
I find Jackson Structured Programming (JSP) still valid and a great help.
Also ”You don’t understand a problem until you can simplify it”
Also “you don’t program programs, you BUILD programs” has influenced my thinking for the better.
A lot of value on this video ! For me it’s perfect timing bc I’m just getting started so thank you so much
Implementing the math is the crazy part which is a crucial factor in devising an algorithm.
The algorithm is meant to sort out the datastructures by performing functions like search, add, delete, etc.
I use w3schools offline version
Stuck in the middle between "Never write a line of code" and Junior seniority and this video is very helpful. Thanks for your advice Elsa
I love the way she's saying ... on top of that...😄... thanks so much. this is really helpful
great video finally getting to catch some of the basics through a project based tutorial wish is a great way to know how to implement the basics thank you for your effort
I just completed my first PowerShell script. It’s something like 7 lines and so simple to anyone with experience, however it was satisfying to complete something.
I got chatgpt to teach me, which was imperfect for sure (randomly adding c# into it, for example) but I enjoyed being able to ask my questions from as dumb a position as needed and it would understand. Combined with all of the points in this video, it works great.
ABSOLUTLY RIGHT .. THINGS TAKE TIME PATINCE AND PRACTICE.. THNX U FOR REJOICE ME ...
[1:30] This is what the programmer Andy Harris recommends to avoid the programming language trap.
I have been a developer for years, old school, and I am impressed by your maturity and deep understanding of the necessary pedagogy.
THIS!....Was Brilliant Elsa. Incredibly insightful and a must for any and everyone from beginner to advanced to always keep in mind from simple to enterprise tasks. Thanks again.
Elsa, you are absolutely _brilliant_ !
Simple but spot on , 1 What , 2 How , 3 Why,
logical evaluation and simple logical thinking what your doing ,and How are doing it [in real time] , and for why yor are doing it to , & if you have a time revaluation and think to yourself "what else" can be done better
or just a step & sit back for what you done by yourself and appreciate it ,for that
doing mistakes will be a new lesson to learn
Seek failure is the best advice!!! Great video
One other encouragement is to understand the coders in tutorial videos and classroom instruction are working with code they know very well because they have prepared by essentially memorizing much of the code. They appear to be wizards b we cause of this.
Excellent video. Concise and precise with no artificial additives or flavourings. .As in code, so in life. If the rest of your videos are as good as this I'll be watching more. Thanks!
As a software engineer for over 20 years, I agree. You have to put in the hard work to become a good engineer, learn from doing and ask questions.
Great advice; all relevant, all true. However, I highly recommend switching #4 and #5. It is a fact that people remember the first and last item on lists the most, and Understanding is in my opinion the most important advice. In fact, tongue in cheek, the list should be: #5 Understand, #6 Understand, and #7 Understand.
dude your thumbnail is so damn good lol
Great video. It is very simple advice but "simple" is not the same as easy. I have lost count on the number of times I have tried to learn coding. I think this advice may get me through it. Thank you.
The "create a road map" suggestion is the one for me. I think so many people get caught up in learning everything for FOMI (fear of missing out). Instead of asking "What should I learn?" ask yourself "What do I want to do?"
I really enjoyed the way you structured the video and presentation^_^
Good points. To the 1st point (learn by doing), one sub-task is to learn how to *test* ideas, programs and experiments (TDD, test driven development).
That will help setting the right context, answer the "why" questions and help focusing on the problem to solve. It might also help with the later packaging, deployment and production phases.
Really good video, seriously I was ready to add something to the conversation, but seriously you covered all bases. And the number 1 tip is really the number 1 tip, DO STUFF, whenever I have to help someone with coding and I ask "what have you done so far" and the answer is nothing, there's little to nothing for me to help, I can't gauge how to help that person because it's impossible to know what they need helping with, and most of the time simply trying, getting it wrong and understanding why you got that wrong takes the person farther than if I sit down with them and explain exactly what they need to do. Awesome video!
i think the most amazing thing is that she's been at amazon for 4 years! most people churn out of amazon in 18 months.
Really? How come?🤔
Good! Thank you for useful and obvious things, but always missing. It need to remember.
These lessons apply to life in general, not just coding!
great, this works in every thing new someone can take, Thank you a lot from this side
You eventually get to a point in your coding journey where you can watch YT videos on 2x speed and understand everything that’s going on. But that comes after coding for years, not before.
Yep, very good advice. Fail your way to Success! I am actually making training tutorials for kids who want to start programming but need a fun way to learn by making a game. Thanks for a nice video.
Amazing! Simple and straight to the point. Thanks!
Thank you, what a great work, keep going ❤️
Thanks. I thought i could take shortcuts with C++ but every progress I made sent me right back to the basics which i kinda skipped😂 this video has re-in-forced my interest in re-learning the problem solving concepts instead of coding. Thank you!
As someone who's been doing this professionally for around 15 years, I 100% agree with ALL of these. Especially 1, 2, and 4.
That was out of the world🎉. Thank you❤