¿Cuáles son las ventajas de un gerente de producto con experiencia en CS?

1. Respeto y credibilidad con los ingenieros: esto no es algo “incorrecto” o “correcto”, solo es algo que sí lo es. Los ingenieros tienen un respeto incorporado por otros ingenieros, y si demuestras que eres uno de ellos, obtienes una ventaja. Todavía hay suficientes cosas de jefes de pelo puntiagudo en los lugares de trabajo que los ingenieros pueden desconfiar de las personas con “gerente” en su título que no tienen una comprensión directa del trabajo de ingeniería.

Puntos de bonificación si registra el código usted mismo. Casi todos en el mundo lo aprecian cuando sus compañeros caminan un día en sus zapatos.

2. Instinto de lo que es fácil frente a lo difícil, lo que es rápido frente a lo que consume mucho tiempo y lo que simplemente es incognoscible: es más fácil hacer su trabajo si no tiene que consultar con la ingeniería cada 15 minutos para ver si esta característica requeriría un gran esfuerzo, o si es posible. Además, en algunos casos, no puede saber exactamente cuándo se hará algo. (“¿Cuándo convergerá el modelo?”) Si comprende esto, entonces puede tener una conversación honesta al respecto. Si no, es probable que recuperes un gran número inventado, lo que no te ayuda mucho.

3. Respeto por la deuda técnica: incluso los PM semi-técnicos se quejan cuando la ingeniería decide que deben hacer una refactorización. Pero a menudo los PM crean este problema al presionar por velocidades de ejecución de cabello en fuego para cada característica. Si tiene una comprensión innata de que esto creará problemas en el futuro, a veces en el peor momento posible, entonces tomará la decisión inteligente de reducir la velocidad y aumentar el tiempo de reembolso de la deuda cuando pueda pagarlo. Además, cuando necesite moverse realmente rápido, su equipo lo creerá.

4. Mejores instintos de marketing y estrategia que provienen de la codificación y, lo que es más importante, de lanzar proyectos paralelos por su cuenta. Estos pequeños proyectos le darán un instinto para las nuevas tecnologías y técnicas de marketing que quizás aún no esté utilizando en su trabajo diario. Más. a menudo son los pequeños proyectos paralelos los que se hacen notar por las buenas personas y, naturalmente, conducen a tu próximo concierto. Por lo tanto, mientras aprende a codificar para reforzar el # 1-3, el resultado de ese proceso de aprendizaje también puede ser beneficioso.

5. Nuevos amigos: si eres un geek, probablemente compartas todo tipo de experiencias geek con tus compañeros de trabajo técnicos. Todos ustedes aman Firefly y el juego de Ender . Todos trajeron computadoras portátiles a clases aburridas de Teoría de CS para poder jugar World of Warcraft . Trabajar en una empresa de tecnología es mucho más divertido cuando tienes muchas experiencias culturales compartidas con todas las personas de tecnología.

Un aparte, porque no puedo resistirme: en realidad no creo que “llamar mentiras” en las estimaciones sea una de las ventajas. Hay muchas cosas que son fáciles en un script de Python de 100 líneas que son muy difíciles en un sitio de producción que sirve tráfico en vivo. Y las elecciones arquitectónicas realizadas al principio de un proyecto pueden tener un impacto descomunal en lo que es fácil o difícil más adelante. Es muy difícil para un PM tener un instinto para esto sin codificar el sistema real día tras día.

En todo caso, los PM que conozco que fueron ingenieros superiores en vidas pasadas tienen menos probabilidades de comentar las estimaciones, incluso en broma. Han estado allí antes y saben lo poco obvio que puede ser. (Y cuán frustrante es cuando un PM discute contigo sobre eso).

1. Detallado: un gerente técnico de producto comprende mejor el producto. Puede precisar un requisito a un nivel en el que los desarrolladores sepan exactamente qué hacer y puedan estimar mejor sus líneas de tiempo.
2. Práctico : hay momentos en que el equipo de ventas necesita saber si se puede crear un módulo en particular para ayudar a una gran base de clientes y hay momentos en los que no desea o tiene desarrolladores para crear pruebas de conceptos. La semana pasada tuve que escribir un código visual básico (que nunca había hecho antes) para integrar nuestra API REST con algún software heredado de Microsoft que solo admitía la integración ocx. Ahora a veces realmente quieres al cliente porque te da mucho dinero.
3. Comprensión y respeto: la mayoría de las veces, los desarrolladores entusiastas no sobreestiman el tiempo de codificación. Afirman que terminan las cosas antes y más rápido y terminan perdiendo los plazos. Es fácil identificar a esas personas y pedirles que mantengan un búfer en su tiempo de codificación. Por supuesto, también se aplica el viceversa.
4. Más social: gracias a mi formación técnica, sabía que podía interactuar mucho mejor con los desarrolladores. Cuando sigues cosas como hackernews, mashable, quora, etc., siempre tienes algo interesante que discutir con ellos.
5. Más involucrado: hay momentos en los que me siento con líderes técnicos para hablar sobre arquitectura y les doy otro cerebro para discutir los defectos y encontrar una mejor solución. Cuando estás técnicamente involucrado, puedes sugerir cosas en las que los técnicos podrían no pensar (he sugerido usar bibliotecas abiertas que sean perfectas para ellos en lugar de crear las suyas propias que ahorraron un tiempo de codificación significativo).
6. Puede contratar! Un gerente técnico de producto puede tomar entrevistas. Buenas entrevistas Tiene un círculo de desarrolladores y, por lo tanto, también puede sugerir buenos ingenieros de su comunidad para que trabajen con ellos.

