SlideShare una empresa de 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

Más contenido relacionado

Destacado

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.
 

Destacado (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

My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Último (20)

My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 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 del 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