Close

2019-10-02

Clean Code – Uncle Bob

Uncle Bob (Robert Cecil Martin)

“Coding Better World Together” is a set of master lessons from the famous Uncle Bob (Robert Cecil Martin), where he gives us a broad vision of the importance and future of Software in today’s society.

In this first lesson, Uncle Bob demonstrates the need to write clean code. He establishes the bases to achieve it, being these bases of a social and scientific nature and making it clear that the future of programming is based on an ethical and polite code.

0:00 Event Presentation 
2:03 Presenter Introduces Uncle Bob 
3:41 Uncle Bob Introduction / My Tribe 
4:49 How Far is the Sun? 
10:52 Introduction to Clean Code 
12:21 The current Society works with Software 
19:47 Volkswagen case / Introduction to the Ethics of Software Development 
24:28 Why are Programmers so slow? 
32:13 What is a Clean Code? 
40:09 Analyzing some lines of code 
43:43 Long code is not Good Code 
49:25 Good Code / Refactored Function 
52:40 Polite Code / Rules for writing a news paper article 55:25 Shrunk Code / The Rules of Functions 
1:00:23 Shrunk Code / Drawing a Function 
1:05:36 When and why was Java invented? 
1:08:52 Prose Code / Arguments 
1:16:13 Avoid Switch Statements / Problems and Evolution of some programming languages 
1:26:15 The Uncle Bob's wife message (funny moment) 
1:27:22 Output Arguments No Side Effects / Garbage Collection 
1:32:21 No Side Effects / Using Lambda 
1:34:26 No Side Effects / Command and Query Separation 1:35:30 No Side Effects / Prefer Exceptions to returning error codes 
1:37:05 DRI Principle (Don't Repeat Yourself) 
1:39:21 Structured Programming / Edsger Dijkstra Vision vs Actual Vision of the programming 
1:45:32 Science and Correct Software

In this second lesson, Uncle Bob teaches us the purpose of comments in the code, breaking the paradigm that commenting is something “I have to do” because we mistakenly consider commenting a good practice.

For Uncle Bob, writing a comment is a sign of failure since good code must be able to explain itself: Fewer Comments = Better Code.

Lesson 2
0:00 Where did the moon come from? 
4:56 What is the Purpose of the Comment? / About Fortran 
8:47 Schindler List / Right and Wrong reason to do comment 
10:02 Comments are a last resort / The proper use of comments 
11:02 Comments Lie 
13:07 Comments do not make up for bad code / Explain Yourself in code 
15:11 Legal and Informative Comments / About Design Patterns book 
20:43 Explanation of Intent / Clarification 
23:21 Warning of Consequences / TODO Comments 
25:59 Amplification / Javadocs in Public APIs 
27:35 Bad and Redundant Comments / Mumbling 
31:25 Mandated Comments 
33:01 Journal Comments / Source code control system 
34:16 Noise Comments / Scary Noise / Use explanatory code, not comments 
36:20 Position Markers / Closing Brace Comments / Attributions and Bylines 
37:43 Commented - Out Code / HTML in comments ICK! 
40:05 Non - Local Information 
41:45 How many lines should there be in a source file? 
46:31 Analysis of the lengths of lines 
50:11 Names are Everywhere / Reveal your intent / Rules to write Names 
58:44 Disambiguate / Avoid Convenient Mispellings 
1:00:41 Number Series / Noise Words / Distinguish Names Meaninfully 
1:02:55 How much time should you spend on a Code Review?

In this third lesson, Uncle Bob focuses on raising awareness, given the need to increase criteria in code production. He was pointing to the lack of preparation in most programmers as one of the main reasons for the inefficiency in software development today.

Uncle Bob proposes a series of Expectations through which he hopes to instill in the programmers the knowledge and desire to prosper towards a way of programming based on ethics and responsibility.

Lesson 3
0:00 Start 
0:23 About our genetic origins. 
9:36 I am your new CTO / About the growth rate of programmers and it effects. 
17:25 Expectations / We will Not Ship Shit. 
21:36 We will always be ready / Iteration Length. 
25:51 Stable Productivity. 
28:14 Inexpensive Adaptability / The software must be changeable. 
30:38 Continuous Improvement / The code should improve over time. 
31:46 Fearless Competence / Conquer the fear with Test. 
42:35 We will not dump on QA / QA will find nothing. 
46:30 Automation! 
51:20 We cover for each other / Teamwork. 
55:40 Introduction to "Honest Estimates".

In this fourth lesson, Uncle Bob introduces us to a software development methodology oriented through testing.

This is Test-Driven Development (TDD), a practice with a long learning curve but with significant results to generate a more robust, safer, more maintainable code with greater development efficiency. Among other things, Uncle Bob shows us his point of view about the evolution of Software to this day and its bright future.

Lesson 4
0:00 Opening. 
0:51 Honest Estimates / What is the chemical formula of water? 
7:16 Selection, Secuence and Interaction / No innovations have been made in the software for decades. 
13:48 The Hardware has gone crazy!: comparison between the innovation level of hardware and software today. 
17:33 You to say "No". 
21:40 Test-Driven Development / TDD rules. 
36:14 Our code is a document / Double entry Bookkeeping. 
40:22 About inheritance / Mutation Testing. 
43:48 Demo of Test-Driven Development. 
1:12:23 Some tips to learn and practice Test-Driven Development. 
1:15:03 Questions and Answers.

In this fifth lesson, Uncle Bob criticizes the culture of “making a disaster as quickly as possible” to generate economic gains, obtaining, in the long term, exactly the opposite effect, due to a generalized lack of awareness, about the importance and purpose of a good Software Architecture.

In this chapter, you will learn the fundamentals of software architecture, its rules, the value of discipline in producing quality code, and the responsibility of disseminating the need to implement these good practices in the community of programmers.

Lesson 5
0:00 Opening. 
3:25 Dick Vlot about Architecture and Agile Software Development. 
9:30 Presentation of Uncle Bob. 
11:19 Diffraction: Why do incandescent lights glow? 
15:27 Architecture Introduction / I've built lots of apps / "I want to be a programmer" anecdote. 
26:09 The Architecture rules are independent of every other variable. 
29:21 Working vs. Right. 
30:45 What is Design in Architecture? 
31:50 What is the goal of Software Architecture? 
33:28 Case study of bad Architecture. 
38:55 Executive View / What went wrong / Secret to going fast. 
44:43 Messes aren't faster even in the short term. 
48:15 Solution of the Executive's Dilema / Two Values of Sofware. 
52:41 Behavior / Are we going to see self driving cars? 
1:00:14 Scope vs. Shape / Stakeholders want changes. 
1:10:33 Urgency and Importance / Eisenhower Matrix. 
1:13:09 Fight for the Architecture. 
1:15:14 A Rails App / The web is a Ddelivery Mechanism. 
1:19:06 Architecture Floor Plans / A Use Case Driven Approach. 
1:24:05 Interactors / Entities / Interfaces Objects. 
1:27:11 Request Model. 
1:30:21 What about MCV? / Design Patterns / How MCV goes wrong as a web Architecture. 
1:34:53 Model View Presenter / Dependency Rule. 
1:39:10 What about the Database? / The Database is a detail / ORM 
1:48:00 Fitnesse: a wiki page porject development. 
1:53:54 A good Architecture allows major decisions to be defered! / About IntelliJ and Visual Studio. 
2:03:44 Frameworks / Plugin Model.

In this sixth lesson, Uncle Bob portrays us through different situations, the problem of adjusting software production time to delivery times. A divergence between the needs of the client and the commercial commitments and the programmer’s needs to produce quality software.

To solve the problem of the temporary gap between production and the deadline, Uncle Bob teaches us the basics of Agile development techniques for the optimal management of software projects.

Lesson 6

0:00 Start 
0:18 Leds / Introduction. 
6:54 How do you manage a software project? 
12:54 Finding the optimum solution / Data. 
21:04 What is the firts thing know about project / The Management Paradox. 
23:33 The Waterfall Model. 
34:13 Iterative Development / Calculate Day. 
39:09 The Control Knobs of project mgt. 
48:51 Short Cycles / Agile Software Development Practices / Extreme Programming. 
1:14:16 Questions and Answers.