SlideShare una empresa de Scribd logo
1 de 99
CLEAN CODE
and the clean coders




            Breves apuntes realizados por Luis
                 (programania DevTeam)
¿Qué es?
¿Qué es?
dos libros
¿Qué es?
dos libros

resumen una
escuela de
pensamiento
(software
craftmanship)
¿Qué es?
dos libros

resumen una
escuela de
pensamiento
(software
craftmanship)

obviedades (a
veces humillantes)
¿Quién?
¿Quién?

  Uncle Bob (Robert C. Martin)
¿Quién?

  Uncle Bob (Robert C. Martin)

  40 años como PROGRAMADOR
¿Quién?

  Uncle Bob (Robert C. Martin)

  40 años como PROGRAMADOR

  Escuchemos a nuestros
  mayores
http://twitter.com/#!/thecleancoders

http://twitter.com/#!/unclebobmartin
http://www.cleancoders.com/

http://www.objectmentor.com/
clean coders
repaso a toda una escuela de programación
(XP, agile, craftmanship)
clean coders
   repaso a toda una escuela de programación
   (XP, agile, craftmanship)
apprenticeship patterns
clean coders
   repaso a toda una escuela de programación
   (XP, agile, craftmanship)
apprenticeship patterns

pragmatic programmer
clean coders
   repaso a toda una escuela de programación
   (XP, agile, craftmanship)
apprenticeship patterns

pragmatic programmer

clean code
clean coders
    repaso a toda una escuela de programación
    (XP, agile, craftmanship)
apprenticeship patterns

pragmatic programmer

clean code

agile software
development: princpiles,
patterns and practices
clean coders
    repaso a toda una escuela de programación
    (XP, agile, craftmanship)
apprenticeship patterns

pragmatic programmer

clean code

agile software
development: princpiles,
patterns and practices

TestDriven Development
at IBM
clean coders
    repaso a toda una escuela de programación
    (XP, agile, craftmanship)
apprenticeship patterns

pragmatic programmer

clean code

agile software
development: princpiles,
patterns and practices

TestDriven Development
at IBM

Test driven
development: an initial
investigationon the
industry
clean coders
    repaso a toda una escuela de programación
    (XP, agile, craftmanship)
apprenticeship patterns
                           Realizing quality
                           improvements through
pragmatic programmer       test driven
                           development
clean code

agile software
development: princpiles,
patterns and practices

TestDriven Development
at IBM

Test driven
development: an initial
investigationon the
industry
clean coders
    repaso a toda una escuela de programación
    (XP, agile, craftmanship)
apprenticeship patterns
                           Realizing quality
                           improvements through
pragmatic programmer       test driven
                           development
clean code
                           the c programming
agile software             language
development: princpiles,
patterns and practices

TestDriven Development
at IBM

Test driven
development: an initial
investigationon the
industry
clean coders
    repaso a toda una escuela de programación
    (XP, agile, craftmanship)
apprenticeship patterns
                           Realizing quality
                           improvements through
pragmatic programmer       test driven
                           development
clean code
                           the c programming
agile software             language
development: princpiles,
patterns and practices     Succeding with agile
                           (uncle bob series)
TestDriven Development
at IBM

Test driven
development: an initial
investigationon the
industry
clean coders
    repaso a toda una escuela de programación
    (XP, agile, craftmanship)
apprenticeship patterns
                           Realizing quality
                           improvements through
pragmatic programmer       test driven
                           development
clean code
                           the c programming
agile software             language
development: princpiles,
patterns and practices     Succeding with agile
                           (uncle bob series)
TestDriven Development
at IBM                     Software estimation:
                           demytified
Test driven
development: an initial
investigationon the
industry
clean coders
    repaso a toda una escuela de programación
    (XP, agile, craftmanship)
apprenticeship patterns
                           Realizing quality
                           improvements through
pragmatic programmer       test driven
                           development
clean code
                           the c programming
agile software             language
development: princpiles,
patterns and practices     Succeding with agile
                           (uncle bob series)
TestDriven Development
at IBM                     Software estimation:
                           demytified
Test driven
development: an initial    Software engineerin
investigationon the        economics
industry
clean coders
    repaso a toda una escuela de programación
    (XP, agile, craftmanship)
apprenticeship patterns
                           Realizing quality
                           improvements through
pragmatic programmer       test driven
                           development
clean code
                           the c programming      Planning poker or how
agile software             language               to avoid analysis
development: princpiles,                          paralysis while realase
patterns and practices                            planning
                           Succeding with agile
                           (uncle bob series)
TestDriven Development
at IBM                     Software estimation:
                           demytified
Test driven
development: an initial    Software engineerin
investigationon the        economics
industry
clean coders
    repaso a toda una escuela de programación
    (XP, agile, craftmanship)
apprenticeship patterns
                           Realizing quality
                           improvements through
pragmatic programmer       test driven
                           development
clean code
                           the c programming      Planning poker or how
agile software             language               to avoid analysis
development: princpiles,                          paralysis while realase
patterns and practices                            planning
                           Succeding with agile
                           (uncle bob series)
TestDriven Development                            Agile Estimating and
at IBM                                            Planning (uncle bob)
                           Software estimation:
                           demytified
Test driven
development: an initial    Software engineerin
investigationon the        economics
industry
Repaso superficial a
     prácticas
Repaso superficial a
     prácticas
TDD
Repaso superficial a
     prácticas
TDD

test as
documentation
Repaso superficial a
      prácticas
TDD

test as
documentation

dojos, katas, open
source
Repaso superficial a
      prácticas
TDD

test as
documentation

dojos, katas, open
source

definition of done
Repaso superficial a
      prácticas
TDD

test as
documentation

dojos, katas, open
source

definition of done

meetings:
necessary, huge
time of wasting
Repaso superficial a
      prácticas
                     stand-up
TDD                  meetings,
                     iteration planing,
test as              etc.
documentation

dojos, katas, open
source

definition of done

