SlideShare a Scribd company logo
1 of 68
NEW PERSPECTIVE
Asher Barak
PART ONE
ne principle to rule them all
1920 - 2012
one of the founders of the cognitive
psychology field
GEORGE A.
MILLER
THE MAGICAL
NUMBER
2
1930 - 2002
Dutch computer scientist
Edsger W.
Dijkstra
Go To Statement Considered Harmful
SOFTWARE
Is Too Complex
For Our
BRAIN
MANAGING
COMPLEXITY
Your #1 goal should be
ARISTOTLE
Geek philosopher
384 – 322 BCE
Essential Accidentalvs
SOFTWARE COMPLEXITY
• Computers speak a binary language
• Computers are batch machines
• There is a wide gap between coding and
running software
• Computers are terrible with concurrency
• Computers have physical limitations
• Computer software model a complex world
Essential
ONE THING AT A TIME
CARE ABOUT LESS
• Do as little as possible
• Divide (& conquer)
• Hide the details - Work
with layered
abstractions
• Reduce the noise
LANGUAGE
FUNDAMENTALS
Class
Method
Procedural
Code
Layer
Module
Class
USE INTERFACES
• Do as little as possible
• Divide (And Conquer)
• Hide the details - Work
with layered
abstractions
• Reduce the noise
CODING
PRACTICES
THINK OF YOUR
AUDIENCE
(It’s not the compiler)
NAME STUFF
• With the right name
• In a standard way
• Methods – For what they do
• Functions – For what they return
• Classes – For what they represent
• Modules – For what they pack
USE CONVENTIONS
Any convention is better than no convention
Every convention is one less thing to think about
USE CONVENTIONS
• Naming Conventions
• Method parameters conventions
• Resources placing conventions
• Documenting conventions
• Code layout conventions
• Meeting conventions
• Everything conventions
USE CONVENTIONS
CONSISTENT ABSTRACTIONS
Problem Domain
Language/Platform
CONSISTENT ABSTRACTIONS
Problem Domain
Problem Domain Lower Level
USE DESIGN PATTERNS
• They represent a higher abstraction
over coding details
• They simplify communications in the
team
• They are conceptual standard reusable
units
TDD
• Promotes better divisions
• Promotes better abstractions
• Promotes better documentation
• Promotes better personal
character
• Restrains complexity
DESIGN BEST
PRACTICES
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
• Do as little as
possible
• Divide (And
Conquer)
• Hide the details -
Work with layered
abstractions
• Reduce the noise
PART TWO
Make it your own
PROGRAMMING IS
DONE SOLO
Creating a culture requires communication
FACE THE TRUTH
Some people program
for the wrong reasons
ACTIVELY ENCOURAGE
SOCIALIZING
Preferably of people who like their job
TALK
ABOUT
THE
PROCESS
BE OPENLY EXCITED
ABOUT GOOD
CRAFTSMANSHIP
(With tears if possible)
TALK ABOUT
READABILITY
Is it good for readability or is it bad?
TALK ABOUT
ABSTRACTIONS
Try splitting discussion the way code is split
ACTIVELY ENCOURAGE
MORE DESIGN
This is hardly ever a problem
ACTIVELY ENCOURAGE
DESIGN CONSULTING
Everyone ends up smarter
PUT PERFORMANCE &
EFFICIENCY SECOND
Maintainability first
PUT PERFORMANCE &
EFFICIENCY SECOND
• We are not good at anticipating
resources issues
• We are not good at anticipating
performance issues
• KISS until otherwise proven
HAVE EXPECTATIONS
• Read (and understand) error messages
• Read (and understand) compiler warning
• Document and read documentation
• Know (and avoid) code smells (Keep a
document)
TALK ABOUT
CONVENTIONS
• Keep a document
• Make newbie's read the document
• Discuss conventions with your team
• Make any code feel at home to
everyone in the company
TALK ABOUT CODE
• Code reviews
• Code analysis sessions
• Talk about code when you give advice
• Talk about code when you take a
break – be creative
TALK ABOUT CODE
• Talk about your experience with the
code
• This made me expect that…
• From this I understood right away
that…
• This was misleading/ did not follow
the standard/ was too long / short
DON’T
TALK ABOUT CODE
When you cannot understand it
USE TOOLING
• To measure (size, relations complexity
etc.) – do not count lines
• To enforce quality standards and
conventions
• To boost productivity
• To avoid human errors
MAKE SURE
EVERYONE
READS
CODE COMPLETE
PART THREE
Trade secrets
CULTURE CLASH
SW Business and SW craftsmanship
are not the same
THINGS ARE IMPROVING
• Human factor weighs in
• AGILE – development as a partnership
• Costs and benefits of quality are better
understood
• SW management is more experienced
STILL, THIS
Is sometimes applicable to the quality
of your code
USE YOUR BRAIN
• Say what you think
• Stick to your estimates
• Accept lower quality
as a legitimate
business decision
• Pick your battles
• Keep doing what you love
in acceptable conditions
KEEP CALM !!!
THANK YOU,
972-54-8003775
Asher . Barak @ gmail . com
CONNECT WITH ME
GET THE SLIDES
http://goo.gl/AWWUKf
If you want to reuse
the slides for your
talk, Please contact
me first.

