SlideShare uma empresa Scribd logo
1 de 26
Q U A L I T Y
Learning - Measurement - Awareness
Super Heroes…
CodeMan



• There is also a super
  hero inside you!

• Being as a…
 Code Man
• Because you can
  CODE!!!



                    Note: the idea of CodeMan is borrowed from one of my ex-colleagues, Hasan
CodeMan has Super Responsibility



                              But…
       Super natural power comes with
           Super responsibility!

                           Because…

             Power without control
                 hardly has any value.
Responsibilities of a CodeMan




 Learn             how to control power

 Measure                 the quality of work

 Awareness for quality work
What is QUALITY ?

                Oxford American Dictionary says -
       the standard of something
   as measured against other things of a
                          similar kind.
   It is NOT easy to define Quality.


   ―You may not know how to define it,
   but you know it when you see it.‖
                    - Erik Doernenburg, Head of Technology, ThoughtWorks Europe
CodeMan – Story 1

- Manager asks CodeMan to upload his profile picture in Wiki.


- The CodeMan quickly uploads one of his photos.




 - Now, imagine the immediate reaction of the manager!!!
CodeMan – Story 2

The CodeMan wrote a method and committed it to VCS as soon as he tested it successfully:




Few months later, a critical bug is found in this code.

While going through the code, the second CodeMan hardly gets any idea what this piece of
code block is doing.


And the immediate reaction that pops up in his mind:      WTF !!!
Measuring Code Quality – WTFs / minute
Measuring Code Quality




     It is very important to measure the QUALITY of your CODE.

     If you don’t know whether your code quality is GOOD or BAD,
      then you can never improve your code.
Why Quality Code ?


Single purpose

Changeability – keeping your code changeable


3 key factors

Readability: only easily readable code can easily be understood and therefore
changed

―Programs MUST be written for people to read, and only incidentally for machines to
execute.‖ - Abelson and Sussman

Simplicity: simple is always easier to change than complicated

Testability: only automatically tested code can be changed without fear of breaking
existing behavior.
How to Improve CODE Quality?




     How can we improve our CODE
             QUALITY?

            How can we minimize
             the number of WTFs
                 in our CODE?
How to Improve CODE Quality?


  1. Code conventions

  2. KISS - keeping it stupid simple

  3. No RUSH

  4. Code reviews

  5. Pair programming

  6. Automatic build and deployment

  7. Incorporating QA process

  8. Improve your own quality
Code Conventions

 Every programming language has some set of guidelines.

 Things you should strictly follow:
   - Naming conventions




     -   Coding style guidelines
     -   Exception handling guidelines
     -   Unit testing principles
     -   Principles of object oriented design
   Configure your IDE, use necessary plugins. These tools eliminate the need for
    reviews focusing on coding style and basic design. They allow us to put our
    energy into higher concepts of quality.
KISS - Keep it Stupid Simple

Don’t build Rube Goldberg Machines – something complex to do simple things
KISS - Keep it Stupid Simple

    There are two ways of constructing a software design.
    One way is to make it so simple that there are obviously no deficiencies. And
    the other way is to make it so complicated that there are no obvious deficiencies

             - Sir Charles Antony Richard Hoare AKA Tony Hoare

KISS principles:

    1. Split your task into smaller subtasks

    2. Break down a complex problem into many smaller and simple problems

    3. Keep your methods small, should not more than 30~40 lines

    4. Keep your classes small – same methodology as for methods.
       Follow OOP principles.

    5. Solve the problem first, then code it.
Don’t be too clever , No RUSH


 Be not Clever too Clever
Clear, Clear, not


 Don’t code in a Hurry — ‖Haste is Waste‖

 Take your time to read the code and see if it is what you meant

 Take your time to write tests — make sure the code does what
  you meant, not what you typed

 Code defensively



      Act in haste and repent at leisure…
      Code too soon and debug forever…
Code Reviews

Periodic inspection of selected parts of the code.

Normally, only critical code should be reviewed extensively

Compare the code at hand with the clean code guidelines and other quality goals.

Everyone writes bad code from time to time, but having code reviews eliminates a lot
of it.

 Always try to be nice to your colleagues, and never think that you know better.
  Be humble since it's actually easy to be wrong about stuff. :-)

 Constructively propose changes.
  Say positive things, what you really like.
  Instead of ―that’s lousy long method‖ say, ―why don’t you split that method...‖

Code reviews doesn't only eliminate poor code written by team members (and
yourself), but is a great way to learn new things from each other.

