archivo

Archivo de la etiqueta: Jerry Weinberg

Hay que tomar decisiones, lo fácil es que sea otro quien las tome por ti pero eso no siempre va a funcionar porque muchas veces serás el último eslabón de la cadena teniendo en cuenta, además, que estamos todo el día tomando decisiones.

A veces se tarda más de lo conveniente en tomar una decisión y cuando se toma, aunque sea acertada, resulta que es demasiado tarde y ya no sirve de nada. No tengo que daros ningún ejemplo porque cada uno de nosotros ha vivido esto en reiteradas ocasiones en primera persona.

Es cierto que no todas las decisiones son iguales y que en unas expones y arriesgas más que en otras y que las consecuencias tampoco son las mismas. En tu rol tendrás que tomarlas y asumir tus errores de la misma forma que te llenan tus éxitos. A veces los errores serán graves y tendrán consecuencias pero, ¿quién no ha tenido errores de este tipo? El desarrollo de software es complejo y no contamos con un mapa que nos guíe hasta el éxito del proyecto, en medio podremos equivocarnos y lo mismo nuestras acciones impactan en el resultado final del proyecto pero es parte del juego, parte de nuestra profesión.

Toma decisiones, equivócate, acierta, es parte de la vida misma y nuestro día a día personal y profesional.

Sobre esto Jerry Weinberg realiza la siguiente reflexión (traducción libre): “Si no puedes soportar ser un tonto público (quedar en ridículo), no vas a tener éxito en un rol en donde todas tus acciones son estudiadas al detalle”.

Hay una reflexión de Jerry Weinberg que es conveniente tener muy en cuenta: “Cuanto más adaptado te encuentres menos adaptable tenderás a ser”.

Esta cita se refiere a la especialización. Puedes ser el rey en un ecosistema concreto, pero como cambie, si no estás preparado, puede ser un desastre para tu organización, porque implicará cambios que deberán ser ejecutados en un tiempo razonable para los cuales no estarán preparadas ni las estructuras ni la mentalidad de la organización y de muchas de las personas, sobre todo los directivos, que forman parte de ella.

La especialización no es mala, no lo entendamos de ese modo, lo que sí es negativo es tener los ojos cerrados a posibles cambios en el contexto, a no tratar de adelantarse a ellos, a pensar que el mercado siempre va a ser el mismo, que la competencia no va a evolucionar lo suficiente y que nosotros siempre vamos a ser los mejores.

Es difícil hacerlo cuando las cosas vienen bien dadas, ¿para qué cambiar si todo va bien?. No se trata de cambiar por cambiar, se trata de hacerlo con cabeza, se trata de mirar alrededor y no solo dentro de uno mismo.

En el mundo actual todo se mueve a un ritmo vertiginoso, de cualquier sitio puede salir un nuevo competidor o una nueva tecnología que puede ser adquirida o desarrollada por tus competidores tradicionales, por ese motivo, no solo debes centrarte en desarrollar tu negocio, sino también estar alerta a riesgos que pueden poner en peligro a tu posición en el mercado.

No sabemos de todo, no tenemos las respuestas a todas las preguntas, no somos infalibles, no dominamos todos los contextos. Cuanto antes asumamos esto menos errores evitables cometeremos por nuestro exceso de suficiencia.

La confianza en uno mismo no consiste en considerarte por encima de todo y de todos sino por saber que no eres ni mejor ni peor por buscar las respuestas donde podrías encontrarlas.

Escucha lo que te tengan que decir, aunque no estés de acuerdo. Después es posible que sigas sin estar de acuerdo pero por el simple hecho de escuchar has tenido que poner en contraste tus ideas con otras diferentes y eso aporta valor.

El desarrollo de software es un trabajo colectivo en el que todos tienen la capacidad (y deben aportar). Más percepciones de la realidad amplía el abanico de posibilidades y el número y calidad de las respuestas. Lo importante es sacar el proyecto adelante no que la idea decisiva la hayas dado tu.

Por último os dejo la siguiente reflexión de Jerry Weinberg que puede resumir el contenido de este artículo: “Cuando no eres terriblemente inteligente, te ayuda ser un buen oyente”.

Incluso siéndolo debes ser siempre un buen oyente.

Jerry Weinberg considera que: “Cualquiera que haya visto a un programador trabajando… sabe lo que es la programación en sí, si al programador se le da la oportunidad de hacerlo a su manera, es la mayor motivación que puede tener el programador”.

Podemos extender la reflexión de Weinberg al concepto de desarrollador.

Estoy de acuerdo si bien es importante diferenciar autonomía de anarquía. Trabajas de manera autónoma si se te indican cuáles son tus objetivos (o bien desde tu rol en el proyecto o en la organización te los defines tu) y conociendo y respetando las reglas del juego (procesos, enfoques, metodologías, estrategias de diseño, herramientas, etc…) además de tener siempre presente que trabajas en equipo tienes libertad para realizar la solución.