meetings:
necessary, huge
time of wasting
Repaso superficial a
      prácticas
                     stand-up
TDD                  meetings,
                     iteration planing,
test as              etc.
documentation
                     focus: sleep,
dojos, katas, open   cafeine, time
source               boxing, tomatoes

definition of done

meetings:
necessary, huge
time of wasting
Repaso superficial a
      prácticas
                     stand-up
TDD                  meetings,
                     iteration planing,
test as              etc.
documentation
                     focus: sleep,
dojos, katas, open   cafeine, time
source               boxing, tomatoes

definition of done    poker planning

meetings:
necessary, huge
time of wasting
Repaso superficial a
      prácticas
                     stand-up
TDD                  meetings,
                     iteration planing,
test as              etc.
documentation
                     focus: sleep,
dojos, katas, open   cafeine, time
source               boxing, tomatoes

definition of done    poker planning

meetings:            collective code
necessary, huge      ownership
time of wasting
Repaso superficial a
      prácticas
                     stand-up
TDD                  meetings,
                     iteration planing,
test as              etc.
documentation
                     focus: sleep,
dojos, katas, open   cafeine, time
source               boxing, tomatoes

definition of done    poker planning

meetings:            collective code
necessary, huge      ownership
time of wasting
                     project velocity
Repaso superficial a
      prácticas
                     stand-up
TDD                  meetings,
                     iteration planing,
test as              etc.
documentation
                     focus: sleep,
                                          mentoring,
dojos, katas, open   cafeine, time
                                          apprenticeship
source               boxing, tomatoes
                                          and
                                          craftsmanship
definition of done    poker planning

meetings:            collective code
necessary, huge      ownership
time of wasting
                     project velocity
LEARNED
LEARNED

El tiempo de debugging es tiempo de programación. Muchos
programadores no lo ven así.
LEARNED

El tiempo de debugging es tiempo de programación. Muchos
programadores no lo ven así.

El desarrollo de software es un marathon, no un sprint.
LEARNED

El tiempo de debugging es tiempo de programación. Muchos
programadores no lo ven así.

El desarrollo de software es un marathon, no un sprint.

Being late: a todos nos pasa. El truco está en detectarlo pronto y
ser transparente. Estima, y reestima continuamente, y presenta los
datos a la gente implicada en el proyecto constantemente
LEARNED

El tiempo de debugging es tiempo de programación. Muchos
programadores no lo ven así.

El desarrollo de software es un marathon, no un sprint.

Being late: a todos nos pasa. El truco está en detectarlo pronto y
ser transparente. Estima, y reestima continuamente, y presenta los
datos a la gente implicada en el proyecto constantemente

Teams are harder to build than projects
LEARNED

El tiempo de debugging es tiempo de programación. Muchos
programadores no lo ven así.

El desarrollo de software es un marathon, no un sprint.

Being late: a todos nos pasa. El truco está en detectarlo pronto y
ser transparente. Estima, y reestima continuamente, y presenta los
datos a la gente implicada en el proyecto constantemente

Teams are harder to build than projects

IDE: vi es el pasado. los grandes IDE´s son lo más por el refactoring
Responsabilidad y ética
Responsabilidad y ética
be carefull what you ask for
Responsabilidad y ética
be carefull what you ask for

work ethic
Responsabilidad y ética
be carefull what you ask for

work ethic

¿sólo 40 horas a tu profesión?
Distinguir profesión de trabajo.
(katayunos, the melee, leer un libro...)
Responsabilidad y ética
be carefull what you ask for

work ethic

¿sólo 40 horas a tu profesión?
Distinguir profesión de trabajo.
(katayunos, the melee, leer un libro...)

programar 18 horas seguidas hasta las
4 de la mañana no es responsable.
Responsabilidad y ética
be carefull what you ask for

work ethic

¿sólo 40 horas a tu profesión?
Distinguir profesión de trabajo.
(katayunos, the melee, leer un libro...)

programar 18 horas seguidas hasta las
4 de la mañana no es responsable.

programar es extenuante y requiere
grandes dosis de concentración,
aprende a gestionarla (avoid The
Zone, pomodoro, pair programming).
Responsabilidad y ética
be carefull what you ask for
                                           Eres responsable de tu carrera, de tu
work ethic                                 formación, etc.

¿sólo 40 horas a tu profesión?
Distinguir profesión de trabajo.
(katayunos, the melee, leer un libro...)

programar 18 horas seguidas hasta las
4 de la mañana no es responsable.

programar es extenuante y requiere
grandes dosis de concentración,
aprende a gestionarla (avoid The
Zone, pomodoro, pair programming).
Responsabilidad y ética
be carefull what you ask for
                                           Eres responsable de tu carrera, de tu
work ethic                                 formación, etc.

¿sólo 40 horas a tu profesión?             QA should find nothing
Distinguir profesión de trabajo.
(katayunos, the melee, leer un libro...)

programar 18 horas seguidas hasta las
4 de la mañana no es responsable.

programar es extenuante y requiere
grandes dosis de concentración,
aprende a gestionarla (avoid The
Zone, pomodoro, pair programming).
Responsabilidad y ética
be carefull what you ask for
                                           Eres responsable de tu carrera, de tu
work ethic                                 formación, etc.

¿sólo 40 horas a tu profesión?             QA should find nothing
Distinguir profesión de trabajo.
(katayunos, the melee, leer un libro...)   false delivery: gran ejercicio de
                                           irresponsabilidad.
programar 18 horas seguidas hasta las
4 de la mañana no es responsable.

programar es extenuante y requiere
grandes dosis de concentración,
aprende a gestionarla (avoid The
Zone, pomodoro, pair programming).
Responsabilidad y ética
be carefull what you ask for
                                           Eres responsable de tu carrera, de tu
work ethic                                 formación, etc.

¿sólo 40 horas a tu profesión?             QA should find nothing
Distinguir profesión de trabajo.
(katayunos, the melee, leer un libro...)   false delivery: gran ejercicio de
                                           irresponsabilidad.