Tools: Crucible, Sonar etc.
Code Reviews - Crucible
Code Reviews - Sonar
Pair Programming

 Pair programming is a key practice to quality.

 Advantages:

     1. The code is already reviewed by a second developer.

     2. The code is built with the combined technical excellence of two developers. This
        includes the advantages that it is more likely that alternatives are discussed and a
        better solution results than in the case of a single developer working on the task.

     3. Know-how is transferred between the pairing developers. Know-how about the
        problem domain, technical excellence and even tool usage is shared
Continuous Build and Deployment

Early build and deploy => Early discover bugs => Early Fix

Whenever a developer commits/checks-in code into the VCS, the
continuous integration server starts checking the code.


A typical scenario consists of

1.   building the source code,

2.   running all automated unit and acceptance tests,

3.   checking coding guidelines automatically as far as possible

4.   creating an installer package

5.   finally deploying the installer package of the application on a test
     system for additional manual testing.
Incorporating the QA process

Traditional software development process:

1) finish most of the developments first

2) then QA engineers start testing

But this doesn’t work:

1) QA engineers doesn’t get enough time

2) software is released with lots of untested
functionality

What actually works:

1) Incorporate QA process with
development

2) QA process starts as soon as a very small
functionality implemented.
Improve your own Quality

 Improve yourself first.

 Minimize the number of bugs.

   well, this a not a critical bug.
    I can fix it within few minutes.

 Ask 3 questions before fixing
  your bug:

    1. Have I made this error
       anywhere else?

    2. What happens when I fix the
       bug?

    3. How can I change my ways to
       make this kind of bug
       impossible?
3 Simple Tips



QUALITY should be possessed in your MIND,
                not only in your CODE.


QUALITY has to be possessed in your MIND,
                not only in your CODE.


 QUALITY must be possessed in your MIND,
                not only in your CODE.
THANK YOU


Ferdous Mahmud Shaon
Senior Consultant,
Professional Services, Vizrt
Email: fmshaon@vizrt.com
twitter: @fmshaon

Mais conteúdo relacionado

Destaque

ISO Induction
ISO InductionISO Induction
ISO Inductionlpiper88
 
Management of document control
Management of document controlManagement of document control
Management of document controlToyo Gustaman
 
Qms kick off meeting ppt
Qms kick off meeting pptQms kick off meeting ppt
Qms kick off meeting pptANUPAM RAY
 
Presentasi pt awareness iso 9000 & ohsas 18001
Presentasi pt awareness iso 9000 & ohsas 18001Presentasi pt awareness iso 9000 & ohsas 18001
Presentasi pt awareness iso 9000 & ohsas 18001DIAN kurniawan
 
Effective Java - Override clone() method judiciously
Effective Java - Override clone() method judiciouslyEffective Java - Override clone() method judiciously
Effective Java - Override clone() method judiciously Ferdous Mahmud Shaon
 
ISO 9001:2015 Awareness Training
ISO 9001:2015 Awareness TrainingISO 9001:2015 Awareness Training
ISO 9001:2015 Awareness TrainingANUPAM RAY
 
Effective Java - Always override toString() method
Effective Java - Always override toString() methodEffective Java - Always override toString() method
Effective Java - Always override toString() methodFerdous Mahmud Shaon
 
Quality Matters: Staff induction presentation 2013-2014
Quality Matters: Staff induction presentation 2013-2014Quality Matters: Staff induction presentation 2013-2014
Quality Matters: Staff induction presentation 2013-2014QAP-Northampton
 
Awareness of qms
Awareness of qmsAwareness of qms
Awareness of qmsalabs
 
ISO Awareness Training
ISO Awareness TrainingISO Awareness Training
ISO Awareness Trainingjeff_tuthill
 
Quality Programs: Hurdles and Milestones for Health Systems and Their Employe...
Quality Programs: Hurdles and Milestones for Health Systems and Their Employe...Quality Programs: Hurdles and Milestones for Health Systems and Their Employe...
Quality Programs: Hurdles and Milestones for Health Systems and Their Employe...PYA, P.C.
 

Destaque (18)

Quality control
Quality controlQuality control
Quality control
 
The new ISO 9001:2015
The new ISO 9001:2015The new ISO 9001:2015
The new ISO 9001:2015
 
ISO Induction
ISO InductionISO Induction
ISO Induction
 
Introduction to ISO 9001:2015
Introduction to ISO 9001:2015Introduction to ISO 9001:2015
Introduction to ISO 9001:2015
 
Management of document control
Management of document controlManagement of document control
Management of document control
 
5s game
5s game5s game
5s game
 
