¿Cuáles son algunas estrategias para convertirse en un “X que programa”?

1. Ir a Estadística / Ciencia de Datos. Este ha sido un campo popular durante mucho tiempo, y la capacidad de automatizar informes estadísticos todavía es extremadamente rara y valiosa.

2. Entrar en el marketing basado en datos. Patrick McKenzie tiene toneladas de esto, pero el campo está tan maduro para los híbridos de Marketing / Programador que incluso han creado un término para ello: “Growth Hacker”

3. Entra en cualquier otro campo que implique mover muchos números, como finanzas / contabilidad. En este momento, la mayoría de las personas realiza la mayoría de la transformación de datos a mano, y hay muchas oportunidades para automatizarla. Si puede recibir un pago de $ 70k para trasladar los datos y los scripts se vuelven 5 veces más efectivos, puede justificar fácilmente un salario mucho más alto.

Nota: Realmente he trabajado en cada uno de estos campos y tuve éxitos significativos al automatizar mucho de lo que las personas hacían a mano. Mis habilidades de programación son terribles, apenas sé lo que es un objeto, pero las habilidades de programación básicas aplicadas a un problema valioso a menudo son más útiles que las habilidades de programación avanzadas aplicadas a un problema que a nadie le importa (o un problema que 50,000 más están trabajando para resolver) .

Primero, es importante evaluar por qué es tan importante tener una X (como en los Programas de X Who). El problema con la ingeniería de software se reduce al hecho de que existen múltiples equilibrios estables en la clasificación del estado de los ingenieros de software. ¿Recuerda la universidad, cuando podría entrar en el flujo y generar 500 líneas por noche en su Máquina de vectores de soporte? Bueno, en la mayoría de los equipos de software, funciona de la siguiente manera: un ingeniero (el “blazer”) se pone en movimiento y se divierte, toma decisiones arquitectónicas y logra mucho, y el resto continúa con sus cambios. complejidad, y dividir su tiempo entre (a) adaptarse a los cambios del blazer, y (b) implementar las características triviales que necesita pero no tiene tiempo para escribir. El blazer sigue haciendo cosas geniales, y los otros desarrolladores se mantienen al día y, ocasionalmente, obtienen un logro menor que podría ascender a 20 líneas de código.

El valor predeterminado es que usted termine con un jugador clave y personas de apoyo N-1, y quien sea el jugador clave probablemente permanecerá en ese rol, porque no hay forma de que los demás lo superen. No siempre sucede de esta manera en un equipo de software, pero tenerlo de otro modo generalmente requiere una previsión inteligente con respecto a la división del trabajo.

La industria del software está llena de ciclos en los que la percepción permite un rendimiento que fortalece la percepción. Por ejemplo, la única manera de obtener buenos proyectos es haber trabajado en buenos proyectos. La verdad es que el rendimiento es muy difícil de medir. Las únicas personas que pueden evaluar el desempeño de un programador es un programador mucho mejor, cuyo tiempo es tan valioso que casi nunca se le asigna ese propósito. Perversamente, aunque las diferencias en productividad entre los programadores son enormes, las compañías son terribles para medirlos. Está claro que algunas personas son muy valiosas (y otras no), pero casi nadie puede obtener una imagen decente de qué conjunto es cuál. La aproximación de primer orden de la capacidad o el rendimiento es la visibilidad, pero hay mucha competencia para los proyectos de alta visibilidad y la única forma de obtenerlos es … bueno, entiendes la idea.

Por eso necesita una X. Ser ingeniero de software no significa nada. No es impresionante, porque hay muchos malos que trabajan en proyectos estúpidos y nunca aprenden nada. Ser un ingeniero de software realmente bueno es impresionante, porque hay muy pocos de ellos, pero tener la oportunidad de demostrar que eres bueno es difícil y, por lo general, implica mucha más política que ingeniería.

