¿El mejor programador en la sala debe ser un colaborador individual o un gerente?

Un ingeniero con el nivel de credibilidad, estado y paga de un gerente. A menos que, por supuesto, sea buena administrando y quiera hacerlo. Entonces ella puede ser gerente, pero muchos grandes programadores son gerentes mediocres o simplemente no les gusta el trabajo. Una vez que está administrando, no debería estar haciendo mucha codificación, al menos no en proyectos de producción. El gerente que toma el trabajo divertido y delega la basura tiende a perder el respeto de las personas que se manejan.

Idealmente, el mejor ingeniero puede seguir siendo ingeniero, pero tendrá el estado de ser equivalente al gerente, y preferiblemente hasta niveles altos (es decir, a los 10 años de experiencia sólida, el ingeniero debe ser el equivalente al Director; a los 15 años, el equivalente al VP) . Desafortunadamente, casi todas las organizaciones de “doble vía” están configuradas y la vía de los ingenieros es varios niveles más difícil de escalar. Tome Google por ejemplo. En la pista del gerente, se espera que sea Director. Si es gerente de Google, debe tratar de joder para no convertirse en Director dentro de 5 años y Vicepresidente dentro de 8. Por otro lado, hacer que el Ingeniero Principal equivalente a Director sea extremadamente difícil (y casi imposible fuera de la oficina de Mountain View). Se supone que los sistemas de doble vía proporcionan una ruta alternativa para excelentes contribuyentes individuales, pero en realidad admiten una meritocracia falsa en la que los gerentes (al obtener sus respectivos títulos cien veces más fácilmente) se ven mejor que los contribuyentes individuales.

Gestión y experiencia técnica son campos diametralmente opuestos que son bastante difíciles de combinar en una sola persona, pero eso es exactamente lo que pretendía hacer desde hace bastante tiempo. Es posible tener un gran éxito si lo está haciendo bien.

Los mejores programadores están bastante obsesionados con los detalles técnicos de cómo se supone que es un programa, en términos de conocimiento arcano de infraestructura, vudú algorítmico, conocimiento API, estándares de código, patrones, contexto / limpieza de primavera y ese tipo de cosas :-).

Los mejores gerentes, por otro lado, están obsesionados con maximizar la efectividad del equipo, la motivación y la relación con otros equipos y la alta dirección. Los dos primeros implican liderazgo, el segundo dos implica habilidades diplomáticas. Dicho esto, hay un pequeño requisito de competencia técnica, ya que de vez en cuando debes descubrir por qué el equipo no hace algo … en esos raros momentos. francamente hablando, lo que estás haciendo es descubrir si lo que no se está haciendo es un verdadero NO PUEDE hacerse o no … para esos momentos tener habilidades técnicas recién utilizadas es indispensable. Si sabes lo que están haciendo íntimamente bien, es muy fácil para ti ayudar a tu equipo a resolver un problema o concluir que el problema en cuestión no se puede resolver. Ese tipo de liderazgo es muy valorado por los equipos de desarrollo, pero debe dejar que el equipo se acerque a usted con el problema, no inyectarse para resolverlo.

Al igual que la mayoría de las cosas en la vida, si sabe lo que está haciendo, lo ayudará a supervisar a las personas que lo hacen … sea lo que sea, pero solo sabiendo que no lo “convierte” en un buen supervisor, se requieren otras habilidades.

En resumen, las habilidades técnicas son necesarias pero no suficientes para ser un buen gerente de ingeniería en otras palabras … si una persona es “simplemente” el mejor programador del equipo, él / ella debe permanecer en esa posición a menos que sean habilidades de liderazgo y comunicación diplomática. También desarrollado para garantizar una trayectoria de gestión.

Para mantenerme relevante, me aseguro de involucrarme con al menos 2 proyectos de desarrollo actuales (como desarrollador práctico) si estoy administrando un equipo. Eso generalmente toma la forma de un trabajo de consultoría con otra empresa y / o proyecto de código abierto.

Ser el mejor programador no implica ser un buen administrador (o incluso competente). Son 2 habilidades muy diferentes, aunque se pueden combinar en la misma persona. Algunos muy, muy buenos programadores apenas pueden funcionar en un equipo, y mucho menos liderar uno. Algunos programadores muy, muy buenos, se destacan por trabajar, mejorar y sacar lo mejor de los demás, ya sea que sean el ‘gerente’ oficial del equipo o no.

Si el mejor programador en la sala también es un buen administrador y también quieren ser un administrador, entonces pueden y deben ser administradores; es tan raro encontrar un buen administrador como encontrar un programador realmente bueno y su contribución como buen administrador puede ser tanto o incluso mayor que su contribución potencial como programador. En un entorno técnico, tener fuertes habilidades técnicas es una gran ayuda para ser un buen gerente.

Intentar combinar la administración (más allá de un par de personas) con hacer una fuerte contribución técnica es difícil, frustrante y, a menudo, no lleva a ninguno de los dos roles a hacerse bien. Si, como buen técnico con ganas de gestionar, se le ofrece su primer puesto directivo, hay una pregunta absolutamente clave que debe formular y obtener una buena respuesta antes de tomarla: ‘¿Quién va a hacer mi trabajo actual si tomo ¿ese?’. Si la respuesta es ‘usted es’, ¡no tome el rol de gestión!

