¿Qué habilidades debo cultivar para convertirme en un líder técnico / de desarrollo? [cerrado]

80

Actualmente soy un programador profesional. Quiero ampliar mi conjunto de habilidades, pero también quiero hacer que la carrera se convierta en un líder en desarrollo como parte de un equipo. Sé que tiene que haber mucho que aprender (y esto no será una cosa instantánea) 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 han pasado por esto por sí mismos, y ahora son líderes exitosos de desarrolladores. Desafortunadamente, aunque conozco algunas áreas personales que me gustaría mejorar (profundidad del conocimiento, amplitud de conocimientos, habilidades, etc.), no estoy realmente seguro de cómo empezar algo como esto.

Como programador ahora, ¿qué pasos debo seguir para lograr este objetivo? ¿Qué debo priorizar?

    
pregunta lunchmeat317 19.03.2013 - 01:31

4 respuestas

86

Para convertirse en un líder técnico, los siguientes son essential

  • La capacidad de guiar a miembros del personal en todos los niveles de antigüedad, desde alguien que ha estado fuera de la universidad por 3 meses a una persona que ha estado programando por 30 años

  • Un buen conocimiento de su dominio de desarrollo. Esto incluye: idiomas, 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

  • Conviértete en el asesino de bugs

  • Sepa cómo realizar revisiones oportunas de códigos, qué buscar y cómo minimizar el tiempo que demoran en retener y los cambios que se realizarán

  • 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 bastante al revés.

  • Cómo escribir pruebas unitarias y simulacros, y hacer que los 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ódigos y cómo mitigarlos

  • Integración continua

  • La capacidad de planificar proyectos y lanzamientos

Dependiendo de su organización y de si tiene arquitectos en el personal, probablemente necesite saber lo siguiente:

  • La capacidad de crear componentes de sus proyectos y dividirlos en partes funcionales

  • Una comprensión exhaustiva de la seguridad, incluida la forma correcta de administrar contraseñas, separar sistemas, proteger datos, etc.

  • Conceptos empresariales como buses de servicio, colas de mensajes, BizTalk

  • Patrones de diseño empresarial

  • Arquitecturas de servicio / RPC como SOAP y REST

  • marcos ORM como Hibernate, Entity Framework, Doctrine

  • Implementación continua

  • La nube

  • La capacidad de recomendar las tecnologías correctas para usar en un proyecto. Esto puede ser difícil si su equipo / tienda solo hace .NET, PHP o Java.

  • Diseñe la aplicación de tal manera que las mejoras futuras se puedan acomodar fácilmente

Si va a ser un administrador de desarrollo, también necesitará:

  • Habilidades de entrevista y cómo encontrar el personal adecuado
  • Cómo tratar los problemas de las personas con los miembros de su equipo
  • Administrar las directivas / objetivos comerciales y convertir los relevantes en información para sus desarrolladores
  • La capacidad de estimar el tiempo para programadores de diferentes habilidades
  • La capacidad de asignar tareas a los desarrolladores correctos en función de sus habilidades y capacidades

Y finalmente, algunos otros puntos recomendados:

  • Aprenda fuera de su 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 rol difícil. Debes ser la persona que puede responder cualquier pregunta, debes conocer las tecnologías correctas para usar (a menos que tengas un arquitecto), debes tener habilidades de administración de personas. y ser accesible por su personal (asumiendo una posición de gestión). 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 identificar problemas y solucionarlos rápidamente. Debe evitar querer hacer todo por sí mismo y fomentar un ambiente 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ías conocer realmente al menos una plataforma de base de datos, y saberlo bien. Sepa cómo realizar la replicación, los procedimientos almacenados, cómo funciona el optimizador de consultas, cómo diseñar un esquema correctamente y qué campos indexar.

Independientemente de la posición exacta, cualquier rol senior requiere que usted tenga la capacidad de comunicarse de manera efectiva. Si no eres un orador seguro, mira hacer algo como Toast Masters (hablar en público). Aprenda cómo para hacer y mantener el contacto visual. Tener confianza. Vístase apropiadamente para la posición. Predicar con el ejemplo.

    
respondido por el Sam 19.03.2013 - 01:44
27

