http://cleancoder.posterous.com/software-craftsmanship-things-wars-commandmen
Bueno, o a discutirlo en esta lista. También sería interesante. (Eso
sí, obligatorio leerlo antes, claro) :-)
Un saludo,
Jose Manuel Beas
http://agilismo.es
http://jmbeas.iexpertos.com
http://twitter.com/jmbeas
En realidad, creo que todo el mundo con un mínimo interés en su trabajo (cualquiera que lea blogs de tecnología, esté suscrito a esta lista, etc…) está entre esos "craftmans". Da igual que la moda ahora sea TDD o las Katas… son gente con interés que, casi seguro, estarán por encima de la media del mercado laboral.
Sobre el artículo en si, voy a manipularlo ligeramente ;-)
* We are tired of writing crap
* We will delight our customers by writing the best code we can.
Francamente, si escribes mal código, cuando escribas el mejor código que sepas, seguirá siendo malo. Es un objetivo bastante bajo (todo el mundo puede trabajar "como mejor sabe"… lo importante es cuanto sabe). Bueno, y está el tema de si a tu cliente le "deleita" que escribas ese código ¿vuestros clientes _miran_ vuestro código?
También está el milagro de las fechas de entrega y la velocidad de desarrollo. Por ser un artesano, mágicamente cumples los deadlines.
* We will meet our schedules by knowing that the only way to go fast is to go well.
Ignorando totalmente los temas de gestión, comunicación y otros soft skills imprescindibles para que un proyecto vaya bien (así que, sí que pone el código en el centro de todo, aunque lo niegue).
Por último me parece muy interesante como el 2º comentario rebate su simil con músicos y otros profesiones que practican fuera del escenario. Nosotros no tenemos escenario… o peor, estamos en él, al menos, 8 horas al día.
Todo esto me lleva al autobombo y mi antiguo post [1]: aprende a costa de tus clientes (o, en polite, aprende cada día, pero hazlo con problemas reales y no con problemas de juguete).
[1] http://blog.abelmuino.com/2010/09/aprende-a-costa-del-cliente.html
(y espero haber generado suficiente controversia para que surjan réplicas interesantes! :-) )
> --
> Has recibido este mensaje porque estás suscrito al grupo "agile-spain" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a agile...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a agile-spain...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/agile-spain?hl=es.
>
--
Abel Muiño
http://abelmuino.es
Respecto a tu "manipulación" del texto. Efectivamente, has manipulado
a tu interés. (No entiendo bien por qué) Pero UncleBob lo dice bien
claro cuando dice:
We are not putting code at the center of everything.
We are not turning inward and ignoring the business and the customer.
nada más empezar.
¿Dónde se lee en el texto "Ignorando totalmente los temas de gestión,
comunicación y otros soft skills imprescindibles para que un proyecto
vaya bien"? No sé, no sé... yo no consigo leerlo. ;-)
Respecto a lo de que "debería venir de serie". ¡POR SUPUESTO! En eso
estamos, ¿no?
Y, por cierto, estoy con lo de que las etiquetas es lo de menos. A mi
también me la refanfinfla bastante el término a usar. Quizás el
término más acertado sea el más obvio: profesional.
Por cierto, gracias Jesús, has resumido mis pensamientos
perfectamente. Creo que hemos coincidido ya en demasiados sitios. :-)
voy a ir contestando caso por caso lo que expones.
Abel Muiño Vizcaino wrote:
> Yo no soy muy partidario del Craftmanship… no porque sea mala idea, si no porque debería estar incluido "de serie". Hacer algo especial es como aceptar que nunca te preocupó el código y ahora tienes que aprender a marchas forzadas.
En un mundo ideal, todo el que trabaja haciendo software llevaría la profesionalidad "de serie". En los últimos 16 años no he trabajado con mucha gente que realmente considere profesionales en lo que hacen (ya sean programadores, jefes de proyecto, comerciales, etc.). La triste realidad (y esto se puede aplicar a todas las profesiones) es que la mayoría de la gente decide trabajara para poder pagarse su piso y su estilo de vida (que suele ser bastante diferente de sus vidas profesionales).
Cuando tienes la suerte de dar con un profesional que realmente le apasiona lo que hace es cuando realmente ves lo diferente que puede ser la experiencia. Ejemplos: cuando era un chaval y iba al colegio (cosa que me aburría bastante) había un profesor que realmente hacia que disfrutara de cada instante de sus clases, se notaba que realmente le apasionaba enseñar. En un caso mas reciente, el medico de paliativos, que visito a mi difunta madre después de su operación, fue como una bendición. El poder que tenia de transmitir preocupación y la forma en la que hablaba y entendía los miedos de mi madre fueron una de las mejores experiencias de profesionalidad fuera de mi profesión que haya vivido jamás.
La realidad: profesionalidad y pasión por el trabajo no vienen de serie.
> En realidad, creo que todo el mundo con un mínimo interés en su trabajo (cualquiera que lea blogs de tecnología, esté suscrito a esta lista, etc…) está entre esos "craftmans". Da igual que la moda ahora sea TDD o las Katas… son gente con interés que, casi seguro, estarán por encima de la media del mercado laboral.
No creo que un mínimo sea suficiente.
> Sobre el artículo en si, voy a manipularlo ligeramente ;-)
>
> * We are tired of writing crap
> * We will delight our customers by writing the best code we can.
>
> Francamente, si escribes mal código, cuando escribas el mejor código que sepas, seguirá siendo malo. Es un objetivo bastante bajo (todo el mundo puede trabajar "como mejor sabe"… lo importante es cuanto sabe). Bueno, y está el tema de si a tu cliente le "deleita" que escribas ese código ¿vuestros clientes _miran_ vuestro código?
Es cierto que si no sabes programar el que programes lo mejor que puedas no puede dar buen resultado.
Una de las razones por las que practicamos todos los días fuera del trabajo para poder mejorar y saber ayudar a nuestros clientes con buen criterio. Razón por la que buscamos a otros profesionales con ideas semejantes para que nos enseñen sus formas de resolver problemas y sus técnicas. Razón por la que viajamos a otras empresas para programar con ellos durante unos días y aprender como afrontan ellos los retos del día a día.
Para contestar a tu pregunta. Si, alunos de nuestros clientes miran nuestro código.
> También está el milagro de las fechas de entrega y la velocidad de desarrollo. Por ser un artesano, mágicamente cumples los deadlines.
> * We will meet our schedules by knowing that the only way to go fast is to go well.
No es un acto de magia ni nada semejante. Si soy un profesional y entiendo mi oficio, puedo realmente dar estimaciones que se asemejen bastante mas a la realidad que cualquier otra persona, es lo que da la experiencia. Yo cuando doy una fecha la cumplo. ¿Porque? Por profesionalidad, honor. ¿Como? Basandome en mi experiencia y haber programado cosas semejantes en el pasado.
> Ignorando totalmente los temas de gestión, comunicación y otros soft skills imprescindibles para que un proyecto vaya bien (así que, sí que pone el código en el centro de todo, aunque lo niegue).
¡Nada mas lejos de la realidad! Un artesano usa los *soft skills* todo el rato. A nosotros (aquí estoy hablando de nuestro taller) no nos hace falta un gestor, jefe de proyecto, etc ya que somos nosotros los que hacemos estas tareas.
Un artesano debería saber como escribir código en diferentes lenguajes (al fin y al cabo estamos en esta profesión), hablar con clientes, estimar el trabajo, vender un proyecto con honestidad, incluso abrir su propia empresa. Obviamente nadie sabe hacer eso de cero, todo requiere aprendizaje y dedicación.
Como nuestro trabajo central se basa en escribir código, eso es lo primero que debemos aprender y aprender bien.
> Por último me parece muy interesante como el 2º comentario rebate su simil con músicos y otros profesiones que practican fuera del escenario. Nosotros no tenemos escenario… o peor, estamos en él, al menos, 8 horas al día.
Nuestro escenario es nuestro sitio de trabajo, en el intentamos colaborar con nuestros clientes, entender su problema y darles la mejor solución (la mayoría de las veces teniendo que basar nuestra solución en problemas vistos anteriormente en otros proyectos y en nuestra practica).
Si no tratas tu dia laboral como tu escenario nunca darás lo mejor de ti (cuando estoy practicando puedo cometer errores, frustrarme, ir a la cocina a por otro cafe, darme un paseo para aclarar mi cabeza).
En el caso de las 8 horas laborales... Dudo mucho que te puedas concentrar durante un periodo de 8 horas seguidas (yo no puedo). Si trabajas realmente concentrado, totalmente enfocado en el problema en cuestión (ya sea escribiendo código o hablando con tu cliente definiendo la puesta en producción o haciendo un release plan) después de 6 a lo máximo 7 horas estas rendido y lo que vas a poder producir será de peor calidad (a mi me gusta ofrecer la mejor calidad posible a mis clientes).
> Todo esto me lleva al autobombo y mi antiguo post [1]: aprende a costa de tus clientes (o, en polite, aprende cada día, pero hazlo con problemas reales y no con problemas de juguete).
Aprender a costa de mis clientes me parecería una estafa. De hecho me he encontrado con situaciones en las que no tenia una solución técnica a un problema (en el ultimo caso tarde 2 días en encontrar una solución) y naturalmente no cobre a mi cliente por esos días ya que no me parecía justo.
> (y espero haber generado suficiente controversia para que surjan réplicas interesantes! :-) )
No se si has generado controversia o no, pero espero que la respuesta sea al menos interesante...
Enrique Comba Riepenhausen
Abel, siempre andas picando!!! Eso es bueno ;)
No creo que a día de hoy se pueda practicar en el trabajo una mejora contínua, o al menos no la gran mayoría de las empresas por las que yo he pasado.
Cuando tú te metiste a desarrollar en RoR, ¿lo hiciste desde la empresa?
si por ejemplo a mi me diera por practicar el TDD directamente sobre el código del cliente, seguramente lo que me saldría sería una basura además de tardar días en hacer un hola mundo.
El 17/01/2011, a las 15:47, José Manuel Beas escribió:
> Lo siento Abel, no estoy de acuerdo con que debamos aceptar tu
> afirmación "Nosotros no tenemos escenario… o peor, estamos en él, al
> menos, 8 horas al día." como cierta e inexorable: yo quiero dejar de
> trabajar así.
No entiendo a qué te refieres con "así". ¿Menos de 8 horas? Se puede, yo lo hago :-)
Por poner lo de las 8 horas en contexto. El argumento de Uncle Bob es que como los músicos practican, también debemos practicar nosotros.
Pero un músico solo "trabaja" (actúa) unas pocas horas por semana, nosotros muchas más. Como todas las comparaciones que se hacen entre la profesión X y la nuestra, es muy imperfecta… los paralelismos están bien para "ilustrar", pero no se sostienen como argumento del que derivar conclusiones.
> No me parece ético hacer que mis clientes paguen para
> que yo aprenda a usar el framework tal o la herramienta pascual. No me
> parece bien que yo no pueda dar estimaciones fiables de mi trabajo
> simplemente porque no tengo el conocimiento o la preparación necesaria
> para ello. Claro, el "mundo real", se me olvidaba... pero me resisto a
> que el dichoso "mundo real" sea la única realidad posible. Sé que no
> lo es y quiero que tampoco sea la mía.
Ólvidate del mundo real, no lo he mencionado.
Tus clientes te pagan por resolver un problema. Con que framework lo hagas es (normalmente) tu problema.
Y las estimaciones… en fin… hay montones de managers muy buenos en la lista que te pueden hablar de su exactitud. Yo sólo diré que (en mi experiencia) los conocimientos técnicos no son el único parámetro ni el más importante.
> Respecto a tu "manipulación" del texto. Efectivamente, has manipulado
> a tu interés. (No entiendo bien por qué) Pero UncleBob lo dice bien
> claro cuando dice:
> We are not putting code at the center of everything.
> We are not turning inward and ignoring the business and the customer.
> nada más empezar.
Y yo he discutido eso, en lugar de aceptar la palabra de Uncle Bob como verdad absoluta, manipulando el texto para argumentarlo. Pero es mi interpretación y acepto que puede no ser "la correcta".
> ¿Dónde se lee en el texto "Ignorando totalmente los temas de gestión,
> comunicación y otros soft skills imprescindibles para que un proyecto
> vaya bien"? No sé, no sé... yo no consigo leerlo. ;-)
Está en el espacio negativo que dejan los "We will". No hay ningún "We will have a healthy relationship with our customers" o cualquier otro tema de gestión.
Así que mi razonamiento es que Uncle Bob realmente sostiene que "we will meet our deadlines" simplemente con conocimientos técnicos.
Como siempre, es un placer leerte… lamentablemente yo no tengo el tiempo para contestar punto por punto y con tanto detalle (espero que nadie lo considere una falta de respeto).
Estoy de acuerdo contigo en que no todo el mundo es un gran profesional. Pero todos esos malos profesionales sin pasión por su trabajo jamás se interesarán en el craftmanship… Y los que sí se interesan son profesionales y apasionados por su profesión.
Así que el Craftmanship predica a conversos. Y en ese contexto casi nada de lo que dice Uncle Bob tiene sentido.
Alejándonos del artículo en si…
Entiendo que no te guste cobrar a tus clientes por tu aprendizaje. Ya hemos cruzado emails sobre esto… mi opinión es que en todos los proyectos necesitas aprender. En caso contrario tu trabajo sería automatizable y sobrarías.
En resumen, siempre cobras por aprender a costa de tus clientes.
El debate real es… ¿hasta que punto es "aceptable" aprender durante el proyecto? Cada uno traza su línea. Tu comentas el caso en el que no cobraste por el tiempo que dedicaste a investigar. Yo he tenido clientes que me han pedido explícitamente que les cobre ese tiempo.
Sobre el tema de estimaciones y soft-skills… yo hablo desde la interpretación del artículo, no desde un caso particular. Estoy más que seguro que en tu caso vas más allá de esa lista que hace Uncle Bob… aunque sólo sea por lo que cuenta la gente.
No creo que a día de hoy se pueda practicar en el trabajo una mejora contínua, o al menos no la gran mayoría de las empresas por las que yo he pasado.Siempre digo lo mismo en estos casos… cambia de empresa o crea la tuya. Y al que me diga que esto es más difícil que cambiar el mundo a base de manifestos, no le contesto :-)
Cuando tú te metiste a desarrollar en RoR, ¿lo hiciste desde la empresa?Pues la verdad es que sí y después seguí con http://thecloudmarket.com, dónde uno de los clientes era yo. Otro problema real.
Y la experiencia de todo eso me permite cobrar por desarrollar en RoR y dejar a los clientes contentos. ¿Alguien puede defender que hacer la kata de los números romanos te permitirá hacer los mismo?
Recuerda, no estoy en contra de aprender… No tengo nada en contra de quien quiera hacer katas, pero no comparto que el juego de la vida o las ruby koans supere en apredizaje a los problemas reales. Y si tienes problemas reales, ¿porqué conformarse con un sustituto?
si por ejemplo a mi me diera por practicar el TDD directamente sobre el código del cliente, seguramente lo que me saldría sería una basura además de tardar días en hacer un hola mundo.Por eso haces baby steps y no cambios revolucionarios. Recuerda que te pagan para resolver problemas. Pero no te dicen cómo. Asume riesgos y sus consecuencias.
Estoy de acuerdo contigo en que no todo el mundo es un gran profesional. Pero todos esos malos profesionales sin pasión por su trabajo jamás se interesarán en el craftmanship… Y los que sí se interesan son profesionales y apasionados por su profesión.
Así que el Craftmanship predica a conversos. Y en ese contexto casi nada de lo que dice Uncle Bob tiene sentido.
--
What we are not doing: Cosas que no vamos a hacer.
- Un marinero practica nudos y maniobras con buen clima incluso en puerto. No se inventa un nudo durante una regatta o tormenta.- Un bombero de rescate, no se inventa un arnés cuando tiene una persona con riesgo de vida.
Opino que la transparencia es clave en este aspecto. He visto y he
aprendido que no se debe enganar al cliente relativo a lo que sabes,
sino hay que decir de la manera mas objetiva posible la experiencia
que tienes como persona o empresa.
En consecuencia hay situaciones donde no eres competitivo, porque hay
otros que saben mas que tu y por eso son mejores que tu en este temas.
Si es asi me retiro y asi esta bien en mi opinion.
Pero hay situaciones donde le conviene al cliente de contratar alguien
que no sepa o donde simplemente no tiene otro remedio que contratar
alguien aunque no sepa o sepa poco. Dos ejemplos:
1) Conocimientos multiples
Los proyectos de hoy en dia suelen requerir alguien que conoce la
tecnologia, el sector, las soluciones de la casa, que tenga
metodologia, que sepa gestionar y hablar como Steve Jobs. Muchas veces
no hay una empresa que cumple todo esto y se tiene que.contratar
alguien con conocimiento sectorial, aunque tendra que aprender la
tecnologia.
2) Tecnologia nueva
Sale algo nuevo y no hay nadie en el mercado que sepa. En este caso
puede ser razonable de contratar alguien que ha demostrado su
capacidad de aprendizaje y el valor diferencial es la velocidad de
aprendizaje
Vamos, no le veo ningun problema en cobrar aunque no sepas, pero el
cliente deberia saberlo antes y tomar la decision que mas le conviene.
Saludos,
Harald
2011/1/18, Abel Muiño Vizcaino <amu...@gmail.com>:
> --
> Has recibido este mensaje porque estás suscrito al grupo "agile-spain" de
> Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> agile...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> agile-spain...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/agile-spain?hl=es.
>
>
--
Gesendet von meinem Mobilgerät
--
Has recibido este mensaje porque estás suscrito al grupo "agile-spain" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a agile...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a agile-spain...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/agile-spain?hl=es.
De hecho, creo que voy a montar 12 meses 1 startup, con un poco de suerte hasta podemos practicar y hacernos millonarios.
¿Alguien se anima a traducir el último artículo de UncleBob?
http://cleancoder.posterous.com/software-craftsmanship-things-wars-commandmen
Bueno, o a discutirlo en esta lista. También sería interesante. (Eso
sí, obligatorio leerlo antes, claro) :-)
Un saludo,
Jose Manuel Beas
http://agilismo.es
http://jmbeas.iexpertos.com
http://twitter.com/jmbeas
--
Has recibido este mensaje porque estás suscrito al grupo "agile-spain" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a agile...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a agile-spain...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/agile-spain?hl=es.
Sólo para que me quitéis la razón y me quede tranquilo…
No está nadie diciendo que el Craftsmanship <==> Profesionalidad ni que para ser buen Craftsman debas renunciar a "invertir" en familia y amigos ¿verdad?
Es que me da la sensación de que, para algunos, ese tio de 55 años del que se habla se convirtió en un no-craftsman (y por lo tanto mal profesional) de repente por tener una hipoteca y niños… y preferir pasar los fines de semana con su familia en lugar de irse a hacer code katas a algún lugar remoto.
(Y no digo que no se puedan hacer las dos cosas, pero es que hay gente que lo hace bien sin "comulgar" con el craftmanship… ni TDD, ni katas, ni retreats… pero aun así apasionada y dando buenos resultados en su trabajo).
Ya es bastante difícil encontrar a gente con la que tener una buena conversación técnica como para empezar a descartar a los que no cumplen con la checklist de Uncle Bob porque "no son profesionales".
--
--
--
¿Alguno se atreve a poner la mano en el fuego que en 10 años POO o Java no sean un callejón sin salida tecnológico? No lo hagais... la tecnología cambia a una velocidad de vértigo. Y es como el clima, es muy facil decir lo que abria que haber echo una vez pasado.
Muchas gracias por tu trabajo Miguel Ángel
--
>> agile-spain...@googlegroups.com<agile-spain%2Bunsu...@googlegroups.com>
En mi opinion la calidad / prestaciones que no se ven a la primera
tambien muchas veces, aunque no siempre, son requerimientos del
cliente que corresponden a una necesidad. Si no corresponden a una
necesidad / requerimiento no deben programarse.
Es decir, si mi necesidad es una chaqueta para trabajar en taller de
coches como mecanico en el mediterraneo, no necesito un forro de seda,
ni termico. Si necesito un formulario de un solo uso, talvez no
necesito una arquitectura para crear familias de formularios.
Saludos,
Harald
2011/1/21, Joaquín Engelmo Moriche <kiniso...@gmail.com>:
>> agile-spain...@googlegroups.com<agile-spain%2Bunsu...@googlegroups.com>
>> Para tener acceso a más opciones, visita el grupo en
>> http://groups.google.com/group/agile-spain?hl=es.
>>
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "agile-spain" de
> Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> agile...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> agile-spain...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/agile-spain?hl=es.
>
>
--
Gesendet von meinem Mobilgerät