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á:
- Habilidades para entrevistar y cómo encontrar al personal adecuado
- Cómo lidiar con los problemas de las personas con los miembros de tu equipo
- Administrar 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:
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.