How principled coders outperform the competition

preview_player
Показать описание
To support the channel and get some nice perks:

🗣️ Discord is now available, come chat!

---

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 improvements!
Рекомендации по теме
Комментарии
Автор

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.

coderized
Автор

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.

SaHaRaSquad
Автор

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

poons
Автор

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.

BEN-ysgu
Автор

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.

GenericInternetter
Автор

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

kracky
Автор

5:03 "That's right, it goes in the square hole"

reallax
Автор

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.

mrmaniac
Автор

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.

Jauntie_J
Автор

0:38 use standards
1:20 learn principles
4:47 apply patterns
6:21 adequate names
8:00 test
9:10 realistic time
10:00 appropriate speed

novomiracle
Автор

Dude, I really needed this video 15 years ago.
I hope every new learner can appreciate and understand everything here!

fabdlnltc
Автор

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 :)

hotworlds
Автор

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

fabdlnltc
Автор

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 😊

COLAMAroro
Автор

Like most viewers of this type of content, of which the quality presented here is impeccable and deserves all praise, I find it hard to recognize when to apply the Programming Patterns that have been taaght to us when working on my own projects.
The SOLID principle is easy to recall as it 'makes sense' and the same goes for the good habits like adequate naming conventions, testing, and documentation but them dammned patterns rarely come organically to me and often I have to stumble upon the realization that I needed to implement pattern X to solve/build Y.

Thanks for the stellar vid!

abdulqadirabuharrus
Автор

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.

hjtomi_
Автор

Video is stunning. I am learning to code, I am still a beginner, but your video inspires me to continue and to do so in the best way possible. The pace of your voice is relaxing yet not boring. The drawings and animations are a feast for the eyes. I subscribed :)

vimore
Автор

Brilliant production quality! Nice to see so many coding channels booming that go beyond just solving problems.

ashutoshmahapatra
Автор

Great video! Not usually my type of thing, but when I got to the end, I got a strong urge to subscribe, for some reason

imrlyunoriginal
Автор

The amount of references in this video are crazy and hilarious! The CGP Grey reference (hexagons are bestagons), the DBZ reference, the tiktok meme, there's the brain one & I'm not sure if that's a silent nod to Fireship's brain one, and the L words repeating reminds me of the presentation of ChatGPT-4. Awesome video!

mohammadayoub