More Related Content

Viewers also liked

MOST_OpenFoundry_version control system_Git
MOST_OpenFoundry_version control system_GitMOST_OpenFoundry_version control system_Git
MOST_OpenFoundry_version control system_GitSu Jan
 
Java scriptcore brief introduction
Java scriptcore brief introductionJava scriptcore brief introduction
Java scriptcore brief introductionHorky Chen
 
Code tuning techniques
Code tuning techniquesCode tuning techniques
Code tuning techniquesAsha Sari
 
程序员实践之路
程序员实践之路程序员实践之路
程序员实践之路Horky Chen
 
代码大全(内训)
代码大全(内训)代码大全(内训)
代码大全(内训)Horky Chen
 
Defencive programming
Defencive programmingDefencive programming
Defencive programmingAsha Sari
 
Design in construction
Design in constructionDesign in construction
Design in constructionAsha Sari
 
Code tuning strategies
Code tuning strategiesCode tuning strategies
Code tuning strategiesAsha Sari
 
高品質軟體的基本動作 101 for NTHU
高品質軟體的基本動作 101 for NTHU高品質軟體的基本動作 101 for NTHU
高品質軟體的基本動作 101 for NTHUSu Jan
 
Code Tuning
Code TuningCode Tuning
Code Tuningbgtraghu
 
Time-Variable Networks in Candida Glabrata
Time-Variable Networks in Candida GlabrataTime-Variable Networks in Candida Glabrata
Time-Variable Networks in Candida GlabrataMichael Stumpf
 
Biz Online Insights: Movie viewing
Biz Online Insights: Movie viewingBiz Online Insights: Movie viewing
Biz Online Insights: Movie viewingBizcommunity
 
POBLES DE CATALUNYA - LA POBLA DE LILLET I CASTELLAR DE N ´HUG EN CATALÁ
POBLES DE CATALUNYA - LA POBLA DE LILLET I CASTELLAR DE N ´HUG EN CATALÁPOBLES DE CATALUNYA - LA POBLA DE LILLET I CASTELLAR DE N ´HUG EN CATALÁ
POBLES DE CATALUNYA - LA POBLA DE LILLET I CASTELLAR DE N ´HUG EN CATALÁManel Cantos
 
RECORDANDO A CAMARÓN DE LA ISLA- Enrique F. Widmann-Miguel (2013)
RECORDANDO A CAMARÓN DE LA ISLA- Enrique F. Widmann-Miguel (2013)RECORDANDO A CAMARÓN DE LA ISLA- Enrique F. Widmann-Miguel (2013)
RECORDANDO A CAMARÓN DE LA ISLA- Enrique F. Widmann-Miguel (2013)Carlos Cueto
 

