Las leyes inmutables son raras en la ingeniería de software, y cuando un ingeniero afirma haber encontrado una, ese ingeniero suele ser considerado con escepticismo.
Los principios generales son más bienvenidos.
En este post y episodio de podcast, transmito algunas filosofías sobre la ingeniería de software moderna. Estas son fuertes opiniones débilmente sostenidas. Acojo con satisfacción el debate y la discusión.
1. No tienes que probarte a ti mismo.
El software es un campo nuevo y nadie sabe cómo hacerlo. Si alguien dice que no está calificado y que, por lo tanto, debe realizar un trabajo de mantenimiento, debe interrogarlo. Tenemos un sistema al revés en el que las personas a las que se les paga menos hacen el trabajo más malo. Tienden a ser jóvenes e ingenuos.
Esto no es un axioma.
La narrativa que las empresas gigantes venden a los ingenieros jóvenes es la siguiente: “tome su trabajo de $ 80,000 / año, haga el mantenimiento del software que hace a la compañía $ 1 millón y odie su vida”.
“Después de que hayas pasado suficiente tiempo en el primer nivel de la mina intelectual, te haremos un SDE 2, en el que puedes hacer refactorización ligeramente superior a $ 150ka al año, lo que hará que la compañía gigante tenga $ 5 millones”.
Esto es lo que se llama un arbitraje.
2. Usted no es una mercancía.
Tenemos una mentalidad de línea de ensamblaje que queda de la era industrial. El software es más bien una artesanía. No creas que eres un diente reemplazable. No crea en el proceso de entrevistas de talla única con problemas de pizarra. Estos sirven para eliminar su individualidad y hacer que se sienta como un trabajador de la línea de ensamblaje.

3. La ingeniería de software es un arte y una ciencia, pero rara vez ambas cosas a la vez.
El proceso de planificación y diseño es un arte, pero una vez que se cumplen los requisitos, puede proceder de manera más determinista. Lo mismo ocurre con las otras actividades cuantitativas en las que he participado: póquer, música y escritura. Como Michael Rosenthal y yo discutimos, la cuestión del arte contra la ciencia es la misma pregunta que la estrategia frente a la táctica.
4. Tú no eres tu trabajo.
Aprendí esto muy temprano cuando jugaba al poker cuando tuve que dejar esa carrera, y había unido el póker a mi identidad. Si haces que tu trabajo sea lo mismo que lo que eres, entonces tu autoestima se define por aquellos que te juzgan en tu trabajo.
Su trabajo es un medio para servir a su propio propósito superior.
5. El mundo es un sistema distribuido.
Cuando realiza una acción en su teléfono inteligente, hay una latencia antes de que esa acción sea ingerida.
Los servidores a veces le mentirán, pero los servidores tienden hacia una eventual consistencia. El mundo funciona de la misma manera. En el corto plazo, los sistemas humanos nos mienten todo el tiempo, pero el mundo tiende hacia una consistencia eventual, la verdad eventualmente se presenta.
Una analogía decente es la hipótesis de 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 todos los programadores de sistemas distribuidos.
Las fallas de cola larga pueden 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. De manera similar, si un escenario de la vida real presenta una pequeña probabilidad de un gran riesgo a la baja, debe tomar una gran precaución. Si alguien te ofrece tirar un dado con 1000 lados, y si sacas un 1-999, obtienes $ 100 millones, pero si sacas un 1000, te cortan la cabeza, el alza está limitada, pero el inconveniente no es .
Puedo estimar cuánta $ 100 millones mejorarán mi vida, pero es imposible cuantificar qué tan 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 requiere una gran cantidad de reflexión y cálculos profundos.

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: “Me estoy postulando a un trabajo con 1000 postulantes, por lo que las posibilidades de conseguirlo son bastante bajas”. Eso es considerar un juego de habilidad como un juego de suerte, y si no lo hace. Optimice con mucha preparación y duerma para esa entrevista, entonces es su culpa.
Si juegas al póquer o al Magic o al Dominion, es fácil culpar a la pérdida por la suerte, pero los mejores jugadores son los que optimizan a pesar de la mala suerte. Personalmente, me gusta jugar juegos en circunstancias en las que no tengo suerte porque es más un desafío interesante y una mejor experiencia de aprendizaje.
“Los hombres bajos 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 adora hablar de suerte porque nos da una excusa cuando perdemos. Eso no quiere decir que no hay suerte en el mundo, muchas personas tienen mala suerte. Pero si estás leyendo esto, es probable que estés en el .01% más afortunado.
Hay un largo argumento filosófico sobre si controlamos o no nuestro propio destino. En realidad, en realidad no importa.
Debemos asumir que estamos en 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.
Por eso a nadie le importan sus ideas, les importa ver su 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, por lo general puedes elegir los dos. 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 fructificar la planificación a largo plazo, es difícil ver el punto.
8. La ingeniería de software está llena de mentiras y personas que intentarán aprovecharse de ti.
Tienes que averiguar qué creer por ti mismo.
También hay muchas personas excelentes, pero depende de ti desarrollar la intuición y el razonamiento fuerte.
Hay una escena de The Big Short donde Mark Baum, interpretado por Steve Carrell, se encuentra frente a los banqueros y dice que “el mundo está lleno de fraudes, 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, encuentras que estos sistemas tienen capas de engaño y mentiras: la ingeniería de software es la misma.