En mi experiencia, el Líder tiene un poco menos que ver con el trabajo sucio de la programación práctica y mucho más con la administración. Para ello recomiendo lo siguiente

  1. Invierta más tiempo en actividades de diseño y arquitectura, y en el desarrollo . Como líder, su función se centrará en proporcionar orientación técnica y dirección a su equipo. Se le pedirá más para entender cómo encajan las piezas de un todo y menos cómo funciona la plomería. No me malinterpretes, tu necesitas técnicas sólidas para ser un líder eficaz y bien informado, pero una visión de nivel superior de lo que está sucediendo y cómo va a funcionar va a ser más crucial aquí. Debe conocer más patrones de diseño de mejores prácticas y prácticas de codificación efectivas

  2. Aprenda a realizar múltiples tareas y administrar el tiempo . Si eres bueno en eso ahora, eso es bueno: desarrolla más. Como desarrollador, solo tienes que preocuparte por tu proyecto / tarea actual. Como ventaja, tendrás

    • Para asistir a más reuniones de las que te interesan. Esta es quizás la parte más alucinante de la dirección del equipo
    • Trabajar en la asignación de recursos. Si tiene suerte, los recursos serán escasos y los proyectos abundarán.
    • Tome la iniciativa en arquitectura y diseño de proyectos
    • Dependiendo del tamaño y la estructura de la organización, proporcione una gran cantidad de informes, a tiempo y a tiempo. Piense en el líder como un administrador de proyectos de bajos ingresos.
  3. Prepárate para delegar de manera efectiva . Esta OMI será la parte más difícil de ajustar. Como desarrollador, estás acostumbrado a ensuciarte las manos, hacer las cosas. Haciendo toda la fontanería e investigación. Eso va a tener que detenerse o reducirse. Entran los conciertos, se lo entregan al equipo. Obtendrá una parte de la acción, no solo como está acostumbrado. Y te morderás la lengua para resistir la tentación de acorralar más acción para ti mismo.

  4. A lo largo de la línea más profesional, considere un entrenamiento que no solo aumentará su capacidad, sino que también cambiará su perspectiva . Un curso intensivo en decir que la gestión de proyectos de software no hará daño Lean Six Sigma también es un muy buen programa de entrenamiento (puedo dar testimonio de su eficacia) que te ayudará a ver la resolución de problemas desde un ángulo más lógico. Sin mencionar que desde la posición de Líder, está preparado para desempeñar funciones aún más importantes que requerirán menos habilidades técnicas prácticas y más capacidad de gestión.

  5. Afine sus habilidades comunicativas e interpersonales . Serás el principal punto de entrada a tu equipo desde el mundo exterior. Su gerente u otro supervisor vendrán a usted primero. Otras unidades / equipos en su organización se comunicarán con usted en cualquier cosa relacionada 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 responsabilizarse por la falla de su equipo.

respondido por el kolossus 19.03.2013 - 02:26
14

Las cosas que Sam no ha dicho que también son importantes:

  • Cómo especificar el material y dar trabajo a otros desarrolladores. Parte de su trabajo es mantener a los otros desarrolladores 100% utilizados. Escribir especificaciones que no son ambiguas es muy importante.

  • Cómo crear una aplicación de esqueleto / prototipo que todos los demás deben 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 de proyecto

  • Cómo mirar hacia el futuro: si va a surgir un problema en 3 meses, querrá 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 significa para ellos lo técnico.

Y mientras Sam ya dijo esto, una de las cosas más importantes es aprender a decir no . Harás esto un lote . 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" :)

    
respondido por el Rocklan 19.03.2013 - 01:54
11

Todos estos son por el libro y buenas respuestas. Permíteme golpearte por la realidad.
Créalo o no, la mayor parte del tiempo lo dedicará a explicar a los gerentes

  • cómo un problema es difícil de resolver o
  • por qué no se puede resolver en una línea de tiempo determinada o
  • incluso lo menos importante que es resolver.

Para esto necesita las habilidades de explicar cosas técnicas a personas no técnicas, en términos no técnicos. Y es muy difícil. p.ej. Considere explicar P = NP a 6 años de edad. Desafortunadamente, no existe una capacitación formal para eso, y tienes que aprenderlo por tu cuenta.

También esta es la posición en la que la política empieza a golpearte. El gerente le dirá que favorezca a una persona porque sigue el proceso, pero usted sabe que la persona no le sirve en su equipo por varias razones, desde la falta de habilidades técnicas hasta no ser un buen miembro del equipo. Así que todavía no solo tienes que trabajar con esta persona, sino también dar buenas calificaciones a esta persona. Lo opuesto es la persona que tiene buenas habilidades y un miembro del equipo muy eficaz, pero que no sabe cómo complacer a la gerencia y por lo tanto obtiene menos calificaciones.
Luego, hay reuniones inútiles para alguien que se encuentra en una posición alta desde una ubicación remota, dando conferencias sobre los procesos efectivos y cómo su última variación en el proceso aumentará la productividad. Debes saber cómo esconder tu rostro aburrido y lucir enérgico.

    
respondido por el Manoj R 19.03.2013 - 05:31

Lea otras preguntas en las etiquetas