Guideline de Tech Lead

OVERVIEW

Con este documento se busca explicar las competencias que debe tener un Tech Lead para alcanzar con éxito el objetivo de un proyecto de cualquiera que sea su naturaleza

Metas

-Establecer las competencias, responsabilidades e importancia de este rol para Rootstack

-Definir ruta de procedimiento para una ejecución exitosa

-Definir los requerimientos y la planeación del proyecto

-Establecer los lineamientos del desarrollo

-Garantizar la calidad y seguridad del desarrollo


El Tech Lead

¿Qué es un TL?

Un TL en Rootstack es el responsable de definir conjuntamente con el PM las tareas de desarrollo e implementación del proyecto, por su experticia a nivel técnico es el que define la arquitectura del proyecto considerando la tecnología ideal para una solución profesional, lidera y asesora al equipo de desarrollo así como el PM se encarga de la gestión del proyecto de alto nivel, siendo este en donde se concibe la definición de las tareas y requerimientos, el Tech Lead lo hace a bajo nivel, de cara a a las soluciones tecnológicas de esas tareas.

¿Qué se espera de un TL en Rootstack?

A parte de todos los atributos de cualquier integrante de Rootstack se espera de nuestros TL:

-Habilidades técnicas

-Constante actualización en la base de conocimientos en las diferentes áreas de la tecnología

-Productividad

-Buena comunicación y claridad

-Aporte de soluciones profesionales

Han habido muchas frustraciones de varios PM's en Rootstack en los últimos meses porque el ingeniero de software en los proyectos no está probando bien los sistemas que están siendo ejecutados

En reuniones con una nueva compañía de Canada se menciona que la razón por la cual ellos están buscando a otro contratista es que el actual con el cual trabaja tiene ingenieros que no parecen ingenieros ya que no garantizan que lo que se está desarrollando funcione correctamente y los sistemas fallan en cuestiones básicas

Al final la queja real es por la falta criterio y actitud para realizar pruebas de primer nivel, y con esto me refiero a: 1. Que se vea correctamente 2. Que funcione correctamente con base al uso de un usuario normal y las expectativas del task

Las pruebas del segundo nivel que son aceptables en cierto sentido y que hayan bugs menores son: 1. Permisología orientada a los tasks 2. Performance orientado a los tasks (esto no es igual a que haya que re implementar todo el task por que simplemente se tomaron decisiones de arquitectura tontas)

Se les solicita que por favor que revisen su trabajo y hagan pruebas de primer nivel y los que son detallistas con su trabajo ir hasta las de segundo nivel

Al final las consecuencias de no hacerlo a parte de desepeñar mal su trabajo es 1. Esto lleva tiempo 2. costos extra de QA / PM ya que es un flujo ilimitado innecesario porque simplemente no se tiene esta cultura

Competencias / características (habilidades técnicas / humanas)

-Asegurar la comunicación entre todos niveles del equipo, de cara al desarrollo y de cara al PM propiciando un ambiente de trabajo armónico

-Debe poseer la capacidad crítica para identificar el tipo de integrante que necesita para ejecutar una tarea, la selección idónea de cada miembro del equipo garantiza el éxito del mismo

-Apoya al PM en la definición de plan de trabajo de las tareas, fases del desarrollo, Demos internos, Demos externos hasta la conclusión exitosa del mismo

-Evalúa las tecnologías más adecuadas a utilizar como webservers, frameworks, base de datos y patrones de diseño; en líneas generales evalúa toda la tecnología involucrada en el proyecto

-Controlar y monitorea la ejecución técnica del proyecto:

 -Proporciona de liderazgo técnico para el cumplimiento de cada tarea

 -Controlar y monitorear el desarrollo, de manera que se cumplan las especificaciones del diseño y de calidad

-Provee la experiencia técnica para definir métodos, procedimientos, estándares para el desarrollo del proyecto Establece las prácticas que serán primordiales para el aseguramiento de la calidad

Responsabilidades

Generales

-Define el alcance del proyecto en función del análisis técnico de cada tarea

-Implementación de soluciones o cambios en función de la corrección de errores

-Re priorización técnicas de las tareas

-Debe discernir las capacidades de equipo en cuanto a:

 -Habilidades y destrezas
 
 -Velocidad

-Evaluación constante del equipo

-Gestiona todos los recursos técnicos para el equipo

-Gestiona el proceso y aporta soluciones prácticas, profesionales y rápidas para no perder el tiempo del proyecto

En el proyecto de cara al equipo

-Liderar el actual equipo técnico: Desarrolladores y QA

-Mejorar los requerimientos funcionales

-Define la arquitectura y procesos del proyecto

-Coordinar y validar los desarrollos realizados por el equipo

-Estandarizar e implementar metodologías para optimizar los procesos de desarrollo

-El tech lead debe de comunicar al equipo lo que se espera a nivel técnico del equipo, no se puede dejar la puerta abierta a que el desarrollador no se haga responsable de sus responsabilidades con respecto a las tareas a cumplir

-Debe de velar por los estándares de calidad del software que caracterizan a Rootstack, tratando de que estos se cumplan y el desarrollo se haga con el mayor grado de calidad posible

-Entender y transmitir al equipo la importancia de utilizar buenas práctica a la hora de diseñar el software e implementarlo, realizando el mejor software posible de la manera más ágil posible con la idea de poder evolucionarlo fácilmente

