Está en la página 1de 8

c 

   
  

     ¿Por qué desperdiciar tu vida desarrollando software sino te
preocupas en hacerlo bien?

     Desconecta el piloto automático y toma el control. Critica y


evalúa constantemente tu trabajo.

  
 
  
En vez de excusas, propón opciones. No digas que no
se puede hacer algo, explica mejor lo que sí puedes hacer.

  
   Corrige malos diseños, decisiones equivocadas y el código
mal escrito cuando lo veas.

 
  
 No puedes forzar que la gente cambie. En vez de eso,
muestra cómo podría ser el futuro y ayúdalos a participar en tu creación.


 !c   "No te obsesiones con los detalles porque hacen olvidarte de
lo que ocurre alrededor.

#
 
   $     
  Involucra a los usuarios para determinar
las necesidades de calidad reales del proyecto.

%        

  Haz de aprender un hábito

&   ' 



 $  ( 

)No te dejes convencer por vendedores,
dogma o medios. Analiza la información en tus términos y en basada en tu proyecto.

%    $ 

 '  
 . No tiene sentido tener buenas ideas
sino las transmitimos con eficacia.

    Cada pieza de conocimiento debe de tener una única e inequívoca


representación dentro de un sistema.

# '*
    Si es fácil de reutilizar, la gente lo hará reutilizable. Crea un
entorno que apoye la reutilización.

+    '
   
  
Los componentes de un diseño son
autónomos, independientes y tienen un único propósito bien definido.

 )(
 '  . Las decisiones no se deben grabar en una piedra, sino en la
arena de la playa. Cualquier decisión debe ser susceptible a cambio.

,
      . Haz distintas pruebas y tracea los resultados para ver
cómo se van compenetrando para llegar a nuestro objetivo.
±      Crear prototipos es un experiencia para el aprendizaje. Su
valor no reside en el código generado, sino en las lecciones que aprendes al crearlo.

 

   Diseña y programa usando el mismo lenguaje usado por el
usuario.

#  
    Haz una estimación antes de empezar. Podrás
adelantarte a los posibles problemas futuros.


   
 
-  Usa la experiencia que vayas ganando para refinar las
escalas temporales de entrega del proyecto.

c  

      El texto plano nunca será obsoleto. Ayuda a
aprovechar tu trabajo y simplifica la depuración así como las pruebas.

±     .) / 


  Usa la línea de comandos (Shell) para
resultados seguros que no sean interferidos por las interfaces gráficas.

±   0
    El editor debe de ser una extensión de tu mano. Asegúrate
que es configurable, ampliable (plugins) y programable.

  
  
-  '  El control del código fuente es una máquina del
tiempo, siempre puedes volver atrás.

&     


No importa de quién o de qué es la culpa, sigue siendo
un problema de todas formas y todavía necesita ser reparado.

       .   /Respira profundamente y PIENSA en la causa del


error.

+     ! 


"Es raro encontrar un error en el Sistema Operativo o en el
compilador, o incluso en librerías de terceros. El error (bug) siempre es más probable que
esté en la aplicación.

      Prueba tu hipótesis en el entorno actual que tengas, con datos
reales y condiciones límites.

&          Gastas una gran parte del día peleando con
texto. ¿Por qué no hacer que el ordenador haga el trabajo por ti?

+
  
-  $  
 
-  Los generadores de código aumentan la productividad
y evitan la duplicación.

     
    '1  '
 El software no puede ser perfecto. Protege el
código y a los usuarios de errores inevitables.
  2

 Recurre a los contratos para documentar y comprobar que el código
hace realmente lo que tiene que hacer.

+    . Un error cuanto antes sea detectado mejor, hará menos daño que aquel
que se detecte tarde, hará que creemos que la aplicación funciona.

±' 
       Las afirmaciones validan tu hipótesis.
Úsalas para proteger el código de un mundo desconocido.

± 

    

 El abuso del uso de excepciones
pueden convertir tu aplicación en poco legible y sotenible. Usa las excepciones para casos
excepcionales.

&
 $   Siempre que sea posible, la rutina o el objeto asignado a un
recurso debe de ser borrado cuando ya no sea necesario.

3   
    -  Evita el acoplamiento debido al código
³tímido´ y aplica la Ley de Demeter.

 '      Implementa las opciones para una tecnología usando opciones de
configuración, no a través de integración ó ingeniería.

 


 
-       Programa para el caso general, y
coloca las especificaciones fuera del código base compilado.

&   '      




Aprovecha la concurrencia en
el flujo de trabajo del usuario.

  2 
   Diseña en términos de servicios independientes, detrás de objetos
concurrentes bien definidos, interfaces consitentes.

    2


Permite la concurrencia, y diseñarás interfaces más
limpias.

        Gana flexibilidad a bajo coste diseñando tu


aplicación en términos de modelos y vistas.

± 
  '    Usa las pizarras para coordinar agentes
y hechos dispares, manteniendo la independencia y el aislamiento entre los participantes.

    




