Las leyes inmutables son raras en la ingeniería de software, y cuando un ingeniero afirma haber encontrado una, ese ingeniero generalmente es considerado con escepticismo.
Los principios generales son más bienvenidos.
En esta publicación y episodio de podcast, transmito algunas filosofías sueltas sobre la ingeniería moderna de software. Estas son opiniones fuertes débilmente sostenidas. Agradezco el debate y la discusión.
1. No tienes que demostrar tu valía.
El software es un campo nuevo y nadie sabe cómo hacerlo. Si alguien dice que no está calificado y, por lo tanto, debe realizar trabajos de mantenimiento, debe interrogar a esa persona. Tenemos un sistema al revés donde las personas a las que se les paga menos hacen el trabajo más horrible. Tienden a ser jóvenes e ingenuos.
Esto no es un axioma.
La narrativa que venden las compañías gigantes a los ingenieros jóvenes es la siguiente: “tome su trabajo de $ 80k / año, haga el mantenimiento del software que le da a la compañía $ 1 millón y odie su vida”.
“Después de que haya pasado suficiente tiempo en el primer nivel de la mina de franjas intelectuales, le haremos un SDE 2, donde podrá realizar una refactorización de nivel ligeramente superior por $ 150ka al año, lo que hará que la empresa gigante $ 5 millones”.
Esto es lo que se llama un arbitraje.
2. No eres una mercancía.
Tenemos una mentalidad de línea de montaje de la era industrial. El software es más una artesanía. No creas que eres un diente reemplazable. No crea en el proceso de entrevista único para todos con problemas de pizarra. Estos sirven para eliminar tu individualidad y hacerte sentir como un trabajador de línea de montaje.
3. La ingeniería de software es un arte y una ciencia, pero raramente ambos a la vez.
El proceso de planificación y diseño es un arte, pero una vez que se cumplan los requisitos, puede proceder de manera más determinista. Lo mismo es cierto para las otras actividades cuantitativas en las que he participado: póker, música y escritura. Como discutimos Michael Rosenthal y yo, la cuestión del arte versus la ciencia es la misma pregunta que la estrategia versus la táctica.
4. No eres tu trabajo.
Aprendí esto muy temprano cuando jugaba al póker cuando tuve que dejar esa carrera, y lo uní estrechamente a mi identidad. Si hace que su trabajo sea lo mismo que quien es, entonces su autoestima se define por aquellos que lo juzgan en su trabajo.
Su trabajo es un medio para atender su propio propósito superior.
5. El mundo es un sistema distribuido.
Cuando realiza una acción en su teléfono inteligente, hay latencia antes de que se ingiera esa acción.
Los servidores a veces te mentirán, pero los servidores tienden a la consistencia eventual. El mundo funciona de la misma manera. A corto plazo, los sistemas humanos nos mienten todo el tiempo, pero el mundo tiende a la consistencia eventual, la verdad finalmente se presenta.
Una analogía decente es la hipótesis del mercado eficiente: los mercados lentamente eficientes son un proceso eventualmente consistente.
El mundo es un sistema distribuido, ¿cuál es la consecuencia de esto? Tenemos que hacer los arduos cálculos de riesgo y recompensa que son obligatorios para cada programador de sistemas distribuidos.
Las fallas de cola larga pueden ocurrir y ocurren.
En un sistema distribuido, a menudo priorizamos la seguridad sobre la vida. En un sistema operativo distribuido, el programador toma todas las precauciones para evitar la pérdida de datos. Del mismo modo, si un escenario de la vida real presenta una pequeña probabilidad de un gran riesgo a la baja, debe tomar grandes precauciones. Si alguien te ofrece tirar un dado con 1000 lados, y si lanzas un 1-999, obtienes $ 100 millones, pero si sacas un 1000, te cortan la cabeza, el lado positivo está limitado, pero el lado negativo no es .
Puedo estimar cuánto $ 100 millones mejorarán mi vida, pero es imposible cuantificar cuán malo es que me corten la cabeza. Casi nunca aceptaría esa oferta, porque el valor esperado es infinitamente negativo.
Volviendo a las consecuencias de vivir en un sistema distribuido, hay una gran variedad de resultados potenciales en una transacción dada, y evaluar estos riesgos masivos de cola larga requiere mucho pensamiento y cálculo.
6. No eres un boleto de lotería.
Esta es una cita de Peter Thiel. Argumenta que deberíamos pensar en términos de cálculo en lugar de estadísticas porque si crees que el mundo es una lotería, entonces te darás permiso para perder.
Ejemplo: un ingeniero de software podría decir “Estoy postulando para un trabajo con 1000 solicitantes, por lo que las posibilidades de que obtenga el trabajo son bastante bajas”. Eso es mirar un juego de habilidad como un juego de suerte, y si no lo haces ‘ t optimice con mucha preparación y duerma para esa entrevista, entonces es su culpa.
Si juegas póker o Magic o Dominion, es fácil echarle la culpa a la pérdida, pero los mejores jugadores son los que optimizan a pesar de la mala suerte. Personalmente, me gusta jugar juegos en circunstancias en las que tengo mala suerte porque es más un desafío interesante y una mejor experiencia de aprendizaje.
“Los hombres superficiales creen en la suerte o en las circunstancias. Los hombres fuertes creen en la causa y efecto.”
– Ralph Waldo Emerson
La suerte es una idea que nos rescata cuando no hacemos suficiente diligencia debida.
Vivimos en una sociedad que ama hablar de suerte porque nos da una excusa cuando perdemos. Eso no quiere decir que no haya suerte en el mundo: muchas personas tienen mala suerte. Pero si está leyendo esto, es probable que esté en el 0.01% más afortunado.
Existe un argumento filosófico de larga data sobre si controlamos o no nuestro propio destino. En realidad, realmente no importa.
Debemos suponer que tenemos el control de nuestro propio destino.
Si no tenemos el control, no cambia nada si asumimos o no que tenemos el control. Pero si tenemos el control, sería muy peligroso para nuestro bienestar asumir que no tenemos el control.
7. Elija la acción sobre la planificación.
Hablar es barato y la ejecución es escasa.
Es por eso que a nadie le importan tus ideas, les importa ver tu prototipo. John Mayer dijo que todo lo que tenía que hacer para tener éxito es terminar sus canciones.
En Amazon, llamaron a esto “sesgo de acción”. En Facebook, “se mueven rápido y rompen cosas”.
Dicho esto, generalmente puedes elegir ambos. La planificación a largo plazo está subestimada porque pocas personas toman las acciones agresivas a corto plazo necesarias para iterar hacia ella. Si nunca ha visto frutos de planificación a largo plazo, es difícil ver el punto.
8. La ingeniería de software está llena de mentiras y personas que tratarán de aprovecharse de usted.
Tienes que descubrir qué creer por ti mismo.
También hay muchas personas geniales, pero depende de ti desarrollar la intuición y un fuerte razonamiento.
Hay una escena de The Big Short donde Mark Baum, interpretado por Steve Carrell, está parado frente a los banqueros diciendo “el mundo está lleno de fraude, nuestra comida es fraudulenta, nuestro sistema bancario es fraudulento, nuestra medicina es fraudulenta”, y si miras a tu alrededor e investigas cada una de estas cosas, descubres que estos sistemas tienen capas de engaño y mentiras: la ingeniería del software es la misma.
Por ejemplo, si llega a un lugar que le da muchas ventajas como almuerzo gratis o masajes en la espalda, comprenda que lo están haciendo porque le están pagando mal.
Si recibe un salario de $ 130k, opciones de acciones de $ 70k, almuerzo gratis y lavandería gratis, puede parecer un buen negocio, pero ¿qué dice eso sobre cuánto dinero le está haciendo a la compañía?
Según Business Insider:
- Apple: $ 1,865,306 por empleado
- Google: $ 1,154,896 por empleado
- Microsoft: $ 732,224 por empleado
- Amazon: $ 577,482 por empleado (era más alto antes de trabajar allí)
Esto ni siquiera está sesgado respecto de cuánto ganan con los ingenieros .
La economía del software no es intuitiva.
Lo loco del software es que se requieren $ 0 para hacer nuevas copias de un producto que solo tiene que escribirse una vez. Esto contrasta con la línea de montaje donde cada nueva unidad requiere un nuevo esfuerzo y fricción humana para reproducirse. Con el software, solo la primera unidad requiere mano de obra significativa para producir.
Como ingenieros de software, tenemos que repensar nuestro valor como trabajadores en un mercado con el alto apalancamiento de la economía del software.
Las compañías tecnológicas gigantes pueden llevar a cabo este arbitraje de ingenieros que pagan poco porque los ingenieros se dejan seducir por una serie de mitos.
“La tradición intelectual es de servilismo al poder, y si no la traicionara me avergonzaría de mí mismo”.
-Noam Chomsky
Hay una narración de un programador que es incapaz de hacer otra cosa que no sea programar. Algunos programadores hablan de esto con orgullo, diciendo cosas como “Solo soy un ingeniero, no quiero pensar en el lado comercial de las cosas, no entiendo el lado comercial de las cosas”.
Los ingenieros han sido seducidos por la perspectiva del industrial de que no podemos liderarnos, no podemos evaluar el costo de oportunidad y no entendemos el mercado en su conjunto.
Todas estas son mentiras, y el mundo será más eficiente y utilitario si los ingenieros toman el control de sus carreras y comienzan a evaluar las opciones fuera de su contexto inmediato y limitado.
9. No eres tus credenciales ni tu pasado.
Si comenzaste en ventas, puedes aprender a convertirte en ingeniero. Si comenzó como ingeniero y no le gusta, puede convertirse en un podcaster.
No necesita un título; si puede hacer el trabajo, puede obtener un trabajo como ingeniero.
En la entrevista con mi hermano Michael Rosenthal, habló sobre abandonar la escuela y hacer programación independiente, y cómo aprendió más rápido desde que salió del proceso educativo altamente seguido.
En el episodio de Seth Godin, habló sobre el sistema educativo en desuso y la disminución del valor de un título.
No te dejes definir por tu pasado y las etiquetas y mensajes que la sociedad te aplica. Puedes tomar el control de tu vida y definir tu futuro.
10. Como ingeniero de software, puede tomar riesgos profesionales agresivamente porque su desventaja está fundamentalmente limitada.
Deberías saltarte al trabajo. Pasamos la mayor parte de nuestro tiempo en el trabajo.
El mercado laboral es realmente bueno en este momento porque nuestra economía está siendo completamente reformada por el software. Se está generando una gran oportunidad económica:
- AWS (todavía joven) lleva los costos de inicio de $ 50k + a ~ $ 0
- Mobile (todavía joven) pone una supercomputadora que es más poderosa que la varita de Harry Potter en el bolsillo de todos
- Los mercados emergentes aún no están en línea, lo que sugiere una gran demanda latente
- Cada uno de los anteriores tiene efectos compuestos entre sí
Estos son fundamentos económicos, no señales técnicas espurias.
No les creas a los capitalistas de riesgo despotricando y enloqueciendo argumentando por valoraciones más bajas y gritando sobre una burbuja. No les creas a los antitecnólogos luditas que se burlan de sus cafés con leche.
Según cualquier proyección lógica, la gran demanda de ingenieros no se está disipando en el corto plazo … a menos que toda la economía se derrumbe en una terrible catástrofe de cisne negro, en cuyo caso su trabajo actual probablemente se evaporará de todos modos.
Como dijo David Heinemeier Hansson, vale la pena considerar con qué frecuencia su trabajo lo pone en un estado de flujo y tranquilidad. Si su trabajo es estresante y completamente desagradable, encontrar un nuevo trabajo debería ser una gran prioridad.