La ingeniería de software es una sociedad de 3 clases (con un 4to si contamos con la nobleza ejecutiva):

  1. Los sumos sacerdotes que tienen títulos como “Arquitecto jefe” o “Ingeniero principal” y llegan a construir sistemas que se espera que otras personas usen y toman decisiones técnicas a gran escala. Se les confía para tomar decisiones que imponen complejidad a otras personas, y uno generalmente espera que tomen buenas decisiones. Si son buenos, hacen que la vida del resto sea mucho mejor. Si son malos, crean desastres. En las pequeñas empresas, un mal arquitecto puede ser fatal.
  2. Los ciudadanos libres (clases medias) que tienen el derecho de optar por la complejidad que proviene de otras personas, porque se asume implícitamente que están haciendo algo útil. Se espera que contribuyan, pero obtienen mucha autonomía en lo que hacen y en cómo realizan su trabajo. No pueden imponer la complejidad a los demás libremente, pero no se les impone constantemente un mandato no financiado en su flujo de trabajo. La mayoría de los científicos de datos y los recursos financieros trabajan de esta manera. Si quieren trabajar en Python, R o Clojure, pueden hacerlo.
  3. Campesinos que mantienen o trabajan en sistemas donde las decisiones ya están tomadas. Los ingenieros excedentes que realmente no son de confianza con su propio tiempo o iniciativa. Avanzan lentamente, frenados por la confusión de la complejidad de los demás, y casi nunca tienen la oportunidad de demostrar su valía. Una vez que esté fuera de la escuela por 3 años, no aprenderá nada en un rol campesino y debe planificar una estrategia de salida (del rol, no necesariamente de la empresa) a partir de los 6 meses.

Los campesinos engendran con el conjunto de bits bozo, la gente libre genera con el desmonte y los sumos sacerdotes pueden alternarlo indirectamente (a través de las opciones de pila de tecnología que determinan la clasificación de rendimiento). Los gerentes (nobleza) pueden cambiarlo directamente.

Al igual que en la Europa medieval, los campesinos son aproximadamente el 80%, la gente libre es aproximadamente el 10% y los sumos sacerdotes y la nobleza (administradores) son alrededor del 5%. La Asignación Abierta promueve a los ingenieros de forma automática a ese estado de clase media, pero, lamentablemente, es algo raro de ver, y pasarán algunos años (posiblemente más) antes de que la eficacia exagerada de ese modelo se filtre y sea tan obvia que la alternativa se vea como La locura que realmente es.

Tu X necesita darte suficiente credibilidad para comenzar en la clase media, porque si eres un campesino, probablemente nunca saldrás, porque nunca lograrás mucho. Arreglará errores y agregará características de poca importancia y tendrá que convencer a su jefe de que es lo suficientemente difícil como para que lo consideren un verdadero logro … y si tiene ese nivel de habilidad social, hay formas mejores y más rápidas de salir. de la clase campesina.

En Wall Street, X será un conocimiento estadístico o financiero, algo que un ingeniero nunca aprendería haciendo aplicaciones empresariales, lo que demuestra que tienes cierta curiosidad. O podría ser un conocimiento de muy bajo nivel (optimización de frecuencia de caché) con el propósito de escribir sistemas de comercio de baja latencia.

En las startups, esa X suele ser gestión de productos, relaciones con los clientes, conocimiento del dominio o aprendizaje automático. De hecho, “científico de datos” parece ser una palabra clave para un programador que comienza en esa clase media.

Me imagino que, en las compañías de juegos, es el conocimiento del diseño de juegos. Probablemente estés mejor si has leído, por ejemplo, Reglas de juego , que si no lo has hecho.

La X necesita (a) establecer la viabilidad a largo plazo (potencial de crecimiento) en la empresa, y (b) probar que es inteligente de una manera que es independiente de la ingeniería de software. La ingeniería de software es muy importante, pero también es una forma extremadamente ineficiente de demostrar su valía e intelecto. ¿Cómo compruebas que puedes construir sistemas escalables y con una arquitectura sólida si tu jefe no te deja quitarte el tiempo de esa estúpida aplicación que ayuda a RRHH a despedir a las personas?