programar 18 horas seguidas hasta las
4 de la mañana no es responsable.          pide ayuda, nunca digas no cuando te
                                           piden ayuda.
programar es extenuante y requiere
grandes dosis de concentración,
aprende a gestionarla (avoid The
Zone, pomodoro, pair programming).
Responsabilidad y ética
be carefull what you ask for
                                           Eres responsable de tu carrera, de tu
work ethic                                 formación, etc.

¿sólo 40 horas a tu profesión?             QA should find nothing
Distinguir profesión de trabajo.
(katayunos, the melee, leer un libro...)   false delivery: gran ejercicio de
                                           irresponsabilidad.
programar 18 horas seguidas hasta las
4 de la mañana no es responsable.          pide ayuda, nunca digas no cuando te
                                           piden ayuda.
programar es extenuante y requiere
grandes dosis de concentración,            practice ethics --> practice on your
aprende a gestionarla (avoid The           own time, not at your employers time
Zone, pomodoro, pair programming).
Aprender a decir no
Aprender a decir no
hazlo o no lo hagas, pero no “lo intentes”
Aprender a decir no
hazlo o no lo hagas, pero no “lo intentes”

Falta de ética: cada vez que dices que “lo
intentarás” sabiendo que es imposible, huyes de la
confrontación.
Aprender a decir no
hazlo o no lo hagas, pero no “lo intentes”

Falta de ética: cada vez que dices que “lo
intentarás” sabiendo que es imposible, huyes de la
confrontación.

De la confrontación nacen mejores soluciones
Aprender a decir no
hazlo o no lo hagas, pero no “lo intentes”

Falta de ética: cada vez que dices que “lo
intentarás” sabiendo que es imposible, huyes de la
confrontación.

De la confrontación nacen mejores soluciones

arguments/disagreements --> any argument that cant
´b e settled in five minutes can´t be settled by
arguing
Aprender a decir no
hazlo o no lo hagas, pero no “lo intentes”

Falta de ética: cada vez que dices que “lo
intentarás” sabiendo que es imposible, huyes de la
confrontación.

De la confrontación nacen mejores soluciones

arguments/disagreements --> any argument that cant
´b e settled in five minutes can´t be settled by
arguing

Las estimaciones son eso: estimaciones
Dí sí
Dí sí
Un buen profesional debe comprometerse.
Dí sí
Un buen profesional debe comprometerse.

“es que las estimaciones son estimaciones” -
el gran cáncer del agilismo.
Dí sí
Un buen profesional debe comprometerse.

“es que las estimaciones son estimaciones” -
el gran cáncer del agilismo.

Creando un lenguaje para el compromiso:
Dí sí
Un buen profesional debe comprometerse.

“es que las estimaciones son estimaciones” -
el gran cáncer del agilismo.

Creando un lenguaje para el compromiso:
  I need to lose weight, Some should make that happend
Dí sí
Un buen profesional debe comprometerse.

“es que las estimaciones son estimaciones” -
el gran cáncer del agilismo.

Creando un lenguaje para el compromiso:
  I need to lose weight, Some should make that happend

  I hope to get this done by tomorrow, I wish i had time fo rthat
Dí sí
Un buen profesional debe comprometerse.

“es que las estimaciones son estimaciones” -
el gran cáncer del agilismo.

Creando un lenguaje para el compromiso:
  I need to lose weight, Some should make that happend

  I hope to get this done by tomorrow, I wish i had time fo rthat

  Let´s meet sometime. Let´s finish this thing
Trabajo bajo presión
Trabajo bajo presión
stay clean: professionals do not sucums to
the temptation to create a mess ir order to
move quickly. Quick and dirty is an
oxymoron. Dirty always means slow!
Trabajo bajo presión
stay clean: professionals do not sucums to
the temptation to create a mess ir order to
move quickly. Quick and dirty is an
oxymoron. Dirty always means slow!

no abandonar tus principios en momentos de
presión, sino hacerte más fuerte en ellos.
Guarrear, o dormir menos, te hace menos
productivo, no más.
DETAILS
DETAILS

Communication about details is hard. It´s to easy
for each party to wave their handas and assume
that the other party understand.
DETAILS

Communication about details is hard. It´s to easy
for each party to wave their handas and assume
that the other party understand.

uml/MDA --> mda assumes that the problem is
code. but code is not the problem. it has never
been the problem. the problem is detail.
THERE WILL BE CODE
THERE WILL BE CODE
We will never be rid of code, because code represents the details
of the requirements. At some level those details cannot be ignored
or abstracted.
THERE WILL BE CODE
We will never be rid of code, because code represents the details
of the requirements. At some level those details cannot be ignored
or abstracted.


The level of abstraction of our languages will continue to
incresase. But it will not elimnate code. All the specifications written
in these higher level and domain-specific languege will be code!
THERE WILL BE CODE
We will never be rid of code, because code represents the details
of the requirements. At some level those details cannot be ignored
or abstracted.


The level of abstraction of our languages will continue to
incresase. But it will not elimnate code. All the specifications written
in these higher level and domain-specific languege will be code!


if you have beenn a programmer for more than two or three years,
you have probable been significantly slowed down by someone
elseñs messy code.
CLEAN CODE
the boy scout rule
leave the campground cleaner than you found it.
You are reading this book for two reasons.
First, you are a programmer. Second, you
want to be a better programmer. Good. We
need better programmers...
You are reading this book for two reasons.
First, you are a programmer. Second, you
want to be a better programmer. Good. We
need better programmers...

is a prequel of Agile Software Development:
Principles, Patterns, and Practices...
EXHAUSTIVO


@arturoherrero:
http://www.slideshare.net/arturoherrero/clean-
code-8036914
MEANINGFULL NAMES


   int d; / elapsed time in days
           /
       int elapsedTimeInDays;
FUNCTIONS
FUNCTIONS
/ mejor función es la que tiene cero argumentos
 /la
