¿Cómo se mide la eficacia de un ingeniero? ¿Es por el número de horas que trabaja? ¿Por la cantidad de esfuerzo que aplica? ¿El número de tareas que completa? Un ingeniero muy trabajador que vuelca su energía en una función cuyo calendario se resbala y nadie utiliza no es tan eficaz. El ingeniero eficaz, escrito por Edmond Lau y publicado el 19 de marzo de 2015, ofrecerá ideas para convertirse en un ingeniero práctico optimizando el aprendizaje, centrándose en las actividades de alto rendimiento o priorizando con frecuencia.
¿CÓMO NOS HA AYUDADO ESTE LIBRO?
A pesar de ser un libro para ingenieros de software, no encontrará ni una sola línea de código en El ingeniero eficaz. El libro nos ayudó a comprender que, mediante la priorización de nuestras actividades y la evaluación de su apalancamiento, podemos alcanzar nuestros objetivos con mayor eficacia. El ingeniero eficaz nos proporcionó enfoques sobre cómo aumentar el apalancamiento. 1. Reduciendo el tiempo que se tarda en realizar una actividad concreta. 2. 2. Aumentando el rendimiento de una actividad concreta. 3. Cambiando a actividades de mayor apalancamiento.
EL LIBRO EXPLICADO EN MENOS DE 60 SEGUNDOS
Este libro no es una guía exhaustiva de todo lo que puede ayudarle a crecer. Aun así, le proporciona un marco coherente -apalancamiento- para navegar por las habilidades que podrían ser inversiones adecuadas de su tiempo. La enseñanza y la tutoría son pasiones mías, y me entusiasma compartir lo que he aprendido.
LAS TRES MEJORES CITAS
«Pensar al principio de su carrera en cómo ayudar a sus compañeros a tener éxito inculca los hábitos correctos que le llevarán al éxito».
«Para ser ingenieros eficaces, tenemos que identificar qué actividades producen más impacto con menores inversiones de tiempo».
«Trabajar horas extra puede perjudicar la dinámica del equipo. No todo el mundo en el equipo tendrá la flexibilidad para echar las horas extra».
RESÚMENES Y NOTAS DE LIBROS
Capítulo 1: Adoptar la mentalidad adecuada
Centrarse en actividades de alto rendimiento
¿Cómo decidiría en qué trabajar para alcanzar sus objetivos con mayor eficacia? La respuesta fundamental a esta pregunta es priorizar las distintas actividades y evaluar su apalancamiento. El apalancamiento es el valor o el impacto producido por el tiempo invertido.
Apalancamiento = Impacto producido/Tiempo invertido
El aprovechamiento es el rendimiento de la inversión por el esfuerzo realizado. Los ingenieros influyentes consiguen hacer las cosas con eficacia y centran su limitado tiempo en las tareas que producen más valor. No consiguen hacer más cosas trabajando más horas. Los ingenieros eficaces aumentan su rendimiento en esa ecuación manteniendo el tiempo limitado invertido. Por lo tanto, el apalancamiento es la vara de medir lo prácticas que son sus actividades. El apalancamiento es crucial porque el tiempo es su recurso más limitado. A diferencia de otros recursos, el tiempo no puede restaurarse, sustituirse ni prolongarse.
Aumente su apalancamiento de tres maneras;
- Reduciendo el tiempo que se tarda en realizar una actividad concreta.
- Aumentando el rendimiento de una acción específica.
- Cambiando a actividades de mayor apalancamiento.
Estos tres enfoques suelen traducirse en tres preguntas que puede hacerse sobre cualquier actividad en la que estemos trabajando.
- ¿Cómo puedo completar esta actividad en un periodo más corto?
- ¿Cómo puedo aumentar el valor generado por esta actividad?
- ¿Hay alguna otra cosa en la que pueda emplear mi tiempo para crear más valor?
Utilice el apalancamiento para evaluar la eficacia de su ingeniería. Concéntrese en lo que genera el mayor rendimiento de la inversión por el tiempo que dedica. Aumente sistemáticamente el apalancamiento de su tiempo. Piense en formas de realizar las actividades más rápidamente, aumentar el impacto de una actividad o cambiar a actividades con mayor apalancamiento. El tiempo es su recurso más limitado. Encuentre los hábitos que producen un impacto desproporcionadamente alto por el tiempo que invierte.
Optimizar para aprender
Adoptar una mentalidad de crecimiento significa aceptar la responsabilidad de cada aspecto de una situación que pueda cambiar -cualquier cosa, desde mejorar sus habilidades de conversación hasta dominar un nuevo enfoque de ingeniería- en lugar de culpar de los fracasos a cosas que están fuera de su control. Significa optimizar las experiencias para aprender en lugar de las ocasiones en las que triunfa sin esfuerzo e invertir en su ritmo de aprendizaje. El aprendizaje crece exponencialmente. El conocimiento le proporciona una base para alcanzar más conocimientos aún más rápido. Cuanto más sepa, más fácil le resultará aprender más cosas y ser más creativo. Cuanto antes optimice el aprendizaje, más tiempo tendrá su conocimiento para crecer. Su primer trabajo le facilita la obtención de un segundo trabajo mejor. Debido a la capitalización, incluso pequeños deltas en su ritmo de aprendizaje marcan una diferencia significativa a largo plazo. Dado que pasa la mayor parte del tiempo en el trabajo, uno de los puntos de apalancamiento más convincentes para aumentar su tasa de aprendizaje es la elección de su entorno laboral. Asegúrese de que, más allá de la curva de aprendizaje inicial, el entorno de trabajo siga siendo uno en el que pueda aprender cosas nuevas de forma sostenible cada día. He aquí seis factores a tener en cuenta a la hora de elegir un nuevo entorno de trabajo.
- Rápido crecimiento
- Formación
- Apertura
- Pace
- Personas
- Autonomía
La forma en que ve su inteligencia, su carácter y sus capacidades afecta profundamente a cómo lleva su vida. Influye principalmente en si permanece estancado en su posición actual o logra lo que valora.
Establezca prioridades con regularidad
Un equipo de éxito prioriza su trabajo con precisión y frecuencia. Ser ingeniero es muy agotador. Siempre hay más tareas que su tiempo, y trabajar en una implica dejar de trabajar en la otra. Por lo tanto, priorizar con frecuencia es una actividad de alto apalancamiento, ya que influye en el apalancamiento del resto de su tiempo. Los ingenieros más eficaces trabajan de forma persistente para mejorar sus habilidades de priorización. Para seguir dedicado a las actividades de alto apalancamiento, revise cómo clasifica sus actividades. Es crucial hacer un seguimiento de todas sus tareas pendientes en una lista fácil y accesible. A partir de esa lista, compare lo que está haciendo y lo que podría estar haciendo en su lugar para desplazar repetidamente nuestro tiempo hacia actividades de mayor aprovechamiento. Los ingenieros pueden beneficiarse de la utilización de listas de control. Por lo tanto, el primer paso para una priorización eficaz es hacer una lista de todas las tareas que podría necesitar. Las listas de tareas deben tener dos propiedades significativas: ser una representación reconocida de su trabajo y ser fácilmente accesibles. Una única lista maestra es diez veces mejor que una variedad de notas adhesivas, hojas de papel y correos electrónicos, porque estas alternativas dispersas pueden extraviarse fácilmente y dificultan que su cerebro confíe en que son exhaustivas.
Cita favorita del capítulo: «Céntrese en los cambios dentro de su esfera de influencia en lugar de malgastar energía en culpar a las partes que no puede controlar. Contemple los fracasos y los retos a través de una mentalidad de crecimiento, y véalos como oportunidades para aprender.»
Capítulo dos: Ejecutar, ejecutar, ejecutar
Invierta en velocidad de iteración
Los ingenieros eficaces invierten mucho en la velocidad de iteración. El despliegue continuo no es más que una de las muchas herramientas potentes a su disposición para aumentar la velocidad de iteración. El despliegue continuo permite a los ingenieros crear y desplegar cambios pequeños pero incrementales en lugar de los cambios extensos y por lotes típicos en la mayoría de las empresas. Ese cambio de enfoque elimina una gran cantidad de sobrecarga asociada a los procesos de lanzamiento tradicionales. Facilita el razonamiento sobre los cambios y permite a los ingenieros iterar con rapidez. Cuando alguien descubre un error, por ejemplo, el despliegue continuo hace posible implementar una corrección, desplegarla en producción y verificar que funciona, todo en una sola sesión. La implantación continua es una de las herramientas más sólidas para aumentar la velocidad de iteración.
Muévase rápido para aprender rápido. Muévase rápido y rompa cosas. Moverse rápido le permite construir más cosas y aprender más rápidamente.
Invierta en herramientas que le ahorren tiempo. Si tiene que hacer algo más de dos veces, escriba una herramienta para la tercera vez. Las herramientas son palancas que le ayudan a ampliar su impacto más allá del conflicto del día. Las herramientas más rápidas se utilizan más a menudo porque permiten nuevos flujos de trabajo que antes eran imposibles.
Mida lo que quiere mejorar
Medir el progreso y el rendimiento puede parecer algo fuera de su jurisdicción. Sin embargo, es una herramienta excelente para evaluar su eficacia y priorizar su trabajo. Si no puede medirlo, no puede mejorarlo. En el desarrollo de productos, es habitual que un directivo conciba alguna característica nueva. El equipo celebra que los ingenieros la construyan y la envíen sin implementar ningún mecanismo para medir si la característica mejoró la experiencia del producto. Utilice métricas para medir e impulsar el progreso. Una buena métrica cumple varios objetivos. En primer lugar, las métricas le ayudan a centrarse en las cosas correctas. Validan que los cambios de su producto -y todos los esfuerzos que invierte en ellos- cumplen sus objetivos.
Cuando se visualizan a lo largo del tiempo, las buenas métricas previenen futuras regresiones. Los ingenieros reconocen el valor de escribir una prueba de regresión mientras se corrigen los fallos: verifica que un parche corrige un fallo y detecta si el fallo reaparece en el futuro.
Una buena métrica también puede evaluar su eficacia a lo largo del tiempo y comparar el efecto multiplicador de lo que está haciendo frente a las actividades que podría estar haciendo en su lugar. La métrica que elija suele influir en la decisión que tome y en su comportamiento. Busque una métrica que, una vez optimizada, maximice el impacto en el equipo.
Valide sus ideas pronto y con frecuencia
Valide si sus ideas son prácticas. Esta validación puede provenir de discusiones con su equipo, encuestas a los usuarios o la realización de pruebas A/B con las ideas aplicadas. Con las ideas nuevas, le costará poco validar su trabajo. A medida que avance en el proyecto en el que está trabajando, procure siempre obtener algún tipo de retroalimentación. Por ejemplo, cuando empieza a ejecutar un proyecto y resulta ser más complicado de lo que había previsto, su apalancamiento disminuye. Mientras eso ocurre, puede surgir otra cosa con un apalancamiento mayor. En tales situaciones, es mejor abandonar el proyecto actual y centrar su atención en el otro. La validación frecuente de sus tareas le ayuda a determinar la mejor decisión a tomar.
Cita favorita del capítulo: «Reduzca la varianza en sus estimaciones y el riesgo en su proyecto explorando lo desconocido desde el principio. No se haga ilusiones de progreso centrándose primero en lo que es fácil de hacer».
Capítulo 3: Crear valor a largo plazo
Equilibrar la calidad con el pragmatismo
Ponga en marcha un proceso autónomo de revisión del código. Los distintos equipos de ingenieros tienen actitudes diferentes hacia las revisiones del código. Las revisiones del código están tan arraigadas en algunas culturas de equipo que los ingenieros no pueden imaginar trabajar en un entorno sin ellas. Las revisiones del código detectan errores y deficiencias de diseño en una fase temprana. Consume menos energía. Es eficaz en términos de tiempo a la hora de abordar problemas en el proceso de desarrollo. Las revisiones del código también aumentan la responsabilidad por los cambios en el código. No añadirá parches rápidos al código y dejará el desaguisado para que lo arregle otra persona cuando sepa que uno de sus compañeros de equipo revisará el código. Aunque suelen reconocer que las revisiones del código pueden mejorar la calidad, los ingenieros que no las hacen suelen alegar su preocupación por su impacto en la velocidad de iteración. Proclaman que el tiempo y el esfuerzo asociados a las revisiones del código se emplean mejor en otras funciones de desarrollo del producto. Decidirse por las revisiones del código no tiene por qué ser una elección binaria, en la que el código se revisa o no se revisa. En su lugar, piense en las revisiones del código como un proceso continuo. Pueden estructurarse en diferentes enfoques para r su sobrecarga manteniendo sus beneficios.
Invierta en el crecimiento de su equipo
Sólo cuando se examinan las entrevistas en su conjunto, uno se da cuenta de que la contratación es una actividad de alto apalancamiento. Cuanto más pequeña es la organización, mayores son las posibilidades de que esa persona a la que entrevista se convierta en un compañero de trabajo instantáneo y mayor es el apalancamiento de esas entrevistas. He aquí algunas estrategias de alto apalancamiento que puede utilizar para mejorar su proceso de entrevistas; dedique tiempo con su equipo a identificar las cualidades que más le interesan en un posible compañero de equipo: aptitud para la codificación, dominio de lenguajes de programación, algoritmos, estructuras de datos, habilidades de producto, depuración, habilidades de comunicación, ajuste a la cultura o cualquier otra cosa. Coordínese para asegurarse de que se cubren todas las áreas clave durante un bucle de entrevistas. Diseñe problemas para la entrevista con múltiples niveles de dificultad que pueda adaptar a la capacidad del candidato añadiendo o eliminando variables y restricciones.
Cree un buen proceso de incorporación. La incorporación es una situación en la que tanto la empresa como los nuevos empleados salen ganando: los nuevos reciben una formación valiosa y los mentores consiguen hacer más cosas. Por el contrario, un mal proceso de incorporación minimiza la eficacia del equipo. El rendimiento productivo desaparece cuando un recién contratado tarda más en ponerse al día. La calidad del código se reduce si los nuevos miembros del equipo utilizan mal las abstracciones o las herramientas o si no están familiarizados con las convenciones o las expectativas del equipo.
Cita favorita del capítulo: «Entrevistar a nuevos candidatos a ingenieros puede resultar molesto. Interrumpe la productividad y nos rompe el día. Lleva mucho tiempo redactar los comentarios sobre los candidatos y hacer el debriefing con el equipo».
CÓMO AYUDÓ ESTE LIBRO A LOS DESARROLLADORES DE SOFTWARE
«El ingeniero eficaz», de Edmond Lau, puede ayudar a los desarrolladores de software proporcionándoles orientación práctica y estrategias para convertirse en un ingeniero más eficaz y eficiente. El libro abarca la gestión del tiempo, las habilidades de comunicación, las habilidades técnicas y el desarrollo profesional, centrándose en consejos prácticos y ejemplos del mundo real. Poner en práctica las estrategias descritas en el libro, puede ayudar a los desarrolladores de software a mejorar su productividad, aumentar su impacto y avanzar en sus carreras.