-Mostrar al equipo de desarrollo las mejores maneras de realizar las cosas, ayudando y mejorando las habilidades, haciendo cada día un mejor trabajo. Los desarrolladores con más experiencia deberían de transmitir y apoyar a los desarrolladores menos experimentados

-Invertir en la salud del proyecto, reduciendo la deuda técnica, haciéndola visible para todo el equipo y atacarla. Esto conlleva aplicar técnicas que haga que promueva en el equipo auto-exigencia y mejora constante

-Dar ejemplo es primordial. Este rol debe de ser la persona más cercana a seguir los principios y prácticas establecidas por el equipo y siendo un espejo para el resto del equipo. De esta manera estos puedan sentirse también seguros a la hora de implementarlas y proponer soluciones. Además debe de fomentar un entorno de aprendizaje

-Debe de lidiar con aspectos no técnicos relacionados con el equipo, motivando, delegando, influenciando, construyendo equipo y trabajar en el sentido de resolver conflictos y no generarlos. Dando transparencia y visibilidad al equipo además de oportunidades de colaborar y expresarse

Definición de equipo de trabajo

En líneas generales aunque el desempeño de los roles recaigan sobre una misma persona, se debe tener bien identificado que para la buena salud del proyecto se debe tener, un Tech lead conoce su equipo y sabe cuál es la persona con las característica que está buscando para la ejecución exitosa del proyecto

-Un equipo de desarrollo que a la vez sean analíticos y/o críticos, no es solo generar líneas de códigos, es generar líneas de códigos con profesionalismo, previendo cualquier tipo de detalle.

-El Tech Lead suele asumir un rol importante que es el analista de software

-Diseñador gráfico y/o UX

-Líder de calidad el cual debe garantizar que las tareas y/o requerimientos fueron desarrollados para satisfacer los objetivos de una forma profesional

-Documentador técnico, este rol lo puede desempeñar el QA ya que es él quien se encarga de elaborar el plan de pruebas que de alguna u otra forma puede relacionarse el manual procedimental (se está por definir los tipos de manuales)

Definición de ambientes

Un ambiente es aquel en donde habita una práctica, en el caso del software los ambientes son diversos y se definen en función de la fase del proyecto y el tipo de proyecto, en Rootstack la mayoría de los proyectos son convergentes por lo que el ambiente de desarrollo y pruebas se manejan en una plataforma definida por el arquitecto en el cual se configuran los componentes necesarios para el proyecto actual. El Tech Lead tiene la ardua labor de definirlos según sea el caso:

El ambiente de desarrollo

-Posee una estructura robusta, en caso de ser un desarrollo con un equipo multidisciplinario debe prever:

-Si el equipo está in house el servidor puede permanecer local

-Si el equipo está en diferentes locaciones debe tener salida

-Dependiendo de la envergadura del proyecto se debe definir el tamaño del servidores

El ambiente de prueba

Se configura en función de aquel que más se asemeja a las condiciones del cliente, con sus características primordiales de espacio, tráfico y seguridad, el tech lead se encarga de decir la réplica del mismo para realizar las respectivas pruebas, después de haber pasado el proceso del aseguramiento de la calidad este mismo ambiente puede ser habilitado para las pruebas de aceptación del cliente.

Ambiente de producción:

Es el más sensible de todos porque en él habita el sistema actual del cliente (en caso de que existiese) el tech lead debe garantizar la integridad de lo que hay actualmente y la incorporación de lo que se quiere

Definición de herramientas por / para proyecto (kickoff)

El TL en una revisión preliminar del proyecto es capaz de prever cuales son las herramientas básicas de trabajo, sin embargo es indispensable que una vez realizado el Kickoff del proyecto en donde cada tarea y estrategias quedan lo más clara posible, reciba el feedback de parte del equipo con respecto a las herramientas que serán necesarias o propuestas para la consecución del proyecto. Existen herramientas básicas de la gestión del proyecto como los son:

Bitbucket ( manual básico de uso)

Cada proyecto debe tener su repositorio
Cada tarea debe tener un branch
Cada tarea concluida debe generar un PR

Jira (manual básico de uso)

Se debe crear el dashboard del proyecto
Se debe incluir a todos los actores del proyecto
Se debe agregar cada tarea con las descripciones básicas
Se deben crear los sprint de las tareas

Catálogo de herramientas de software: En el guidelines de generalidades se han definido herramientas que pueden ser de utilidad para el desarrollo del proyecto. Es una opción que se debe tener a mano al momento de hacer el kickoff

Orden de ejecuciones de un proyecto

-Mediante el Roadmap y una reunión de entrega de proyecto el TL analiza las tareas que debe ser ejecutadas cumpliendo con que los componentes a desarrollar sean:

 -Reproducibles

 -Estándares

 -Con Calidad

 -Con tecnología actualizada

 -Con perdurabilidad en el tiempo

-Compatibilidad ascendente y descendente

-Vela por la calidad de los demos internos y/o externos

-Debe reunir al equipo bien sea de forma presencial, remota o mixta para presentar los objetivos, desde lo general a lo específico describiendo cada una de las tareas, posible soluciones y observaciones (Kickoff):

 -El PM y el TL deben garantizar que todas las tareas queden claras y específicas para todos los miembros del equipo

 -EL TL debe conocer quién de su equipo técnico es el más apto para realizar las tareas

 -Debe comunicarse con claridad y establecer los estándares de desarrollo y lineamientos de ejecución:
  • guidelines/roles/tl.txt
  • Last modified: 2018/10/08 18:41
  • by gtelleria