Functions that take three arguments are significantly harder to
understand than dyads. The issues of ordering, pausing, and ignoring
are more than doubled. I suggest you think very carefully before
creating a triad.
FUNCTIONS
/ mejor función es la que tiene cero argumentos
 /la
Functions that take three arguments are significantly harder to
understand than dyads. The issues of ordering, pausing, and ignoring
are more than doubled. I suggest you think very carefully before
creating a triad.



//mal...
function activarSistema(boolean activar);
//bien!
function activarSistema();
function desactivarSistema();
ERROR HANDLING
ERROR HANDLING
Functions should do one thing. Error handing is one thing
ERROR HANDLING
Functions should do one thing. Error handing is one thing


public void delete(Page page) {
    try {
        deletePageAndAllReferences(page);
    } catch (Exception e) {
    logError(e);
}
private void deletePageAndAllReferences(Page page) throws Exception {
    deletePage(page);
    registry.deleteReference(page.name);
    configKeys.deleteKey(page.name.makeKey());
}
private void logError(Exception e) {
    logger.log(e.getMessage());
}
COMMENTS
COMMENTS
The proper use of comments is to compensate for our
failure to express ourself in code
COMMENTS
The proper use of comments is to compensate for our
failure to express ourself in code

Every time you write a comment, you should grimace and
feel the failure of your ability of expression.
COMMENTS
           The proper use of comments is to compensate for our
           failure to express ourself in code

           Every time you write a comment, you should grimace and
           feel the failure of your ability of expression.



/ Check to see if the employee is eligible for full benefits
 /
        if ((employee.flags & HOURLY_FLAG) &&
                   (employee.age > 65))

          if (employee.isEligibleForFullBenefits())
COMMENTS
           The proper use of comments is to compensate for our
           failure to express ourself in code

           Every time you write a comment, you should grimace and
           feel the failure of your ability of expression.



/ Check to see if the employee is eligible for full benefits
 /
        if ((employee.flags & HOURLY_FLAG) &&
                   (employee.age > 65))

          if (employee.isEligibleForFullBenefits())



                          //bien!
                          / Returns an instance of the Responder being tested.
                           /
                          protected abstract Responder responderInstance();
FORMATTING
//mal! máximo un nivel de tabulación!
if (this.is){
      String cocotero = “tralari”;
      for (i=0;i<10;i++){
              pepo = coco[i];
              while (pepo > coco){
                   cacaflush();
              }
      }
}
FORMATTING
//mal! máximo un nivel de tabulación!
if (this.is){
      String cocotero = “tralari”;
      for (i=0;i<10;i++){
              pepo = coco[i];
              while (pepo > coco){
                   cacaflush();
              }
      }
}

//bien! sin braquets, no hay otra...
if (page != null)
         pageData = page.getData();

while ((line = br.readLine()) != null)
          measureLine(line);
CLASES

“Methods with no more than 5 lines of code,
classes with no more than 3 public methods
                 (average)”




                                carlos ble
escribir código limpio te fuerza a
seguir patrones, y prácticas, tras los
cuales hay una serie de principios.
?

Más contenido relacionado

Destacado

Clean Code at Silicon Valley Code Camp 2011 (02/17/2012)
Clean Code at Silicon Valley Code Camp 2011 (02/17/2012)Clean Code at Silicon Valley Code Camp 2011 (02/17/2012)
Clean Code at Silicon Valley Code Camp 2011 (02/17/2012)Theo Jungeblut
 
Position Sensor SPS-L075-HALS
Position Sensor SPS-L075-HALSPosition Sensor SPS-L075-HALS
Position Sensor SPS-L075-HALSPremier Farnell
 
Temperature,position sensor
Temperature,position sensorTemperature,position sensor
Temperature,position sensorDivya Nidheesh
 
HEVC VIDEO CODEC By Vinayagam Mariappan
HEVC VIDEO CODEC By Vinayagam MariappanHEVC VIDEO CODEC By Vinayagam Mariappan
HEVC VIDEO CODEC By Vinayagam MariappanVinayagam Mariappan
 
Week 6 2_design_of_pneumatic_circuit
Week 6 2_design_of_pneumatic_circuitWeek 6 2_design_of_pneumatic_circuit
Week 6 2_design_of_pneumatic_circuitakmal ariffin
 
Testers and Coders - Blurring the Lines
Testers and Coders - Blurring the LinesTesters and Coders - Blurring the Lines
Testers and Coders - Blurring the LinesNoam Kfir
 
Clean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipClean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipTheo Jungeblut
 
decorder and encoder and its applications
decorder and encoder and its applicationsdecorder and encoder and its applications
decorder and encoder and its applicationssafia safreen
 
Chap1 fittings&connectors
Chap1 fittings&connectorsChap1 fittings&connectors
Chap1 fittings&connectorsSmriti Mehta
 
Differential Pressure Switch/ Gages
Differential Pressure Switch/ GagesDifferential Pressure Switch/ Gages
Differential Pressure Switch/ GagesDwyer Instruments
 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best PracticesTheo Jungeblut
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code SmellsMario Sangiorgio
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summaryJan de Vries
 
Stop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesStop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesEdorian
 

Destacado (20)

Clean Code at Silicon Valley Code Camp 2011 (02/17/2012)
Clean Code at Silicon Valley Code Camp 2011 (02/17/2012)Clean Code at Silicon Valley Code Camp 2011 (02/17/2012)
Clean Code at Silicon Valley Code Camp 2011 (02/17/2012)
 
Position Sensor SPS-L075-HALS
Position Sensor SPS-L075-HALSPosition Sensor SPS-L075-HALS
Position Sensor SPS-L075-HALS
 
Temperature,position sensor
Temperature,position sensorTemperature,position sensor
Temperature,position sensor
 
HEVC VIDEO CODEC By Vinayagam Mariappan
HEVC VIDEO CODEC By Vinayagam MariappanHEVC VIDEO CODEC By Vinayagam Mariappan
HEVC VIDEO CODEC By Vinayagam Mariappan
 
Week 6 2_design_of_pneumatic_circuit
Week 6 2_design_of_pneumatic_circuitWeek 6 2_design_of_pneumatic_circuit
Week 6 2_design_of_pneumatic_circuit
 
Testers and Coders - Blurring the Lines
Testers and Coders - Blurring the LinesTesters and Coders - Blurring the Lines
Testers and Coders - Blurring the Lines
 
Clean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipClean Code III - Software Craftsmanship
Clean Code III - Software Craftsmanship
 
decorder and encoder and its applications
decorder and encoder and its applicationsdecorder and encoder and its applications
decorder and encoder and its applications
 
Chap1 fittings&connectors
Chap1 fittings&connectorsChap1 fittings&connectors
Chap1 fittings&connectors
 
Pressure Switch
Pressure Switch Pressure Switch
Pressure Switch
 
Differential Pressure Switch/ Gages
Differential Pressure Switch/ GagesDifferential Pressure Switch/ Gages
Differential Pressure Switch/ Gages
 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best Practices
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code Smells
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summary
 
Encoder
EncoderEncoder
Encoder
 
Basic pneumatic circuit
Basic pneumatic circuitBasic pneumatic circuit
Basic pneumatic circuit
 
Lab pneumatic
Lab pneumatic Lab pneumatic
Lab pneumatic
 
Encoder
EncoderEncoder
Encoder
 
Stop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesStop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principles
 
Encoder and decoder
Encoder and decoderEncoder and decoder
Encoder and decoder
 

Similar a Clean code and the clean coders

Metodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaMetodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaManuel Rubio
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilJohnny Ordóñez
 
Gestión de proyectos: una visión práctica, parte 1
Gestión de proyectos: una visión práctica, parte 1Gestión de proyectos: una visión práctica, parte 1
Gestión de proyectos: una visión práctica, parte 1GeneXus
 
Análisis y diseño de sistemas
Análisis y diseño de sistemasAnálisis y diseño de sistemas
Análisis y diseño de sistemassiulacio
 
Introduccion a Personal Software Process
Introduccion a Personal Software ProcessIntroduccion a Personal Software Process
Introduccion a Personal Software ProcessTonymx
 
Modelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software LibreModelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software LibreEQ SOFT EIRL
 
Personal Software Process / Agenda
Personal Software Process / AgendaPersonal Software Process / Agenda
Personal Software Process / Agendaandres hurtado
 
Proceso del software una visión general
Proceso del software una visión generalProceso del software una visión general
Proceso del software una visión generalRuth Hidalgo Tene
 
Proceso del software
Proceso del softwareProceso del software
Proceso del softwareguest7886b8
 
Bedomax - Campus Party 2013
Bedomax - Campus Party 2013Bedomax - Campus Party 2013
Bedomax - Campus Party 2013bedomax
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Lis Pater
 
0014 gxc development_frame_work_10_buenas_practicas_de_20_años_de_proyectos_c...
0014 gxc development_frame_work_10_buenas_practicas_de_20_años_de_proyectos_c...0014 gxc development_frame_work_10_buenas_practicas_de_20_años_de_proyectos_c...
0014 gxc development_frame_work_10_buenas_practicas_de_20_años_de_proyectos_c...GeneXus
 
01 el proceso-de_desarrollo_de_software
01 el proceso-de_desarrollo_de_software01 el proceso-de_desarrollo_de_software
01 el proceso-de_desarrollo_de_softwarePaola Galindo
 
Proceso del Software Una visión General
Proceso del Software Una visión GeneralProceso del Software Una visión General
Proceso del Software Una visión GeneralRuth Hidalgo Tene
 

Similar a Clean code and the clean coders (20)

Metodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaMetodologías Ágiles en la Práctica
Metodologías Ágiles en la Práctica
 
Intro agile
Intro agileIntro agile
Intro agile
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágil
 
Gestión de proyectos: una visión práctica, parte 1
Gestión de proyectos: una visión práctica, parte 1Gestión de proyectos: una visión práctica, parte 1
Gestión de proyectos: una visión práctica, parte 1
 
Metodos agiles 4
Metodos agiles 4Metodos agiles 4
Metodos agiles 4
 
Análisis y diseño de sistemas
Análisis y diseño de sistemasAnálisis y diseño de sistemas
Análisis y diseño de sistemas
 
Introduccion a Personal Software Process
Introduccion a Personal Software ProcessIntroduccion a Personal Software Process
Introduccion a Personal Software Process
 
Modelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software LibreModelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software Libre
 
Psppresentation 1233778855472242-3
Psppresentation 1233778855472242-3Psppresentation 1233778855472242-3
Psppresentation 1233778855472242-3
 
Alternativas metodológicas
Alternativas metodológicasAlternativas metodológicas
Alternativas metodológicas
 
Personal Software Process / Agenda
Personal Software Process / AgendaPersonal Software Process / Agenda
Personal Software Process / Agenda
 
Programación Xp Nocturno
Programación Xp NocturnoProgramación Xp Nocturno
Programación Xp Nocturno
 
Proceso del software una visión general
Proceso del software una visión generalProceso del software una visión general
Proceso del software una visión general
 
Proceso del software
Proceso del softwareProceso del software
Proceso del software
 
Bedomax - Campus Party 2013
Bedomax - Campus Party 2013Bedomax - Campus Party 2013
Bedomax - Campus Party 2013
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema
 
0014 gxc development_frame_work_10_buenas_practicas_de_20_años_de_proyectos_c...
0014 gxc development_frame_work_10_buenas_practicas_de_20_años_de_proyectos_c...0014 gxc development_frame_work_10_buenas_practicas_de_20_años_de_proyectos_c...
0014 gxc development_frame_work_10_buenas_practicas_de_20_años_de_proyectos_c...
 
01 el proceso-de_desarrollo_de_software
01 el proceso-de_desarrollo_de_software01 el proceso-de_desarrollo_de_software
01 el proceso-de_desarrollo_de_software
 
Valores y prácticas XP
Valores y prácticas XPValores y prácticas XP
Valores y prácticas XP
 
Proceso del Software Una visión General
Proceso del Software Una visión GeneralProceso del Software Una visión General
Proceso del Software Una visión General
 

Último

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 

Último (15)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 

Clean code and the clean coders

  • 1. CLEAN CODE and the clean coders Breves apuntes realizados por Luis (programania DevTeam)
  • 4. ¿Qué es? dos libros resumen una escuela de pensamiento (software craftmanship)
  • 5. ¿Qué es? dos libros resumen una escuela de pensamiento (software craftmanship) obviedades (a veces humillantes)
  • 7. ¿Quién? Uncle Bob (Robert C. Martin)
  • 8. ¿Quién? Uncle Bob (Robert C. Martin) 40 años como PROGRAMADOR
  • 9. ¿Quién? Uncle Bob (Robert C. Martin) 40 años como PROGRAMADOR Escuchemos a nuestros mayores
  • 11. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)
  • 12. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns
  • 13. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns pragmatic programmer
  • 14. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns pragmatic programmer clean code
  • 15. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns pragmatic programmer clean code agile software development: princpiles, patterns and practices
  • 16. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns pragmatic programmer clean code agile software development: princpiles, patterns and practices TestDriven Development at IBM
  • 17. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns pragmatic programmer clean code agile software development: princpiles, patterns and practices TestDriven Development at IBM Test driven development: an initial investigationon the industry
  • 18. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns Realizing quality improvements through pragmatic programmer test driven development clean code agile software development: princpiles, patterns and practices TestDriven Development at IBM Test driven development: an initial investigationon the industry
  • 19. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns Realizing quality improvements through pragmatic programmer test driven development clean code the c programming agile software language development: princpiles, patterns and practices TestDriven Development at IBM Test driven development: an initial investigationon the industry
  • 20. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns Realizing quality improvements through pragmatic programmer test driven development clean code the c programming agile software language development: princpiles, patterns and practices Succeding with agile (uncle bob series) TestDriven Development at IBM Test driven development: an initial investigationon the industry
  • 21. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns Realizing quality improvements through pragmatic programmer test driven development clean code the c programming agile software language development: princpiles, patterns and practices Succeding with agile (uncle bob series) TestDriven Development at IBM Software estimation: demytified Test driven development: an initial investigationon the industry
  • 22. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns Realizing quality improvements through pragmatic programmer test driven development clean code the c programming agile software language development: princpiles, patterns and practices Succeding with agile (uncle bob series) TestDriven Development at IBM Software estimation: demytified Test driven development: an initial Software engineerin investigationon the economics industry
  • 23. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns Realizing quality improvements through pragmatic programmer test driven development clean code the c programming Planning poker or how agile software language to avoid analysis development: princpiles, paralysis while realase patterns and practices planning Succeding with agile (uncle bob series) TestDriven Development at IBM Software estimation: demytified Test driven development: an initial Software engineerin investigationon the economics industry
  • 24. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship) apprenticeship patterns Realizing quality improvements through pragmatic programmer test driven development clean code the c programming Planning poker or how agile software language to avoid analysis development: princpiles, paralysis while realase patterns and practices planning Succeding with agile (uncle bob series) TestDriven Development Agile Estimating and at IBM Planning (uncle bob) Software estimation: demytified Test driven development: an initial Software engineerin investigationon the economics industry
  • 25. Repaso superficial a prácticas
  • 26. Repaso superficial a prácticas TDD
  • 27. Repaso superficial a prácticas TDD test as documentation
  • 28. Repaso superficial a prácticas TDD test as documentation dojos, katas, open source
  • 29. Repaso superficial a prácticas TDD test as documentation dojos, katas, open source definition of done
  • 30. Repaso superficial a prácticas TDD test as documentation dojos, katas, open source definition of done meetings: necessary, huge time of wasting
  • 31. Repaso superficial a prácticas stand-up TDD meetings, iteration planing, test as etc. documentation dojos, katas, open source definition of done meetings: necessary, huge time of wasting
  • 32. Repaso superficial a prácticas stand-up TDD meetings, iteration planing, test as etc. documentation focus: sleep, dojos, katas, open cafeine, time source boxing, tomatoes definition of done meetings: necessary, huge time of wasting
  • 33. Repaso superficial a prácticas stand-up TDD meetings, iteration planing, test as etc. documentation focus: sleep, dojos, katas, open cafeine, time source boxing, tomatoes definition of done poker planning meetings: necessary, huge time of wasting
  • 34. Repaso superficial a prácticas stand-up TDD meetings, iteration planing, test as etc. documentation focus: sleep, dojos, katas, open cafeine, time source boxing, tomatoes definition of done poker planning meetings: collective code necessary, huge ownership time of wasting
  • 35. Repaso superficial a prácticas stand-up TDD meetings, iteration planing, test as etc. documentation focus: sleep, dojos, katas, open cafeine, time source boxing, tomatoes definition of done poker planning meetings: collective code necessary, huge ownership time of wasting project velocity
  • 36. Repaso superficial a prácticas stand-up TDD meetings, iteration planing, test as etc. documentation focus: sleep, mentoring, dojos, katas, open cafeine, time apprenticeship source boxing, tomatoes and craftsmanship definition of done poker planning meetings: collective code necessary, huge ownership time of wasting project velocity
  • 38. LEARNED El tiempo de debugging es tiempo de programación. Muchos programadores no lo ven así.
  • 39. LEARNED El tiempo de debugging es tiempo de programación. Muchos programadores no lo ven así. El desarrollo de software es un marathon, no un sprint.
  • 40. LEARNED El tiempo de debugging es tiempo de programación. Muchos programadores no lo ven así. El desarrollo de software es un marathon, no un sprint. Being late: a todos nos pasa. El truco está en detectarlo pronto y ser transparente. Estima, y reestima continuamente, y presenta los datos a la gente implicada en el proyecto constantemente
  • 41. LEARNED El tiempo de debugging es tiempo de programación. Muchos programadores no lo ven así. El desarrollo de software es un marathon, no un sprint. Being late: a todos nos pasa. El truco está en detectarlo pronto y ser transparente. Estima, y reestima continuamente, y presenta los datos a la gente implicada en el proyecto constantemente Teams are harder to build than projects
  • 42. LEARNED El tiempo de debugging es tiempo de programación. Muchos programadores no lo ven así. El desarrollo de software es un marathon, no un sprint. Being late: a todos nos pasa. El truco está en detectarlo pronto y ser transparente. Estima, y reestima continuamente, y presenta los datos a la gente implicada en el proyecto constantemente Teams are harder to build than projects IDE: vi es el pasado. los grandes IDE´s son lo más por el refactoring
  • 44. Responsabilidad y ética be carefull what you ask for
  • 45. Responsabilidad y ética be carefull what you ask for work ethic
  • 46. Responsabilidad y ética be carefull what you ask for work ethic ¿sólo 40 horas a tu profesión? Distinguir profesión de trabajo. (katayunos, the melee, leer un libro...)
  • 47. Responsabilidad y ética be carefull what you ask for work ethic ¿sólo 40 horas a tu profesión? Distinguir profesión de trabajo. (katayunos, the melee, leer un libro...) programar 18 horas seguidas hasta las 4 de la mañana no es responsable.
  • 48. Responsabilidad y ética be carefull what you ask for work ethic ¿sólo 40 horas a tu profesión? Distinguir profesión de trabajo. (katayunos, the melee, leer un libro...) programar 18 horas seguidas hasta las 4 de la mañana no es responsable. programar es extenuante y requiere grandes dosis de concentración, aprende a gestionarla (avoid The Zone, pomodoro, pair programming).
  • 49. Responsabilidad y ética be carefull what you ask for Eres responsable de tu carrera, de tu work ethic formación, etc. ¿sólo 40 horas a tu profesión? Distinguir profesión de trabajo. (katayunos, the melee, leer un libro...) programar 18 horas seguidas hasta las 4 de la mañana no es responsable. programar es extenuante y requiere grandes dosis de concentración, aprende a gestionarla (avoid The Zone, pomodoro, pair programming).
  • 50. Responsabilidad y ética be carefull what you ask for Eres responsable de tu carrera, de tu work ethic formación, etc. ¿sólo 40 horas a tu profesión? QA should find nothing Distinguir profesión de trabajo. (katayunos, the melee, leer un libro...) programar 18 horas seguidas hasta las 4 de la mañana no es responsable. programar es extenuante y requiere grandes dosis de concentración, aprende a gestionarla (avoid The Zone, pomodoro, pair programming).
  • 51. Responsabilidad y ética be carefull what you ask for Eres responsable de tu carrera, de tu work ethic formación, etc. ¿sólo 40 horas a tu profesión? QA should find nothing Distinguir profesión de trabajo. (katayunos, the melee, leer un libro...) false delivery: gran ejercicio de irresponsabilidad. programar 18 horas seguidas hasta las 4 de la mañana no es responsable. programar es extenuante y requiere grandes dosis de concentración, aprende a gestionarla (avoid The Zone, pomodoro, pair programming).
  • 52. Responsabilidad y ética be carefull what you ask for Eres responsable de tu carrera, de tu work ethic formación, etc. ¿sólo 40 horas a tu profesión? QA should find nothing Distinguir profesión de trabajo. (katayunos, the melee, leer un libro...) false delivery: gran ejercicio de irresponsabilidad. programar 18 horas seguidas hasta las 4 de la mañana no es responsable. pide ayuda, nunca digas no cuando te piden ayuda. programar es extenuante y requiere grandes dosis de concentración, aprende a gestionarla (avoid The Zone, pomodoro, pair programming).
  • 53. Responsabilidad y ética be carefull what you ask for Eres responsable de tu carrera, de tu work ethic formación, etc. ¿sólo 40 horas a tu profesión? QA should find nothing Distinguir profesión de trabajo. (katayunos, the melee, leer un libro...) false delivery: gran ejercicio de irresponsabilidad. programar 18 horas seguidas hasta las 4 de la mañana no es responsable. pide ayuda, nunca digas no cuando te piden ayuda. programar es extenuante y requiere grandes dosis de concentración, practice ethics --> practice on your aprende a gestionarla (avoid The own time, not at your employers time Zone, pomodoro, pair programming).
  • 55. Aprender a decir no hazlo o no lo hagas, pero no “lo intentes”
  • 56. Aprender a decir no hazlo o no lo hagas, pero no “lo intentes” Falta de ética: cada vez que dices que “lo intentarás” sabiendo que es imposible, huyes de la confrontación.
  • 57. Aprender a decir no hazlo o no lo hagas, pero no “lo intentes” Falta de ética: cada vez que dices que “lo intentarás” sabiendo que es imposible, huyes de la confrontación. De la confrontación nacen mejores soluciones
  • 58. Aprender a decir no hazlo o no lo hagas, pero no “lo intentes” Falta de ética: cada vez que dices que “lo intentarás” sabiendo que es imposible, huyes de la confrontación. De la confrontación nacen mejores soluciones arguments/disagreements --> any argument that cant ´b e settled in five minutes can´t be settled by arguing
  • 59. Aprender a decir no hazlo o no lo hagas, pero no “lo intentes” Falta de ética: cada vez que dices que “lo intentarás” sabiendo que es imposible, huyes de la confrontación. De la confrontación nacen mejores soluciones arguments/disagreements --> any argument that cant ´b e settled in five minutes can´t be settled by arguing Las estimaciones son eso: estimaciones
  • 61. Dí sí Un buen profesional debe comprometerse.
  • 62. Dí sí Un buen profesional debe comprometerse. “es que las estimaciones son estimaciones” - el gran cáncer del agilismo.
  • 63. Dí sí Un buen profesional debe comprometerse. “es que las estimaciones son estimaciones” - el gran cáncer del agilismo. Creando un lenguaje para el compromiso:
  • 64. Dí sí Un buen profesional debe comprometerse. “es que las estimaciones son estimaciones” - el gran cáncer del agilismo. Creando un lenguaje para el compromiso: I need to lose weight, Some should make that happend
  • 65. Dí sí Un buen profesional debe comprometerse. “es que las estimaciones son estimaciones” - el gran cáncer del agilismo. Creando un lenguaje para el compromiso: I need to lose weight, Some should make that happend I hope to get this done by tomorrow, I wish i had time fo rthat
  • 66. Dí sí Un buen profesional debe comprometerse. “es que las estimaciones son estimaciones” - el gran cáncer del agilismo. Creando un lenguaje para el compromiso: I need to lose weight, Some should make that happend I hope to get this done by tomorrow, I wish i had time fo rthat Let´s meet sometime. Let´s finish this thing
  • 68. Trabajo bajo presión stay clean: professionals do not sucums to the temptation to create a mess ir order to move quickly. Quick and dirty is an oxymoron. Dirty always means slow!
  • 69. Trabajo bajo presión stay clean: professionals do not sucums to the temptation to create a mess ir order to move quickly. Quick and dirty is an oxymoron. Dirty always means slow! no abandonar tus principios en momentos de presión, sino hacerte más fuerte en ellos. Guarrear, o dormir menos, te hace menos productivo, no más.
  • 71. DETAILS Communication about details is hard. It´s to easy for each party to wave their handas and assume that the other party understand.
  • 72. DETAILS Communication about details is hard. It´s to easy for each party to wave their handas and assume that the other party understand. uml/MDA --> mda assumes that the problem is code. but code is not the problem. it has never been the problem. the problem is detail.
  • 74. THERE WILL BE CODE We will never be rid of code, because code represents the details of the requirements. At some level those details cannot be ignored or abstracted.
  • 75. THERE WILL BE CODE We will never be rid of code, because code represents the details of the requirements. At some level those details cannot be ignored or abstracted. The level of abstraction of our languages will continue to incresase. But it will not elimnate code. All the specifications written in these higher level and domain-specific languege will be code!
  • 76. THERE WILL BE CODE We will never be rid of code, because code represents the details of the requirements. At some level those details cannot be ignored or abstracted. The level of abstraction of our languages will continue to incresase. But it will not elimnate code. All the specifications written in these higher level and domain-specific languege will be code! if you have beenn a programmer for more than two or three years, you have probable been significantly slowed down by someone elseñs messy code.
  • 78. the boy scout rule leave the campground cleaner than you found it.
  • 79.
  • 80. You are reading this book for two reasons. First, you are a programmer. Second, you want to be a better programmer. Good. We need better programmers...
  • 81. You are reading this book for two reasons. First, you are a programmer. Second, you want to be a better programmer. Good. We need better programmers... is a prequel of Agile Software Development: Principles, Patterns, and Practices...
  • 83. MEANINGFULL NAMES int d; / elapsed time in days / int elapsedTimeInDays;
  • 85. FUNCTIONS / mejor función es la que tiene cero argumentos /la Functions that take three arguments are significantly harder to understand than dyads. The issues of ordering, pausing, and ignoring are more than doubled. I suggest you think very carefully before creating a triad.
  • 86. FUNCTIONS / mejor función es la que tiene cero argumentos /la Functions that take three arguments are significantly harder to understand than dyads. The issues of ordering, pausing, and ignoring are more than doubled. I suggest you think very carefully before creating a triad. //mal... function activarSistema(boolean activar); //bien! function activarSistema(); function desactivarSistema();
  • 88. ERROR HANDLING Functions should do one thing. Error handing is one thing
  • 89. ERROR HANDLING Functions should do one thing. Error handing is one thing public void delete(Page page) { try { deletePageAndAllReferences(page); } catch (Exception e) { logError(e); } private void deletePageAndAllReferences(Page page) throws Exception { deletePage(page); registry.deleteReference(page.name); configKeys.deleteKey(page.name.makeKey()); } private void logError(Exception e) { logger.log(e.getMessage()); }
  • 91. COMMENTS The proper use of comments is to compensate for our failure to express ourself in code
  • 92. COMMENTS The proper use of comments is to compensate for our failure to express ourself in code Every time you write a comment, you should grimace and feel the failure of your ability of expression.
  • 93. COMMENTS The proper use of comments is to compensate for our failure to express ourself in code Every time you write a comment, you should grimace and feel the failure of your ability of expression. / Check to see if the employee is eligible for full benefits / if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) if (employee.isEligibleForFullBenefits())
  • 94. COMMENTS The proper use of comments is to compensate for our failure to express ourself in code Every time you write a comment, you should grimace and feel the failure of your ability of expression. / Check to see if the employee is eligible for full benefits / if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) if (employee.isEligibleForFullBenefits()) //bien! / Returns an instance of the Responder being tested. / protected abstract Responder responderInstance();
  • 95. FORMATTING //mal! máximo un nivel de tabulación! if (this.is){ String cocotero = “tralari”; for (i=0;i<10;i++){ pepo = coco[i]; while (pepo > coco){ cacaflush(); } } }
  • 96. FORMATTING //mal! máximo un nivel de tabulación! if (this.is){ String cocotero = “tralari”; for (i=0;i<10;i++){ pepo = coco[i]; while (pepo > coco){ cacaflush(); } } } //bien! sin braquets, no hay otra... if (page != null) pageData = page.getData(); while ((line = br.readLine()) != null) measureLine(line);
  • 97. CLASES “Methods with no more than 5 lines of code, classes with no more than 3 public methods (average)” carlos ble
  • 98. escribir código limpio te fuerza a seguir patrones, y prácticas, tras los cuales hay una serie de principios.
  • 99. ?

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n