Para que exista autonomía es necesario que las reglas del juego den el suficiente margen de maniobra. También es necesario entender que lo mismo todos los roles (y dentro de cada rol las personas que lo componen) no tienen la misma autonomía para realizar su trabajo ya que dependerá del tipo de proyecto, del tipo de sistema que se desarrolla, de las propias reglas del juego y de la experiencia y conocimientos del desarrollador.

El trabajo que se realiza de forma autónoma motiva y por eso es importante desarrollar este esquema de trabajo. Es cierto que al principio costará un poco que la maquinaria funcione ya que será necesario que cada uno entienda que la autonomía implica responsabilidad contigo mismo, con tus compañeros y con el proyecto y para que se pueda trabajar de manera adecuada hay que respetar las reglas el juego.

Hay quien se pierde trabajando de esa manera pero principalmente es provocado por el hecho de no entender o eludir esa responsabilidad y por la falta de una visión colaborativa en el desarrollo de software. Como es lógico implantar este esquema de trabajo requiere de personas que funcionen en él.

Resulta muy complicado encontrarnos con dos proyectos de desarrollo de software iguales porque los contextos son diferentes. Esto implica que las estrategias utilizadas en uno no tienen por qué ser válidas en otro.

No se trata de reinvertar la rueda en cada proyecto sino de saber elegir en cada circuntancia, basado en nuestro conocimiento y experiencia, la solución que mejor se adapte a su contexto y cambiarla si es necesario (si cambia el contexto o si nos hemos equivocado).

No tenemos que cerrarnos puertas en cuanto la solución a aplicar porque al hacerlo estamos afectando al proyecto en sí. Por ejemplo, si creemos en el agilismo y un proyecto requiere un enfoque clásico hagámoslo con ese enfoque y apliquemos la agilidad en donde nos sea posible.

Y esto es extensible no solo a enfoques sino a soluciones concretas a problemas concretos. De nada sirve descartar una solución porque no te gusta o porque no crees en ella (aunque tu experiencia te indique eso) si a todas luces parece que para esta situación concreta es la más adecuada.

Sobre este tema Jerry Weinberg realiza la siguiente reflexión (traducción libre): “Ser inteligente no es tener la fórmula mágica que se puede aplicar a todos los problemas sino más bien tener una serie de fórmulas y no estar tan enamorado de una que condicione la elección de las otras”.

Los que van quedando son los supervivientes. Ahora es lo que importante lo que pasó ayer ya es demasiado tarde.

Interesante reflexión de Jerry Weinberg: “Cada uno de nosotros, después de todo, es el descendiente directo de innumerables líneas de supervivientes”.

El negocio del desarrollo de software es así. Supervivencia en un entorno de gran competencia cada vez mejor preparada y que está deseando quedarse con tu trozo del pastel (en situaciones de crisis como la actual, el pastel mengua a la vez que la competencia crece.

En la supervivencia no vale todo porque determinadas victorias son tus derrotas de mañana. Una victoria donde dejas un profundo desgaste y descontento por el camino te da de comer hoy y te lo quita mañana. Es verdad que hay expertos en sobrevivir de esta manera pero no por ellos deben ser ejemplos de nada.

La supervivencia tiene gran parte de aguante y de saber adaptarse a las circunstancias, si no resistes, si no te adaptas lo normal es que termines perdiendo porque otros sí que resistirán y otros sí que conseguirán adaptarse con más o menos esfuerzo al nuevo contexto.

Hay mentiras que se detectan a la primera hay otras que necesitan su tiempo. Mentir es todo un arte, un complejo arte en el que quien miente debe tener muy buena memoria.

La mayoría de las mentiras salen a la la luz porque el mentiroso termina por no recordar lo que dijo y el interlocutor sí que lo recuerda (es más fácil recordar una realidad que una ficción).

No todas las mentiras son iguales y tienen la misma relevancia. Sí que son importantes aquellas que afectan a las relaciones cliente/proveedor en un proyecto de desarrollo de software porque afectan directamente a la confianza. Sin confianza difícilmente habrá resultados.

Y se miente mucho, demasiado y esto ha hecho mucho daño al desarrollo de software. Con mentiras se pueden conseguir victorias (si es que se les puede llamar así) pero es difícil progresar profesionalmente de esta forma porque las bases son frágiles. Por supuesto que habrá supervivientes, siempre hay supervivientes.

Me parece interesante la siguiente reflexión de Jerry Weinberg: “Una de las grandes ventajas de no mentir a tus clientes es que generalmente no tienes que recordar lo que le has dicho”.