SlideShare a Scribd company logo
Professional Practises |
Craftsmanship Training | Part
2
Chencha Jacob
iHub Tech Lead
www.ihub.co.ke
@jchex
The primary directive
Managing complexity is the most important technical topic in software
development. In my view, it’s so important that Software’s Primary Technical
Imperative has to be managing complexity
- Steve Mcconnell, Code Complete
Areas of optimization
- Package level
- Class level
- Routine level
Package level
- Microservices
- An application is a set of collaborating services each service implementing a set of related functions
- E.g OAuth for authorization, S3 for storage, Google Cloud SQL for data
- Hexagonal design
- Application only interacts with outside services via adapters
- Component based architecture
- Application made of components
- Buy don’t build
SOLID | Class level
- Single Responsibility
- Open/Closed principle
- Liscov substitution
- Interface segregation principle
- Dependency inversion
Design patterns | Class level
- A pattern language is an interconnected set of solutions to common problems in a specific
domain
- Creational patterns: Singleton, Factory
- Behavioral patterns: Chain of responsibility, Commander
- Structural patterns: Adapter, Decorator
Scope of routines | Function design
- Argument length: Monadic, Dyadic, Triadic
- Do one thing only
- Eliminate flags
- No side effects
- Command query separation
Structured Programming | Function design
Every function, and every block within a function, should have one entry and
one exit
- Edsger Dijkstra, Structured Programming
The principles
- Only one return per function
- No break
- No continue
QUESTIONS?
Where to find me
- Follow me on Twitter @jchex
- Subscribe to my blog blog.chenchatech.com

More Related Content

What's hot

Software Architecture taxonomies - Integration patterns
Software Architecture taxonomies - Integration patternsSoftware Architecture taxonomies - Integration patterns
Software Architecture taxonomies - Integration patterns
Jose Emilio Labra Gayo
 
Component Based Software Engineering
Component Based Software EngineeringComponent Based Software Engineering
Component Based Software Engineering
SatishDabhi1
 
Programing Style
Programing StylePrograming Style
Programing Style
Sumit Kumar
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
Ivano Malavolta
 
Component based software development
Component based software developmentComponent based software development
Component based software development
Emmanuel Fuchs
 
Cbt component based technology architectures
Cbt   component based technology architecturesCbt   component based technology architectures
Cbt component based technology architectures
Saransh Garg
 
The role of MDE in Software Architecture Descriptions
The role of MDE in Software Architecture DescriptionsThe role of MDE in Software Architecture Descriptions
The role of MDE in Software Architecture Descriptions
Henry Muccini
 
Software reuse ppt.
Software reuse ppt.Software reuse ppt.
Software reuse ppt.
Sumit Biswas
 
To Microservice or Not to Microservice?
To Microservice or Not to Microservice?To Microservice or Not to Microservice?
To Microservice or Not to Microservice?
Eran Stiller
 
Component Base Development
Component Base DevelopmentComponent Base Development
Component Base Development
Frik khechoomian
 
Software Engineering: What is That?
Software Engineering: What is That?Software Engineering: What is That?
Software Engineering: What is That?
Henry Muccini
 

What's hot (11)

Software Architecture taxonomies - Integration patterns
Software Architecture taxonomies - Integration patternsSoftware Architecture taxonomies - Integration patterns
Software Architecture taxonomies - Integration patterns
 
Component Based Software Engineering
Component Based Software EngineeringComponent Based Software Engineering
Component Based Software Engineering
 
Programing Style
Programing StylePrograming Style
Programing Style
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
 
Component based software development
Component based software developmentComponent based software development
Component based software development
 
Cbt component based technology architectures
Cbt   component based technology architecturesCbt   component based technology architectures
Cbt component based technology architectures
 
The role of MDE in Software Architecture Descriptions
The role of MDE in Software Architecture DescriptionsThe role of MDE in Software Architecture Descriptions
The role of MDE in Software Architecture Descriptions
 
Software reuse ppt.
Software reuse ppt.Software reuse ppt.
Software reuse ppt.
 
To Microservice or Not to Microservice?
To Microservice or Not to Microservice?To Microservice or Not to Microservice?
To Microservice or Not to Microservice?
 
Component Base Development
Component Base DevelopmentComponent Base Development
Component Base Development
 
Software Engineering: What is That?
Software Engineering: What is That?Software Engineering: What is That?
Software Engineering: What is That?
 

Viewers also liked

Anovia_Trends im HR Management
Anovia_Trends im HR ManagementAnovia_Trends im HR Management
Anovia_Trends im HR ManagementAndreasF63
 
Egypt Certificate
Egypt CertificateEgypt Certificate
Egypt Certificate
Debolina Banerjee
 
Sistema Referencia y Contrarreferencia Ascope
Sistema Referencia y Contrarreferencia AscopeSistema Referencia y Contrarreferencia Ascope
Sistema Referencia y Contrarreferencia Ascope
Luis Antonio Romero
 
Cornwall
CornwallCornwall
How We Learn
How We LearnHow We Learn
How We Learn
iszlq
 