Confíe sólo en las cosas confiables. Ten cuidado con la
complejidad accidental, y no confundas una feliz coincidencia con un plan organizado.

#   
-         Ten una idea de la longitud de las cosas
antes de empezar a escribir código.
    
El análisis matemático no te lo dice todo. Prueba el tiempo
consumido por tu código en su entorno final.

'
     '
    Así como quitas las malas hierbas de un jardín
y lo reorganizas, reescribe, haz de nuevo y rediseña el código cuando sea necesario. Arregla
la raíz del problema.

  2  Empieza a pensar en las pruebas antes de escribir una línea de código.

   '1   )*     Prueba sin piedad. No hagas que los


usuarios encuentren los errores por ti.

       
-  $  
 Los asistentes pueden generar
montones de código. Asegúrate de entender todo antes de incorporarlo a tu proyecto.

   $   0
 Los requisitos rara vez están en la superficie. Están
enterrados bajo capas de supuestos, conceptos erróneos y política.

,
      
     Esta es la mejor forma de
conocer cómo funciona el sistema que utilizarán realmente.

4

  *$    Invertir en abstracción, no en la


implementación. Las abstracciones pueden sobrevivir.

±     (


 Crea y mantén una única fuente de todos los términos y
vocabulario específico de un proyecto.

   '  




Cuando nos enfrentamos a un problema
imposible, identifica las limitaciones reales. Tienes que preguntarte ³¿Se tiene que hacer de
esta manera? ¿Hay que hacerlo en todos?

+ 
     Has ido adquiriendo experiencia toda tu vida. No ignores las
dudas que te puedan surgir.

& 
    
  
$ 
    
  No caigas en la
espiral de las especificaciones, en algún momento tenemos que empezar a programar.

    
     '  No adoptes ciegamente cualquier técnica sin
suponerla en el contexto de tus prácticas de desarrollo y capacidades.

4)  


   
     2 Ten cuidado con las
exageraciones de los proveedores, el dogma de la industria, y el precio. Juzga las
herramientas en función a sus méritos.
Ö   $      '
 No separes diseñadores de
programadores ni los probadores (testers) de los modeladores de datos. Construye equipos
en función de tu manera de construir código.

    
     Un Shell script o fichero por lotes se ejecutará las
mismas instrucciones, en el mismo orden, una y otra vez.

        '   *


Las pruebas que se
ejecutan cada vez que compilas son más efectivas que los planes de pruebas teóricos.

4 
-   *  )$     )(  Queda
todo dicho.

±       Introducir ³bugs´ a propósito en una copia


separada de la fuente para verificar que las pruebas detectan dicho error.

 
       
   
-  Identifica y pon a prueba
los estados de los programas. Probar sólo líneas de código no es suficiente.

+
      Una vez que los probadores (humanos) encuentran un
error, esta debe de ser la última vez que se encuentra. A partir de ahora tienen que ser las
pruebas automáticas las que comprueben los errores.

+        


- escribir documentos igual que escribes código:
respeta el principio DRY (No Te Repitas, DontRepeatYourself), usa metadatos, MVC,
generación automática, así sucesivamente.

 
 
- 
 
-    

 La documentación
creada separadamente del código acaba siendo poco precisa y actualizada.

 '     


      Cuando comprendas las
expectativas de los usuarios, entonces es el momento de ofrecer un poco más.

5   Los artesanos de la Edad Media se sentían orgullosos de firmar su


trabajo. Tu también deberías.


Ò  
   

± *elcome, Javalobby readers! You might be interested in the followup to this post.
Thanksforthegreatfeedback and suggestions.

° |  |  
       
   
     
         

                !      
 
   
° ð "
" # ð "   
  
   
|
  
   i 
      |        

     #      


   

      $             
   
             
                
      
   %      
     
&    
 "|     #               
  " |''        "

°  | 
 ()  |  
 (   )
*(+),         
    ++    
   % $--  " 
   &    |   
   ++  
   
        
          
       
    
 ./         
"  

° ð   |   ð  0 ð  $ 


1  #   $
   2     3|0 ð    
   
   
          
     
   
     3|     &         4
            $    )  
   $                     

      
 
   
    
   
                    5
        
    4       
         3|   
 6       
        7           
    
                        

° |    

     |  $ 8 
8   |
         
 &         
              
      "9$:

 8      


        
 

 |
             %  ð    
          + 
 ( & + 8   
   
   "       
        
  " ð 

 
4      "    
        
 8
  

      

Note what  6 on the list: any of the Java 5 reference books or any of the tens (hundreds?)
of J2EE books. Its important to keep up with the language and the platform, but I think
thats better done through programming with the JDK and examples as reference. The
reference books can be helpful for getting up to speed for day to day work, but I don't think
they are essential for furthering your knowledge or your craft. Long after your J2EE
ë.4.x.niner book is collecting dust on the shelf, Effective Java will still be a reference you
consult regularly.

También podría gustarte