Qms kick off meeting ppt
Qms kick off meeting pptQms kick off meeting ppt
Qms kick off meeting ppt
 
Presentasi pt awareness iso 9000 & ohsas 18001
Presentasi pt awareness iso 9000 & ohsas 18001Presentasi pt awareness iso 9000 & ohsas 18001
Presentasi pt awareness iso 9000 & ohsas 18001
 
Effective Java - Override clone() method judiciously
Effective Java - Override clone() method judiciouslyEffective Java - Override clone() method judiciously
Effective Java - Override clone() method judiciously
 
ISO 9001:2015 Awareness Training
ISO 9001:2015 Awareness TrainingISO 9001:2015 Awareness Training
ISO 9001:2015 Awareness Training
 
Dasar k3
Dasar k3Dasar k3
Dasar k3
 
Effective Java - Always override toString() method
Effective Java - Always override toString() methodEffective Java - Always override toString() method
Effective Java - Always override toString() method
 
Iso 9001 qms implementation steps sterling rev00-240914
Iso 9001 qms  implementation steps sterling rev00-240914Iso 9001 qms  implementation steps sterling rev00-240914
Iso 9001 qms implementation steps sterling rev00-240914
 
Business Communcation
Business CommuncationBusiness Communcation
Business Communcation
 
Quality Matters: Staff induction presentation 2013-2014
Quality Matters: Staff induction presentation 2013-2014Quality Matters: Staff induction presentation 2013-2014
Quality Matters: Staff induction presentation 2013-2014
 
Awareness of qms
Awareness of qmsAwareness of qms
Awareness of qms
 
ISO Awareness Training
ISO Awareness TrainingISO Awareness Training
ISO Awareness Training
 
Quality Programs: Hurdles and Milestones for Health Systems and Their Employe...
Quality Programs: Hurdles and Milestones for Health Systems and Their Employe...Quality Programs: Hurdles and Milestones for Health Systems and Their Employe...
Quality Programs: Hurdles and Milestones for Health Systems and Their Employe...
 

Último

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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 

Último (20)

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...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 