No tengo un título de CS, pero tengo experiencia en codificación, DBA y administrador de sistemas de esos viejos días de las puntocom, y todo eso es muy útil al administrar un producto.

  1. Puedo hablar sobre las grandes preguntas . ¿Cuál es la forma correcta de resolver este problema? ¿Cuál es el enfoque arquitectónico? ¿Cuáles son las ventajas y desventajas de nuestras opciones? Puedo sentarme en estas discusiones y ayudar a guiarlas para asegurarnos de que tomamos buenas decisiones no solo para las características actuales, sino también para las cosas en el horizonte,
  2. Entiendo la deuda técnica . En realidad, no es difícil para una persona no técnica comprender el concepto de deuda técnica, pero en realidad puedo entender la magnitud y la urgencia de la deuda que estamos asumiendo.
  3. Sé cuando estamos fuera de pista . Si estamos atascados en la creación de la nueva tecnología favorita de alguien en un proyecto, o si un miembro del equipo no comprende el problema y sugiere una solución que no está realmente en el objetivo, lo sé.
  4. Soy mejor explicando. Entiendo el problema desde la perspectiva del equipo, por lo que puedo usar las palabras correctas y emitir las cosas de la manera correcta.
  5. Es mas rapido . Comparto mucho vocabulario con el equipo. Por ejemplo, la semana pasada nos encontramos con un error con una condición de carrera en algún código de terceros. Para un PM no técnico, puede haber alguna necesidad de explicar una condición de carrera. En mi caso, el ingeniero dijo “tenemos una condición de carrera en {producto de terceros}”. Más tarde ese día, tuve una discusión productiva con una SA sobre las configuraciones de subprocesos de Apache. No necesitaba una explicación adicional de nada de eso.
  6. Entiendo la resolución de problemas. Cuando las cosas están en llamas, es difícil mantener una vista panorámica y gestionar la resolución de problemas de una manera realmente científica. Yo puedo hacer eso.

También hay desventajas:

  1. Intento manejar las cosas yo mismo . En comparación con los codificadores reales y actualizados, soy lento y publico código basura. En general, los profesionales deberían hacer el trabajo, no yo.
  2. Salto a las soluciones. Comparado con ingenieros reales, profesionales y actualizados, no entiendo todos los mejores enfoques. Además, saltar a una solución puede evitar que el equipo tenga una buena discusión sobre un proyecto. Una buena arquitectura después de una gran discusión generalmente resulta mejor que una gran arquitectura sin ninguna discusión.

Definitivamente no veo “llamar a bs en las estimaciones” como un beneficio. De hecho, ni siquiera creo que un primer ministro deba saber lo suficiente sobre el código que se está escribiendo para estimar efectivamente cuánto tiempo tomaría, al menos no con una precisión de más de un par de días.

Si tiene un problema con las estimaciones incorrectas de su equipo, su problema no son las estimaciones, hay una causa raíz. Y la solución no es un PM técnico, probablemente sea un proceso ágil.

Como corolario de la respuesta de Adel Shehadeh, ser capaz de criticar las estimaciones o declaraciones hechas por los desarrolladores cuando no están siendo completamente honestos sobre un proyecto sobre el que les estás preguntando (ya sea sobreestimarlo porque es algo que no hacen). quieren hacer, o subestimarlo porque es “genial” y realmente quieren hacerlo).

Hay muchas ventajas que tienen un fondo CS (en la práctica, no solo un título):

  • En primer lugar, la capacidad de comprender al equipo de desarrollo, de tener una conversación abierta a nivel de los ojos con ellos.
  • Para poder estimar verdaderamente el esfuerzo requerido para la tarea, comprenda las dificultades técnicas
  • Identificar oportunidades que dependen de las capacidades técnicas.

También diría que también ayuda con la ideación y la estrategia. Al observar las operaciones del mercado y las solicitudes de los clientes, sabrá cómo encajan y qué es técnicamente posible.

Ser capaz de identificar estimaciones poco realistas de los ingenieros, si las hay.