Clase n° 2 2
Clase n° 2 2Clase n° 2 2
Clase n° 2 2
javierqv_ar
 
CLS_V2_AGM_Pres_Low
CLS_V2_AGM_Pres_LowCLS_V2_AGM_Pres_Low
CLS_V2_AGM_Pres_LowKerry Hough
 
Davidshallarnas egen grafiska profil
Davidshallarnas egen grafiska profilDavidshallarnas egen grafiska profil
Davidshallarnas egen grafiska profil
Jansäter Kommunikation AB
 
Open Pedagogy Workshop for TLt Conference at URegina
Open Pedagogy Workshop for TLt Conference at UReginaOpen Pedagogy Workshop for TLt Conference at URegina
Open Pedagogy Workshop for TLt Conference at URegina
Mary Burgess
 
Mi generación
Mi generaciónMi generación
Mi generación
Luis Antonio Romero
 
Note de décryptage Genre et Climat 2016
Note de décryptage Genre et Climat 2016 Note de décryptage Genre et Climat 2016
Note de décryptage Genre et Climat 2016
LucileD
 
Νίκος Καββαδίας: Οι γάτες των φορτηγών
Νίκος Καββαδίας: Οι γάτες των φορτηγώνΝίκος Καββαδίας: Οι γάτες των φορτηγών
Νίκος Καββαδίας: Οι γάτες των φορτηγών
kostism
 
Δημοτικά τραγούδια
Δημοτικά τραγούδιαΔημοτικά τραγούδια
Δημοτικά τραγούδια
kostism
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
Mahfoud EL HOUDAIGUI
 

Viewers also liked (16)

Anovia_Trends im HR Management
Anovia_Trends im HR ManagementAnovia_Trends im HR Management
Anovia_Trends im HR Management
 
Egypt Certificate
Egypt CertificateEgypt Certificate
Egypt Certificate
 
Sistema Referencia y Contrarreferencia Ascope
Sistema Referencia y Contrarreferencia AscopeSistema Referencia y Contrarreferencia Ascope
Sistema Referencia y Contrarreferencia Ascope
 
Cornwall
CornwallCornwall
Cornwall
 
How We Learn
How We LearnHow We Learn
How We Learn
 
Clase n° 2 2
Clase n° 2 2Clase n° 2 2
Clase n° 2 2
 
CLS_V2_AGM_Pres_Low
CLS_V2_AGM_Pres_LowCLS_V2_AGM_Pres_Low
CLS_V2_AGM_Pres_Low
 
Presentaci n12
Presentaci n12Presentaci n12
Presentaci n12
 
Davidshallarnas egen grafiska profil
Davidshallarnas egen grafiska profilDavidshallarnas egen grafiska profil
Davidshallarnas egen grafiska profil
 
Fenomena gunung es
Fenomena gunung esFenomena gunung es
Fenomena gunung es
 
Open Pedagogy Workshop for TLt Conference at URegina
Open Pedagogy Workshop for TLt Conference at UReginaOpen Pedagogy Workshop for TLt Conference at URegina
Open Pedagogy Workshop for TLt Conference at URegina
 
Mi generación
Mi generaciónMi generación
Mi generación
 
Note de décryptage Genre et Climat 2016
Note de décryptage Genre et Climat 2016 Note de décryptage Genre et Climat 2016
Note de décryptage Genre et Climat 2016
 
Νίκος Καββαδίας: Οι γάτες των φορτηγών
Νίκος Καββαδίας: Οι γάτες των φορτηγώνΝίκος Καββαδίας: Οι γάτες των φορτηγών
Νίκος Καββαδίας: Οι γάτες των φορτηγών
 
Δημοτικά τραγούδια
Δημοτικά τραγούδιαΔημοτικά τραγούδια
Δημοτικά τραγούδια
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 

Similar to Professional practises craftsmanship trainings - part 2

Tech challenges in a large scale agile project
Tech challenges in a large scale agile projectTech challenges in a large scale agile project
Tech challenges in a large scale agile project
Harald Soevik
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Harsh Jegadeesan
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
Ólafur Andri Ragnarsson
 
L12 GRASP
L12 GRASPL12 GRASP
Day1
Day1Day1
Oose unit 4 ppt
Oose unit 4 pptOose unit 4 ppt
Oose unit 4 ppt
Dr VISU P
 
OOSE Unit 4 PPT.ppt
OOSE Unit 4 PPT.pptOOSE Unit 4 PPT.ppt
OOSE Unit 4 PPT.ppt
itadmin33
 
session on pattern oriented software architecture
session on pattern oriented software architecturesession on pattern oriented software architecture
session on pattern oriented software architecture
SUJOY SETT
 
CS8494 SOFTWARE ENGINEERING Unit-3
CS8494 SOFTWARE ENGINEERING Unit-3CS8494 SOFTWARE ENGINEERING Unit-3
CS8494 SOFTWARE ENGINEERING Unit-3
SIMONTHOMAS S
 
OEP PPT 1
OEP PPT 1OEP PPT 1
OEP PPT 1
Sushree Sushmeta
 