Cada equipo es diferente, las personas son complicadas. Comprende a los que te rodean, trata de encontrar los roles que se adapten a ellos. Encuentre una manera de trabajar juntos que funcione. Hable sobre esto: es al menos tan importante como el idioma en el que codifica.

Hay diferentes tipos de gerentes. La mayoría de las empresas confunden estos.

gerente de producto – “meticuloso. bueno con horarios”.
gerente de tecnología – “bueno con la tecnología”
gerente de personas – “bueno con la gente”

El gerente de personas administra a las personas: contratación y despido, bonos, etc. El gerente de tecnología administra el desarrollo tecnológico, la dirección de I + D, etc. El gerente de productos administra el producto real: características, hitos, fechas de lanzamiento, etc.

Estas posiciones de gestión requieren diferentes conjuntos de habilidades. Las compañías más tradicionales como Cisco fusionan las 3 juntas en una sola.

Creo que este es uno de los mayores errores que puede cometer una empresa. Un gerente de personas con grandes egos intentaría hacer una llamada a las instrucciones de tecnología que no son óptimas. Del mismo modo, un gerente de tecnología intentaría exprimir características que al cliente no le interesan porque es genial. Estas cosas son perjudiciales para lanzar un gran producto.

Empresas como Microsoft y Google siempre se han dividido entre las tres.

El mejor programador debe ser un gerente de tecnología.

Si esa persona no tiene pasión por ser o no se preocupa por ser un buen gerente, entonces permanezca como contribuyente individual.

He visto a un programador realmente bueno ser promovido como gerente, pero no se conectó muy bien con personas que no eran tan buenas (obviamente si eres el mejor programador), y finalmente se arremangó para solucionar problemas en lugar de darles a otras personas El tiempo y la oportunidad de resolver por su cuenta.

Lo que define a un buen gerente se puede encontrar en muchos libros. Un libro que estoy leyendo trata sobre líderes emocionalmente inteligentes … Y cubre la pregunta exacta que hizo aquí. El libro se llama liderazgo primario por Daniel Goleman y otras dos personas. Personalmente, amo este libro y se lo recomendaría a cualquiera que esté en la fuerza laboral.

“Mejor” ¿cómo ?

He conocido a grandes programadores que fueron excelentes para depurar y resolver fragmentos de código aburrido (francamente). Conozco grandes programadores que fueron principalmente diseñadores que escribieron código como parte necesaria del trabajo. Conocí a grandes programadores que eran buenos porque podían lograr que sus compañeros trabajaran de manera más efectiva al prever y resolver problemas. Y también hay otros, por supuesto.

Algunas de esas personas son excelentes gerentes. A algunos de ellos, bajo ninguna circunstancia, se les debe dar algo que parezca autoridad sobre otros.

Gerente. La parte más importante del desarrollo de software es la continuidad de la visión. Esto se deriva de una lista clara de características, especificaciones del producto y un diagrama de flujo sólido. El mejor codificador debe ser el responsable de la arquitectura general, de modo que cuando dos equipos se causen errores entre sí, pueda solucionar el problema.

PD: Y los monos de software no reemplazan las pruebas unitarias.

El mejor programador en la sala debe ser el programador principal. El mejor pensador de sistemas debería ser el arquitecto. La mejor persona debería ser el líder. El mejor planificador y creador de informes debe ser el gerente. A menudo, estos talentos se superponen.

Sí, en mi humilde opinión, mantener el puesto de “gerente” como una ciruela para los buenos programadores es un mal patrón en la industria. Es probable que sea una resistencia del taylorismo (donde se supone que todas las personas son intercambiables).

Ninguno. Los programadores deben ser colaboradores del equipo . Entonces no necesita un administrador (o al menos necesita menos de ellos)

More Interesting

¿Bajo qué condiciones es aceptable entrevistarse para un trabajo, ser aceptado y luego decir "está bien, me gustaría comenzar en un mes"?

¿Cuáles son algunas cosas que impedirán el crecimiento de su carrera como ingeniero de software?

¿Qué es lo que realmente necesito aprender y hacer para convertirme en un ingeniero de software exitoso?

Cómo convertirse en analista de negocios con 2 años de experiencia en desarrollo de software

Cómo convertirse en un excelente programador

¿Qué tan fácil es encontrar un trabajo en Alemania en ingeniería o informática, sin una maestría?

¿Puedes convertirte en ingeniero de software sin ir a la universidad? ¿Cómo?

¿En qué tipo de roles podría saltar que son roles técnicos pero no de desarrollador?

¿Debo obtener un MBA en los Estados Unidos mientras soy ingeniero de software en una empresa de renombre en la India?

¿Por qué elegiste tu carrera en desarrollo de software?

¿Cuál es su consejo profesional para un estudiante indio que se encuentra actualmente en la clase 10 si quiere convertirse en ingeniero de software?

¿Cuáles son las características de un buen probador de software?

Soy un ingeniero de software que trabaja en la industria de redes durante 2 años. La inteligencia artificial y las redes neuronales me atraen. ¿Cómo debería ahora planear cambiar dados mis primeros dos años (y los primeros dos trabajos) en la industria de redes?

¿No conocer Java obstaculizará mi carrera como ingeniero de software?

¿He cometido un error al no tomar el trabajo de software que me ofrecieron hace 5 años?