Actualmente soy un programador profesional. Quiero ampliar mi conjunto de habilidades, pero también quiero hacer que la carrera salte a ser un líder de desarrollo como parte de un equipo. Sé que tiene que haber mucho que aprender (y esto no será algo instantáneo), pero creo que soy lo suficientemente inteligente como para hacerlo y estoy a la altura del desafío.
Estoy seguro de que muchos de los miembros aquí probablemente hayan pasado por esto ellos mismos y ahora sean líderes de desarrollo exitosos. Desafortunadamente, aunque conozco algunas áreas personales que me gustaría mejorar (profundidad de conocimiento, amplitud de conocimiento, habilidades, etc.), no estoy realmente seguro de cómo comenzaría algo como esto.
Como programador ahora, ¿qué pasos debo seguir para lograr este objetivo? ¿Qué debería priorizar?
fuente
Respuestas:
Para convertirse en un líder técnico, lo siguiente es esencial
La capacidad de guiar a los miembros del personal en todos los niveles de antigüedad, desde alguien que ha estado fuera de la universidad durante 3 meses hasta una persona que ha estado programando durante 30 años.
Un buen conocimiento de su dominio de desarrollo. Esto incluye: lenguajes, marcos, utilidades, entornos de desarrollo.
Una sólida comprensión de los sistemas de gestión de problemas, habilidades de gestión de proyectos y control de versiones.
Sé el asesino de insectos
Sepa cómo realizar revisiones de código oportunas, qué buscar y cómo minimizar la cantidad de tiempo que tardan en retener y para que se realicen los cambios
Manténgase actualizado con los desarrollos en su dominio de desarrollo. Por ejemplo, si no aprendió nuevos marcos o tecnologías de .NET 2, hoy estaría haciendo las cosas de manera bastante retrógrada.
Cómo escribir pruebas unitarias y simulacros, y hacer que sus desarrolladores también los escriban
Conocimiento de qué son los patrones de diseño y cuándo usarlos.
Conocimiento de qué son los olores de código y cómo mitigarlos
Integración continua
La capacidad de planificar proyectos y lanzamientos
Dependiendo de su organización y si tiene arquitectos en el personal, probablemente necesite saber lo siguiente:
La capacidad de componentes de sus proyectos y dividirlo en partes funcionales
Un conocimiento profundo de la seguridad, incluida la forma correcta de manejar contraseñas, separar sistemas, proteger datos, etc.
Conceptos empresariales como buses de servicio, colas de mensajes, BizTalk
Patrones de diseño empresarial
Arquitecturas de servicios / RPC como SOAP y REST
Marcos ORM como Hibernate, Entity Framework, Doctrine
Despliegue continuo
La nube
La capacidad de recomendar las tecnologías correctas para usar en un proyecto. Esto podría ser difícil si su equipo / tienda solo lo hace .NET, PHP o Java.
Diseñe la aplicación de tal manera que las mejoras futuras se acomoden fácilmente
Si va a ser gerente de desarrollo, también necesitará:
Y finalmente, algunos otros puntos recomendados:
Aprende fuera de tu dominio de desarrollo
Aprenda a decir NO cuando las cosas no sean posibles o estén fuera de alcance o entren en conflicto con restricciones como el presupuesto o el tiempo.
Administrar un equipo es un papel desafiante. Debes ser la persona que pueda responder cualquier pregunta, debes conocer las tecnologías adecuadas para usar (a menos que tengas un arquitecto), debes tener habilidades de gestión de personas y ser accesible por su personal (asumiendo un puesto directivo). Además de esto, debe tener habilidades de estimación precisas para garantizar la rentabilidad del proyecto y debe poder ensuciarse las manos con el código de cualquier persona para detectar problemas y solucionarlos rápidamente. Debe evitar querer hacer todo usted mismo y fomentar un entorno de equipo que no sea tóxico. Debe estar continuamente al tanto de su pila de tecnología y aprender los últimos desarrollos y técnicas, así como las tendencias más amplias de la industria.
También debería conocer al menos una plataforma de base de datos, y conocerla bien. Sepa cómo realizar la replicación, los procedimientos almacenados, cómo funciona el optimizador de consultas y cómo diseñar un esquema correctamente, y qué campos indexar.
Independientemente de la posición exacta, cualquier función de alto nivel requiere que tenga la capacidad de comunicarse de manera efectiva. Si no eres un orador seguro, mira hacer algo como Toast Masters (hablar en público). Aprender cómo hacer y mantener contacto visual. Tener confianza. Vístase apropiadamente para el puesto. Predicar con el ejemplo.
fuente
En mi experiencia, el Lead tiene un poco menos que ver con el trabajo sucio de la programación práctica y más con la gestión. Para ello, recomendaría lo siguiente
Invierta más tiempo en diseño y actividades arquitectónicas y desarrollo . Como líder, su función se centrará en proporcionar orientación técnica y dirección a su equipo. Tendrás más tareas para comprender cómo encajan las piezas en su conjunto y menos cómo funciona la tubería. No me malinterpreten, se requieren habilidades técnicas sólidas para ser un líder eficaz y conocedor, pero una visión de nivel superior de lo que está sucediendo y cómo funcionará será más crucial aquí. Debe conocer más patrones de diseño de mejores prácticas y prácticas de codificación efectivas.
Aprenda a realizar múltiples tareas y administrar el tiempo . Si eres bueno en eso ahora, está bien: desarrolla más. Como desarrollador, solo tiene que preocuparse de su tarea / proyecto actual. Como una ventaja, tendrás
Prepárese para delegar efectivamente . Esta IMO será la parte más difícil de ajustar. Como desarrollador, estás acostumbrado a ensuciarte las manos y hacer las cosas. Haciendo toda la fontanería e investigación. Eso tendrá que detenerse o reducirse. Entran los conciertos, lo repartes al equipo. Obtendrá una parte de la acción, no solo la que está acostumbrado. Y te morderás la lengua para resistir la tentación de arrinconar más acción por ti mismo.
En la línea más profesional, considere un entrenamiento que no solo aumente su capacidad, sino que cambie su perspectiva . Un curso intensivo en la gestión de proyectos de software no hará daño Lean Six Sigma también es un muy buen programa de capacitación (puedo dar fe de su eficacia) que lo ayudará a ver la resolución de problemas desde un ángulo más lógico. Sin mencionar que desde el puesto de líder, estás preparado para roles aún más altos que requerirán menos habilidades técnicas prácticas y más capacidad de gestión.
Perfeccione su comunicación y habilidades interpersonales . Serás el principal punto de entrada a tu equipo desde el mundo exterior. Su gerente u otro supervisor acudirán a usted primero. Otras unidades / equipos en su organización se comunicarán con usted en todo lo relacionado con el equipo primero. Vas a administrar el recurso más difícil e impredecible de todos: las personas. Necesita crecer una piel gruesa, aprender a tragar grandes cantidades de orgullo y asumir la responsabilidad por el fracaso de su equipo.
fuente
Las cosas que Sam no ha dicho que también son importantes:
Cómo especificar cosas y dar trabajo a otros desarrolladores. Parte de su trabajo es mantener a los otros desarrolladores 100% utilizados. Escribir especificaciones que no sean ambiguas es muy importante.
Cómo construir una aplicación esqueleto / prototipo que todos los demás deberían seguir
Cómo fomentar la buena moral del equipo
Cómo asistir, conducir y dirigir reuniones, cómo documentar elementos de acción
Cómo estimar, escribir un plan de proyecto y actualizar el plan del proyecto
Cómo mirar hacia el futuro: si un problema va a suceder dentro de 3 meses, debe tratar de evitarlo lo antes posible. Si un desarrollador se va de vacaciones durante 7 semanas, debe comenzar a planificarlo ahora.
Cómo hablar con la gerencia. Nos hablan un idioma diferente. Dales soluciones, no problemas. Diles lo que significan las cosas técnicas para ellos.
Y aunque Sam ya dijo esto, una de las cosas más importantes es aprender a decir que no . Harás esto mucho . La otra forma de verlo es decir sí , pero "solo si podemos obtener más dinero / tiempo / recursos", o "eso es para la segunda versión" :)
fuente
Todos estos son por el libro y buenas respuestas. Permíteme golpearte con la realidad.
Lo creas o no, pasarás gran parte del tiempo explicando a los gerentes
Para esto necesita las habilidades de explicar cosas técnicas a personas no técnicas, en términos no técnicos. Y es muy dificil. por ejemplo, considere explicar P = NP a 6 años de edad. Desafortunadamente, no hay capacitación formal para eso, y usted debe aprenderla por su cuenta.
También esta es la posición donde la mierda política comienza a golpearte. El gerente le dirá que favorezca a una persona porque él / ella sigue el proceso, pero sabe que la persona no sirve en su equipo por varias razones, desde la falta de habilidades técnicas hasta la falta de un buen miembro del equipo. Entonces, no solo tiene que trabajar con esta persona, sino también darle buenas calificaciones a esta persona. Lo contrario es la persona que tiene buenas habilidades y un miembro del equipo muy efectivo pero que no sabe cómo complacer a la gerencia y, por lo tanto, obtiene menos calificaciones.
Luego hay reuniones inútiles que alguien en una posición alta mantiene desde una ubicación remota, dando conferencias sobre los procesos efectivos y cómo su última variación del proceso aumentará la productividad. Debes saber cómo ocultar tu cara aburrida y lucir enérgica.
fuente