Por ejemplo, si llegas a un lugar que te ofrezca muchos beneficios como el almuerzo gratis o los masajes para la espalda, entiende que lo están haciendo porque te están pagando menos.
Si está obteniendo un salario de $ 130k, $ 70k en opciones de compra en acciones, almuerzo gratis y lavandería gratis, eso puede parecer una buena oferta, pero ¿qué dice eso de cuánto dinero está ganando la compañía?
Según Business Insider:
- Manzana: $ 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 que trabajara allí)
Esto ni siquiera está sesgado hacia la cantidad de ingenieros .
La economía del software no es intuitiva.
Lo que está loco por el software es que se necesitan $ 0 para hacer nuevas copias de un producto que solo debe escribirse una vez. Esto contrasta con la línea de ensamblaje donde cada nueva unidad requiere un nuevo esfuerzo y fricción humana para reproducirse. Con el software, solo la primera unidad requiere una 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 lograr este arbitraje de los 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í misma”.
-Noam Chomsky
Hay una narrativa de un programador que es incapaz de hacer nada, excepto la programación. Algunos programadores hablan de esto con orgullo, diciendo cosas como: “Soy solo un ingeniero, no quiero pensar en el lado comercial de las cosas, no entiendo el lado comercial de las cosas”.

Los ingenieros se han dejado seducir por la perspectiva del industrial de que no podemos dirigirnos, no podemos evaluar el costo de oportunidad y no entendemos el mercado en su totalidad.
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 estrecho.
9. No eres tu credencial ni tu pasado.
Si empezaste 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 el abandono de la escuela y la programación independiente, y sobre cómo ha aprendido más rápido desde que abandonó el proceso educativo de gran seguimiento.
En el episodio de Seth Godin, habló sobre el sistema educativo depreciado y el declive de un título.
No te dejes definir por tu pasado, y las etiquetas y los mensajes que la sociedad aplica a ti. Puedes tomar el control de tu vida y definir tu futuro.
10. Como ingeniero de software, puede tomar riesgos de carrera de manera agresiva porque su desventaja está fundamentalmente limitada.
Deberías estar saltando 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 remodelada por el software. Se está generando masiva oportunidad económica:
- AWS (aún joven) toma los costos de inicio de $ 50k + a ~ $ 0
- El móvil (aún joven) coloca 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 completamente 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 espurias técnicas.
No te creas a los capitalistas de riesgo que están despotricando y delirando que defienden valoraciones más bajas y gritan sobre una burbuja. No le creas a los antitecnólogos de alta tecnología que se burlan de sus lattes.
Según cualquier proyección lógica, la alta demanda de ingenieros no se disipará pronto … a menos que toda la economía se derrumbe en una catástrofe espantosa de cisnes negros, en cuyo caso es probable que su trabajo actual se evapore de todos modos.
Como dijo David Heinemeier Hansson, vale la pena considerar la frecuencia con la que su trabajo lo pone en un estado de fluidez y tranquilidad. Si su trabajo es estresante y totalmente desagradable, encontrar un nuevo trabajo debería ser una gran prioridad.