¿Por qué hay tanto software poco convincente en el mundo?

Estamos literalmente rodeados de software basura. Los fondos de pensiones tropiezan con scripts de lotes de décadas de antigüedad con suposiciones erróneas . Más de cien millones de números de la seguridad social y otros datos confidenciales se filtran de las instituciones de crédito . Y eso sin mencionar el montón de software molesto y con errores creado tanto por pequeños proveedores como por grandes corporaciones.



Tal incompetencia nunca se habría salido con la suya en otras disciplinas de la ingeniería. Bajo ninguna circunstancia aceptaremos puentes que tengan tantos errores como el sistema de software promedio. ¿Por qué es tan grave la situación del diseño de software? ¿Por qué hay tantos programas de higos en el mundo?



Para comprender la razón de esto, primero debemos comprender cómo la habilidad de un desarrollador se relaciona con la utilidad del software que crea para resolver un problema específico.





En la primera categoría, vemos "desarrolladores" que son esencialmente incompetentes. Hay una amplia gama de habilidades en esta categoría, pero todos en ella son similares en el sentido de que su producto final es funcionalmente inútil. Las computadoras son despiadadas en este sentido: si no sabe cómo hacer que su aplicación se compile, es mejor que no la escriba en absoluto. Si no sabe cómo crear la funcionalidad básica de su aplicación, absolutamente nadie la usará. Por debajo de un cierto umbral de habilidad, no puede crear ningún software utilizable. La mayoría de los "desarrolladores" de esta categoría experimentan con el código en su tiempo libre y rara vez crean software profesional.



Sin embargo, una vez que cruzamos el umbral, la situación cambia drásticamente. En la parte inferior del gráfico se encuentran los desarrolladores que pueden crear sistemas de software mínimos viables. Y si estos desarrolladores mejoran, la utilidad de su software también aumentará rápidamente. Una aplicación que "funcionaba" pero que era lenta, con errores, insegura y confusa se está volviendo cada vez menos defectuosa, más eficaz, más segura y más fácil de entender. A diferencia de las otras dos categorías, a medida que los desarrolladores de esta categoría desarrollan habilidades, el software que crean se vuelve significativamente mejor.



Finalmente, cuando los desarrolladores alcanzan un cierto umbral de habilidad, lo cruzan.

y caen en la tercera categoría. En una categoría donde todos han alcanzado un nivel tan alto de competencia (en relación con la tarea que están resolviendo) que un mayor crecimiento personal tendrá un efecto mínimo en el producto final. Por ejemplo, cualquier ingeniero seleccionado al azar de Google puede crear una aplicación CRUD al igual que Jeff Dean .






En un mundo ideal, los únicos desarrolladores en la primera y segunda categorías serían estudiantes o jóvenes profesionales. Y todos los sistemas de software profesionales serían creados principalmente por desarrolladores de la tercera categoría. Desarrolladores que hayan dominado a la perfección todas las habilidades necesarias para resolver su problema y crear soluciones muy cercanas al ideal teórico. En un mundo tan asombroso, todo el software que nos rodea tendría aproximadamente el mismo alto nivel de calidad, funcionaría exactamente como se esperaba, con un rendimiento óptimo y sin agujeros de seguridad. En este mundo, la sociedad reaccionaría a todo software con alegría, no con molestia.



Sin embargo, hay dos problemas entre nosotros y esta utopía.



Primero, el número de desarrolladores en la tercera categoría es extremadamente pequeño en comparación con la segunda categoría. La programación es "fácil de aprender pero difícil de dominar". Millones de personas pueden escribir un script que funcione, pero muy pocos dominan el arte del diseño de software. Además, no hay obstáculos para ingresar a la industria del desarrollo de software: no existe un análogo para los programadores de la Asociación Médica Estadounidense o la Asociación Internacional de Abogados. No es de extrañar que haya muchas más personas con competencia inicial e intermedia en él en comparación con el número de especialistas competentes.



