How principled coders outperform the competition

1,607,186
0
Published 2023-03-15
To support the channel and get some nice perks:
💟 www.patreon.com/coderized

🗣️ Discord is now available, come chat!
🔗 discord.gg/Y7hEKnxPGf

---

Regardless of your current skill level, embracing clean coding practices, establishing maintainable code structures, and effectively managing oneself are crucial for becoming a competitive and sought-after programmer in today's professional industry.

In this guide, we will explore essential coding topics that every proficient programmer should be well-versed in:

- Adhering to programming standards
- Programming design principles, such as:
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Design patterns, including:
- Creational patterns
- Structural patterns
- Behavioral patterns
- Enhancing code readability through effective naming
- Testing concepts, like:
- End-to-end (E2E) testing
- Unit testing
- Managing time efficiently
- Strategically pacing project development

---

It's important to recognise that everything I present here is just a guideline, not a rule. I call them "sins" but in reality, there's exceptions to everything. I think all of the points mentioned in the video could misused, if you're not careful. I've seen people who over-engineer simple codebases to the point it's unreadable, just to have a fully modular codebase; or obsess over perfectly following standards, even when it becomes incompatible in certain situations; or spending way too much time trying to achieve 100% test coverage, when it added no more benefit to do so.

The best way to interpret this video is to have a little understanding of the topics, and choose the things that you want to learn more about. This is not a doctrine in any way, just some tips to kickstart more knowledge and understanding. Everything mentioned in the video once had a pain point behind it that will have led to its creation, but maybe you don't have these same pain points... yet! Just remember the potential solutions for when you do, or use them as a foundation for your own exploration!

---

(longer description)

Are you ready to level up your coding skills and avoid the seven deadly sins of programming? In this video, we'll explore common mistakes made by developers and how to fix them, leading to better code quality and more readable code.

Join us as we dive into programming standards and the importance of consistency in file structure, whitespace, and coding philosophies. Learn about SOLID principles, a set of design principles that will help you write maintainable, scalable, reusable, and testable code. We'll also discuss programming design patterns and how they can serve as a universal vocabulary for better understanding your code.

Discover the importance of using descriptive names in your code and explore various testing methods, from end-to-end testing to unit and integration tests. We'll also touch upon time management, emphasizing the need to provide accurate estimates and avoid rushing through projects.

By the end of this video, you'll have the tools and knowledge to create clean, efficient, and human-readable code. As Martin Fowler once said, "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." Let's get started on your journey to becoming a better coder! Don't forget to like, comment, and subscribe for more programming tips.

---

Special thanks go to Vita and Jakob, for helping me with all my thoughts and suggesting improvements!

---

00:00 - Welcome the 7 deadly sins of programming
00:37 - You should pick and use a standard, always
01:19 - Principles are the lifeblood of programmers
04:45 - Patterns let us learn from our programmer ancestors
06:20 - Names are often badly... named?
07:58 - Tests give us confidence
09:06 - Time, the impossible enemy
09:51 - Speed vs. productivity, what's better?
10:39 - Leveling up

#programming #code #coder #coding #programmingtips #codingadvice #programmingstandards #designpatterns #namingconventions #codetesting #timemanagement #codingproductivity #programmermindset #codequality #codereadability #maintainablecode #codingbestpractices #programmingmistakes #codingpitfalls #betterprogramming

---

Special thanks go to Vita and Jakob, for helping me with all my thoughts and suggesting improvemen