Quality - Learning, Measurement & Awareness

  • 1. Q U A L I T Y Learning - Measurement - Awareness
  • 3. CodeMan • There is also a super hero inside you! • Being as a… Code Man • Because you can CODE!!! Note: the idea of CodeMan is borrowed from one of my ex-colleagues, Hasan
  • 4. CodeMan has Super Responsibility But… Super natural power comes with Super responsibility! Because… Power without control hardly has any value.
  • 5. Responsibilities of a CodeMan  Learn how to control power  Measure the quality of work  Awareness for quality work
  • 6. What is QUALITY ? Oxford American Dictionary says - the standard of something as measured against other things of a similar kind. It is NOT easy to define Quality. ―You may not know how to define it, but you know it when you see it.‖ - Erik Doernenburg, Head of Technology, ThoughtWorks Europe
  • 7. CodeMan – Story 1 - Manager asks CodeMan to upload his profile picture in Wiki. - The CodeMan quickly uploads one of his photos. - Now, imagine the immediate reaction of the manager!!!
  • 8. CodeMan – Story 2 The CodeMan wrote a method and committed it to VCS as soon as he tested it successfully: Few months later, a critical bug is found in this code. While going through the code, the second CodeMan hardly gets any idea what this piece of code block is doing. And the immediate reaction that pops up in his mind: WTF !!!
  • 9. Measuring Code Quality – WTFs / minute
  • 10. Measuring Code Quality  It is very important to measure the QUALITY of your CODE.  If you don’t know whether your code quality is GOOD or BAD, then you can never improve your code.
  • 11. Why Quality Code ? Single purpose Changeability – keeping your code changeable 3 key factors Readability: only easily readable code can easily be understood and therefore changed ―Programs MUST be written for people to read, and only incidentally for machines to execute.‖ - Abelson and Sussman Simplicity: simple is always easier to change than complicated Testability: only automatically tested code can be changed without fear of breaking existing behavior.
  • 12. How to Improve CODE Quality? How can we improve our CODE QUALITY? How can we minimize the number of WTFs in our CODE?
  • 13. How to Improve CODE Quality? 1. Code conventions 2. KISS - keeping it stupid simple 3. No RUSH 4. Code reviews 5. Pair programming 6. Automatic build and deployment 7. Incorporating QA process 8. Improve your own quality
  • 14. Code Conventions  Every programming language has some set of guidelines.  Things you should strictly follow: - Naming conventions - Coding style guidelines - Exception handling guidelines - Unit testing principles - Principles of object oriented design  Configure your IDE, use necessary plugins. These tools eliminate the need for reviews focusing on coding style and basic design. They allow us to put our energy into higher concepts of quality.
  • 15. KISS - Keep it Stupid Simple Don’t build Rube Goldberg Machines – something complex to do simple things
  • 16. KISS - Keep it Stupid Simple There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies - Sir Charles Antony Richard Hoare AKA Tony Hoare KISS principles: 1. Split your task into smaller subtasks 2. Break down a complex problem into many smaller and simple problems 3. Keep your methods small, should not more than 30~40 lines 4. Keep your classes small – same methodology as for methods. Follow OOP principles. 5. Solve the problem first, then code it.
  • 17. Don’t be too clever , No RUSH  Be not Clever too Clever Clear, Clear, not  Don’t code in a Hurry — ‖Haste is Waste‖  Take your time to read the code and see if it is what you meant  Take your time to write tests — make sure the code does what you meant, not what you typed  Code defensively Act in haste and repent at leisure… Code too soon and debug forever…
  • 18. Code Reviews Periodic inspection of selected parts of the code. Normally, only critical code should be reviewed extensively Compare the code at hand with the clean code guidelines and other quality goals. Everyone writes bad code from time to time, but having code reviews eliminates a lot of it.  Always try to be nice to your colleagues, and never think that you know better. Be humble since it's actually easy to be wrong about stuff. :-)  Constructively propose changes. Say positive things, what you really like. Instead of ―that’s lousy long method‖ say, ―why don’t you split that method...‖ Code reviews doesn't only eliminate poor code written by team members (and yourself), but is a great way to learn new things from each other. Tools: Crucible, Sonar etc.
  • 19. Code Reviews - Crucible
  • 20. Code Reviews - Sonar
  • 21. Pair Programming  Pair programming is a key practice to quality.  Advantages: 1. The code is already reviewed by a second developer. 2. The code is built with the combined technical excellence of two developers. This includes the advantages that it is more likely that alternatives are discussed and a better solution results than in the case of a single developer working on the task. 3. Know-how is transferred between the pairing developers. Know-how about the problem domain, technical excellence and even tool usage is shared
  • 22. Continuous Build and Deployment Early build and deploy => Early discover bugs => Early Fix Whenever a developer commits/checks-in code into the VCS, the continuous integration server starts checking the code. A typical scenario consists of 1. building the source code, 2. running all automated unit and acceptance tests, 3. checking coding guidelines automatically as far as possible 4. creating an installer package 5. finally deploying the installer package of the application on a test system for additional manual testing.
  • 23. Incorporating the QA process Traditional software development process: 1) finish most of the developments first 2) then QA engineers start testing But this doesn’t work: 1) QA engineers doesn’t get enough time 2) software is released with lots of untested functionality What actually works: 1) Incorporate QA process with development 2) QA process starts as soon as a very small functionality implemented.
  • 24. Improve your own Quality  Improve yourself first.  Minimize the number of bugs.  well, this a not a critical bug. I can fix it within few minutes.  Ask 3 questions before fixing your bug: 1. Have I made this error anywhere else? 2. What happens when I fix the bug? 3. How can I change my ways to make this kind of bug impossible?
  • 25. 3 Simple Tips QUALITY should be possessed in your MIND, not only in your CODE. QUALITY has to be possessed in your MIND, not only in your CODE. QUALITY must be possessed in your MIND, not only in your CODE.
  • 26. THANK YOU Ferdous Mahmud Shaon Senior Consultant, Professional Services, Vizrt Email: fmshaon@vizrt.com twitter: @fmshaon

Notas do Editor

  1. As you can see, this presentation is all about QUALITY.In this presentation, we will learn about quality,we will learn how to measure qualityfinally, we will try to grow our awareness on quality
  2. Tony Hoare is a British computer scientist best known for the development of Quicksort algorithm, one of the world's most widely used sorting algorithms.KISS strategies:Break down your tasks into sub tasks, that you think should take no longer than 4-12 hours to codeBreak down your problems into many small problems. Each problem should be able to be solved within one or a very few classesKeep your methods small, each method should never be more than 30-40 lines. Each method should only solve one little problem, not many uses cases. If you have a lot of conditions in your method, break these out into smaller methods.Keep your classes small, same methodology applies here as we described for methods.Solve the problem, then code it. Not the other way around. Many developers solve their problem while they are coding, and there is nothing wrong doing that. But I personally prefer the first option.If you follow these principles, then not only will this be easier to read and maintain, but you will find bugs a lot faster.
  3. 1. Don’t be clever, instead be clear