En segundo lugar, la demanda de desarrolladores es increíble. Los desarrolladores de software tienen la oportunidad de realizar enormes contribuciones a prácticamente cualquier industria. En comparación con profesiones más específicas, como la astronomía, donde las oportunidades son muy limitadas, el desarrollo de software es un área que carece de talento. Es decir, el principal problema es encontrar desarrolladores de software talentosos, no encontrar trabajos adecuados para ellos.



Si combina estos dos problemas, resulta que la mayoría de las empresas que desean contratar desarrolladores expertos no tienen la oportunidad de hacerlo. No hay suficientes buenas personas para contratar, y quienes están en el mercado a menudo reciben ofertas incomparablemente mejores de empresas de nivel FANG o nuevas empresas que se disparan.



Por lo tanto, todas las demás empresas toman la decisión más óptima en tal situación. Contratan desarrolladores de la segunda categoría. Desarrolladores a los que generalmente se les puede llamar "suficientemente buenos". Sus aplicaciones tienen errores, vulnerabilidades de seguridad y no pueden manejar cargas elevadas. Pero al menos estas personas pueden crear algo que "funcione". Algo más útil que el status quo. Algo que se puede implementar en producción con un análisis crítico mínimo.






Puede engañarse que esta situación es natural para todo el mundo y para todos los profesionales. Pero en realidad no lo es.



Hay muchos puestos que requieren una formación seria, pero entran en la categoría de "fáciles de aprender". Se trata de profesiones como taxista, albañil o cantinero. En tales profesiones, hay una gran proporción de trabajadores que han alcanzado la categoría de alta competencia, y una mayor mejora de las habilidades prácticamente no trae ningún beneficio.



También hay muchas profesiones en las que las oportunidades son tan limitadas que los empleadores prefieren contratar solo a excelentes especialistas. Por ejemplo, esto se aplica a los pianistas. Se pueden encontrar pianistas aficionados en muchas familias, pero nunca tocarán en una sala de conciertos, ya que el número de pianistas talentosos supera con creces el número de conciertos planificados.



Finalmente, hay profesiones que son difíciles de dominar y con muchas oportunidades, pero que tienen barreras regulatorias de entrada. Por ejemplo, práctica médica. Había muchas personas en el mundo anterior a Obamacare que no podían pagar un seguro de salud y elegirían felizmente "al menos algo" de atención médica en lugar de ninguna (¿vale la pena hacerlo? Es otra pregunta difícil).... Sin embargo, debido a reglas estrictas, solo aquellos que han demostrado su alta competencia pueden proporcionar servicios médicos. La situación es similar en muchas disciplinas de la ingeniería que están sujetas a un estricto escrutinio regulatorio, como la construcción de puentes y rascacielos y la fabricación de equipos médicos.






El desarrollo de software se ha convertido en una curiosa intersección de todo lo anterior. Es fácil de aprender, por lo que existen legiones de desarrolladores "suficientemente buenos" en todo el mundo. Desarrolladores que crean soluciones de software bastante útiles, pero llenas de errores y vulnerabilidades de seguridad. Al mismo tiempo, esta profesión es difícil de dominar a un alto nivel, por lo que es mucho más difícil encontrar desarrolladores que puedan evitar tales trampas.



La industria del software es tan rica en oportunidades que a la mayoría de las empresas les resulta casi imposible contratar buenos profesionales. Es tan rico en oportunidades que, si bien hay legiones de desarrolladores novatos en todo el mundo, hay trabajo para todos y cada uno de ellos.



Finalmente, en el desarrollo de software, no hay control de entrada. Cualquiera puede tomar un programa de capacitación en codificación, tomar algunos cursos de codificación en línea y comenzar a ofrecer sus servicios en Upwork al día siguiente. Y el producto de su trabajo puede implementarse inmediatamente en producción sin ningún control regulatorio.



Poniéndolo todo junto, puedes entender por qué hay tanto software poco convincente en el mundo. El software está devorando el mundo, acompañado de errores y agujeros de seguridad.






: , , . , .



, , . CEO, «» — , .



imagen



All Articles