All Comments (21)
  • @coderized
    Hey folks, I just wanted to add a quick few things to make the goal of the video a bit clearer: I present these topics as guidelines, not hard rules. I call them "sins" but in reality, there's exceptions to everything and your situation may not need all the topics covered. I've seen people who over-engineer simple codebases to the point it's unreadable, just to have it fully modular; or obsess over following standards, even when it becomes incompatible in certain situations; or spending way too much time trying to achieve 100% test coverage, when it added no more benefit to do so. The best way to interpret this video is to have a little understanding of the topics, and choose the things that you want to learn more about. The 80/20 rule is usually pretty good to combine with all these points. Everything mentioned in the video once had a pain point behind it that will have led to its creation, but maybe you don't have these same pain points... yet! Just remember the potential solutions for when you do, or use them as a foundation for your own exploration! Hope this clarifies a bit! --- Oh, and thank you so much for all the kind comments! I'm reading every single one with a smile. Your feedback means a lot and I am really excited to get back to creating more videos for you all.
  • @SaHaRaSquad
    I think "don't follow rules blindly" also deserves a place as advice - understanding why some best practices exist and when they make no sense is important. There are valid exceptions to everything.
  • @poons1955
    I love how calmly everything is presented. There’s no music in the background either which leaves a few silences in between. It’s a welcome change
  • I remember a dev once said that development is never straightforward, and so the team ends up meandering as if they were following a series of semicircles, which is why they plan for everything to take 3.142 times as long as expected.
  • @BEN-ys6gu
    Channels are popping up with extremely high quality content like it's nothing and it makes me happy. By quality I'm not talking only about the very professional animations, but the actual information as well. As a CS student I was familiar to most of what you said, but the video just sealed all this info together in a way that made think about this stuff and become a lot more confident. The examples were well chosen too.
  • @hotworlds
    To expand on the first point, a lot of IDEs have an auto formatter that will fix your whitespace and indentation for you, and can be run on existing files all at once to clean everything up. If you're on a team, it's a good idea to create a configuration for the formatter and share it with everyone on the team so it's impossible for anyone to make formatting mistakes :)
  • @Jauntie_J
    Not sure if it's intentional, but I love your callback at 5:00 to the square hole TikTok meme. Gave me a good chuckle and now I want to see how far that actual metaphor of putting a circle in a square programming hole goes.
  • @mrmaniac9905
    I've been programming for 12 years now.. this perfectly articulates what I've been subconsciously been leaning towards as time goes on. I've heard about all of the concepts in this video but never in this way. These principles truly are fundamental measurements of ones proceffiency in code. One thing I will mention though is the concept I personally use with larger programs. When I am facing a large system, I will typically prototype smaller bits of code in a way that "just works." After I get my concept I have in my mind in front of me, I then begin to refactor and abstract the code into a state that is to, in my eyes, what is described in this video. In my game engine I've been working on over the past few years I started off by just getting things going like a window, simple rendering with shaders etc. Eventually over time I separated out the project in modules that hook the engine for state changes. The core engine eventually just became a bootstrapper for modules like an Asset module, and other modules could depend upon modules within their module.lua file (custom build system), and I had I things like abstract modules where a render backend could be opengl or directx, where there would be an abstraction module that provides common rendering functionality, allowing modules that need to render something to just require the abstract render module and let the runtime render module handle the rest. TL;DR sometimes its okay to just "get your idea out" with some working prototype, then chip away/refactor as you would with a beautiful marble sculpture; apply the principles presented in this video as a form a improvement overtime instead of must-have requirements from the get-go. Principles such as standards should always be followed in my opinion however.
  • @kracky
    I don't know why I'm here, it's 3 am, i am tired, i have to study for my finals ... I don't even code... I watched this video twice
  • @fabdlnltc
    I would add one missing point; Teamwork/Communication You rarely work alone, so listen to every pain you or your team has (on or out code), and think together how to address them and solve it. Which is the heart of every agile methodology
  • @COLAMAroro
    Small addition to the last point: Remember the Pareto principle 80% of the result is caused by 20% of the work. It is expected that you blaze through at the beginning of the project, only to slow down a lot afterwards. It’s not you, it’s everybody 😊
  • @fabdlnltc
    Dude, I really needed this video 15 years ago. I hope every new learner can appreciate and understand everything here!
  • @hjtomi_
    This video is just amazing! The animations are eye-catching, I never felt even half a minute bored and the 7 points are top-tier.
  • @NackDSP
    The code I wrote primarily implemented some mathematical calculation. Code and it's documentation are not always well linked. So I made it a habit to describe the derivation, references to text books used and even put Matlab simulation code used directly in the comments so the next person to service the code could see the whole process and repeat it if changes were required. Years later I visited the company and the engineers that maintained my code thanked me.
  • @AshPragasam
    Thank you!! As much as the content, I appreciate the zen tone of this video. Reading good code is an enjoyable thing indeed. Adding to lesson 7, at any point during a coding task, never be afraid to revert all changes and start again. You'll be amazed at how quickly you will get back to the same progress point, but you'll have a cleaner design with all the things learned from the previous attempts 🥳
  • Brilliant production quality! Nice to see so many coding channels booming that go beyond just solving problems.
  • @dasboss9111
    One of the best animated Videos I’ve ever witnessed. Absolutely stunned by your work. You put in a lot of effort, and it shows - and hopefully pays off for you. Keep it up 👍🏻