Viewers also liked (18)

MOST_OpenFoundry_version control system_Git
MOST_OpenFoundry_version control system_GitMOST_OpenFoundry_version control system_Git
MOST_OpenFoundry_version control system_Git
 
Coding Style
Coding StyleCoding Style
Coding Style
 
Integration
IntegrationIntegration
Integration
 
Java scriptcore brief introduction
Java scriptcore brief introductionJava scriptcore brief introduction
Java scriptcore brief introduction
 
Code tuning techniques
Code tuning techniquesCode tuning techniques
Code tuning techniques
 
程序员实践之路
程序员实践之路程序员实践之路
程序员实践之路
 
代码大全(内训)
代码大全(内训)代码大全(内训)
代码大全(内训)
 
Defencive programming
Defencive programmingDefencive programming
Defencive programming
 
Design in construction
Design in constructionDesign in construction
Design in construction
 
Code tuning strategies
Code tuning strategiesCode tuning strategies
Code tuning strategies
 
高品質軟體的基本動作 101 for NTHU
高品質軟體的基本動作 101 for NTHU高品質軟體的基本動作 101 for NTHU
高品質軟體的基本動作 101 for NTHU
 
Code Complete
Code CompleteCode Complete
Code Complete
 
Code Tuning
Code TuningCode Tuning
Code Tuning
 
Junta angelissima web
Junta angelissima webJunta angelissima web
Junta angelissima web
 
Time-Variable Networks in Candida Glabrata
Time-Variable Networks in Candida GlabrataTime-Variable Networks in Candida Glabrata
Time-Variable Networks in Candida Glabrata
 
Biz Online Insights: Movie viewing
Biz Online Insights: Movie viewingBiz Online Insights: Movie viewing
Biz Online Insights: Movie viewing
 
POBLES DE CATALUNYA - LA POBLA DE LILLET I CASTELLAR DE N ´HUG EN CATALÁ
POBLES DE CATALUNYA - LA POBLA DE LILLET I CASTELLAR DE N ´HUG EN CATALÁPOBLES DE CATALUNYA - LA POBLA DE LILLET I CASTELLAR DE N ´HUG EN CATALÁ
POBLES DE CATALUNYA - LA POBLA DE LILLET I CASTELLAR DE N ´HUG EN CATALÁ
 
RECORDANDO A CAMARÓN DE LA ISLA- Enrique F. Widmann-Miguel (2013)
RECORDANDO A CAMARÓN DE LA ISLA- Enrique F. Widmann-Miguel (2013)RECORDANDO A CAMARÓN DE LA ISLA- Enrique F. Widmann-Miguel (2013)
RECORDANDO A CAMARÓN DE LA ISLA- Enrique F. Widmann-Miguel (2013)
 

Recently uploaded

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 

Recently uploaded (20)

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 

Software Craftsmanship Code Complete

Editor's Notes

  1. דבר בשפת הבעיהצור רמת הפשטה אחרישה בשכבה – כאן מדברים על DB, כאן על חבילות בלוניםכמה שפחות קשרי גומלין
  2. With the right name– if you are not sure of the name you do not know what you are doing
  3. שלח את מי שכתב אותו למקצה שיפורים
  4. בפיתוח כמו RESHARPERבדיקות COVERAGEב QUALITY GATES ב CHECKINבתהליך ה BUILD
  5. שלח את מי שכתב אותו למקצה שיפורים
  6. אני חושב שיש לנו מזל שאנחנו עושים משהו שאנחנו PASSIONATE לגביו. אני מתפעל מזה שמישהו אחר עומד מול הלקוחות.
  7. אני חושב שיש לנו מזל שאנחנו עושים משהו שאנחנו PASSIONATE לגביו. אני מתפעל מזה שמישהו אחר עומד מול הלקוחות.