Human Computer Interaction in software process.ppt
Human Computer Interaction in software process.pptHuman Computer Interaction in software process.ppt
Human Computer Interaction in software process.ppt
Jothilakshmi S
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
Sam Nasr, MCSA, MVP
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptx
KarthigaiSelviS3
 
Software Development : Jeremy Gleason Iscope Digital
Software Development : Jeremy Gleason Iscope DigitalSoftware Development : Jeremy Gleason Iscope Digital
Software Development : Jeremy Gleason Iscope Digital
Iscope Digital
 
agile with scrum methodology
agile with scrum methodology agile with scrum methodology
agile with scrum methodology
rahul reddy
 
System Development Life Cycle Overview.ppt
System Development Life Cycle Overview.pptSystem Development Life Cycle Overview.ppt
System Development Life Cycle Overview.ppt
KENNEDYDONATO1
 
3wis_2.pdf
3wis_2.pdf3wis_2.pdf
3wis_2.pdf
austdali
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
CharenReposposa
 
Software process model
Software process modelSoftware process model
Software process model
Muhammad Yousuf Abdul Qadir
 
Software systems engineering PRINCIPLES
Software systems engineering PRINCIPLESSoftware systems engineering PRINCIPLES
Software systems engineering PRINCIPLES
Ivano Malavolta
 

Similar to Professional practises craftsmanship trainings - part 2 (20)

Tech challenges in a large scale agile project
Tech challenges in a large scale agile projectTech challenges in a large scale agile project
Tech challenges in a large scale agile project
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
 
L12 GRASP
L12 GRASPL12 GRASP
L12 GRASP
 
Day1
Day1Day1
Day1
 
Oose unit 4 ppt
Oose unit 4 pptOose unit 4 ppt
Oose unit 4 ppt
 
OOSE Unit 4 PPT.ppt
OOSE Unit 4 PPT.pptOOSE Unit 4 PPT.ppt
OOSE Unit 4 PPT.ppt
 
session on pattern oriented software architecture
session on pattern oriented software architecturesession on pattern oriented software architecture
session on pattern oriented software architecture
 
CS8494 SOFTWARE ENGINEERING Unit-3
CS8494 SOFTWARE ENGINEERING Unit-3CS8494 SOFTWARE ENGINEERING Unit-3
CS8494 SOFTWARE ENGINEERING Unit-3
 
OEP PPT 1
OEP PPT 1OEP PPT 1
OEP PPT 1
 
Human Computer Interaction in software process.ppt
Human Computer Interaction in software process.pptHuman Computer Interaction in software process.ppt
Human Computer Interaction in software process.ppt
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptx
 
Software Development : Jeremy Gleason Iscope Digital
Software Development : Jeremy Gleason Iscope DigitalSoftware Development : Jeremy Gleason Iscope Digital
Software Development : Jeremy Gleason Iscope Digital
 
agile with scrum methodology
agile with scrum methodology agile with scrum methodology
agile with scrum methodology
 
System Development Life Cycle Overview.ppt
System Development Life Cycle Overview.pptSystem Development Life Cycle Overview.ppt
System Development Life Cycle Overview.ppt
 
3wis_2.pdf
3wis_2.pdf3wis_2.pdf
3wis_2.pdf
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 
Software process model
Software process modelSoftware process model
Software process model
 
Software systems engineering PRINCIPLES
Software systems engineering PRINCIPLESSoftware systems engineering PRINCIPLES
Software systems engineering PRINCIPLES
 

Recently uploaded

LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
aymanquadri279
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 

Recently uploaded (20)

LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 

Professional practises craftsmanship trainings - part 2

  • 1. Professional Practises | Craftsmanship Training | Part 2 Chencha Jacob iHub Tech Lead www.ihub.co.ke @jchex
  • 2. The primary directive Managing complexity is the most important technical topic in software development. In my view, it’s so important that Software’s Primary Technical Imperative has to be managing complexity - Steve Mcconnell, Code Complete
  • 3. Areas of optimization - Package level - Class level - Routine level
  • 4. Package level - Microservices - An application is a set of collaborating services each service implementing a set of related functions - E.g OAuth for authorization, S3 for storage, Google Cloud SQL for data - Hexagonal design - Application only interacts with outside services via adapters - Component based architecture - Application made of components - Buy don’t build
  • 5. SOLID | Class level - Single Responsibility - Open/Closed principle - Liscov substitution - Interface segregation principle - Dependency inversion
  • 6. Design patterns | Class level - A pattern language is an interconnected set of solutions to common problems in a specific domain - Creational patterns: Singleton, Factory - Behavioral patterns: Chain of responsibility, Commander - Structural patterns: Adapter, Decorator
  • 7. Scope of routines | Function design - Argument length: Monadic, Dyadic, Triadic - Do one thing only - Eliminate flags - No side effects - Command query separation
  • 8. Structured Programming | Function design Every function, and every block within a function, should have one entry and one exit - Edsger Dijkstra, Structured Programming The principles - Only one return per function - No break - No continue
  • 10. Where to find me - Follow me on Twitter @jchex - Subscribe to my blog blog.chenchatech.com