¿Eres un desarrollador eficiente? Entonces la IA está tras tu trabajo
¿Eres un desarrollador eficiente? La IA está tras tu trabajo
En mi publicación anterior, escribí sobre cómo encontrar tu ventaja competitiva como desarrollador de software en un mundo de IA creciente. Creo que hay algunas preguntas más relevantes en la próxima década, así que me gustaría elaborar sobre el tema en esta y las próximas publicaciones.
Solo puedes mantener una ventaja competitiva si te enfocas en tareas que los humanos, por su naturaleza misma, pueden hacer mejor que las máquinas. Hay dos propiedades necesarias del desarrollo de software que ilustran y coinciden con las fortalezas y debilidades relativas de los humanos versus las computadoras. Son eficiencia y efectividad, y serán el foco de la publicación de hoy. Le doy crédito a Uwe Friedrichsen por señalar esta distinción en un blog reciente.
Ajedrez y Submarinos
¿Quiénes estarían entre las personas más estimadas en ciencia, arte y deporte? Una encuesta realizada en 1985 podría incluir al físico Richard Feynman, la actriz Meryl Streep, la filósofa Susan Sontag y probablemente también a Gary Kasparov, el joven gran maestro de ajedrez ruso y nuevo campeón mundial.
Varios años antes, ya podías jugar al ajedrez contra una variedad de oponentes digitales. Los algoritmos en estos dispositivos de juguete pueden parecer poco sofisticados ahora, y su débil potencia computacional puede provocar risas. Pero definitivamente eran una forma primitiva de IA, aunque no fueran rival para jugadores humanos serios, y mucho menos para un gran maestro. La Ley de Moore se encargó rápidamente de eso. En poco más de una década (1997), el mismo campeón mundial perdió contra el equipo Deep Blue de IBM.
Esta derrota de hace 25 años del hombre contra la máquina no nos preocupó excesivamente de que la IA pronto tomaría el control en una distopía al estilo de Terminator. Si algo, confirmó que el ajedrez es difícil para los humanos y fácil para las computadoras. “La pregunta de si una computadora puede pensar no es más interesante que la pregunta de si un submarino puede nadar”, según el profesor Dijkstra. Es cierto, no se puede comparar una computadora ganando en el ajedrez con la forma en que lo hace Magnus Carlsen. La forma en que un submarino nuclear desplaza el agua es igualmente incomparable a cómo lo hace un tiburón. La inteligencia artificial, sea como sea que la definas, solo es externamente análoga a lo que sucede en un cerebro humano. Es el efecto lo que cuenta. Sin embargo, no estoy de acuerdo con la sugerencia de que la pregunta de una computadora pensante no es interesante.
- EE.UU impone restricciones de exportación a los chips de NVIDIA en ...
- Oficina de Derecho de Autor de EE.UU. Abierta a la Opinión Pública ...
- Libro de jugadas de Pandas 7 funciones de datos completas que debes...
El Viaje y el Destino
Según el diccionario Longman, la efectividad es el hecho de producir el resultado deseado o previsto; el hecho de lograr un resultado exitoso. El jaque mate es un resultado exitoso. La eficiencia es la calidad de hacer algo bien sin desperdiciar tiempo ni dinero. De la infinidad de partidas posibles, el jaque mate del loco es el más eficiente.
A propósito: nota el pensamiento puramente económico en la definición. Solo se considera un “desperdicio de tiempo o dinero”. Si la energía hubiera sido un factor, ninguna invención humana sería eficiente en comparación con sus contrapartes biológicas en términos de consumo de energía bruta.
Una vez que la computadora puede hacer un trabajo de manera efectiva y eficiente, los humanos se vuelven redundantes desde una perspectiva económica fría. Puedes jugar por diversión, pero no esperes un salario. A la gente todavía le gusta el ajedrez porque nunca fue un medio de supervivencia. No necesitamos el ajedrez para cultivar alimentos o construir casas, y solo una pequeña élite de los mejores jugadores gana dinero con él. Si el ajedrez hubiera sido un recurso de producción (como la tierra y el trabajo), los jugadores humanos de ajedrez no tendrían ninguna ventaja competitiva.
Ser efectivo significa llegar a un resultado satisfactorio. Lo tenemos o no lo tenemos. Puedes superar las expectativas o fracasar miserablemente en cualquier grado, pero lo que cuenta es el pulgar hacia arriba o hacia abajo binario. La eficiencia se trata de cómo realizas las tareas constituyentes. Es una cualidad que permite más margen de maniobra. Algunas partes del proceso pueden ser menos óptimas que otras y aún así contribuir a un resultado efectivo. Otros términos que coinciden con la dicotomía son el qué (y por qué) versus el cómo. Es hacer lo correcto versus hacer las cosas correctamente. Es el destino versus el viaje.
Ambos son necesarios. Ser consistentemente ineficiente te llevará a la bancarrota en poco tiempo, pero ser inefectivo ni siquiera te conseguirá una primera venta. Por lo tanto, ningún proyecto de software serio debe emprenderse sin una clara definición de la efectividad que buscamos lograr. Solo el genio de la improvisación Keith Jarrett podría sentarse frente a un teclado sin un objetivo en mente y aún así producir una obra maestra, pero eso fue en un teclado de piano.
La Eficiencia es Relativa, la Efectividad Subjetiva
La efectividad es difusa, impredecible y subjetiva. ¿Qué tienen en común Seinfeld, Monty Python, Bohemian Rhapsody y Star Trek? Son todos clásicos populares queridos que la mayoría de la gente, incluidos los críticos, no notaron ni apreciaron mucho cuando salieron por primera vez. No es de extrañar que muchos productos fracasen, sin importar cuánta investigación de mercado se les aplique. No hay una fórmula para la creatividad y no se puede predecir cómo pueden cambiar los gustos de las personas. La eficiencia es mucho menos frustrante. Al cliente le importa poco con qué herramienta de construcción o IDE se haya hecho la aplicación de Spotify. No deja rastro en el producto final.
Los productos modernos son una complicada combinación de partes de varios proveedores. Elegimos las partes por su eficiencia con la esperanza de crear un producto efectivo que los clientes quieran comprar. Pero aunque cada parte ya es efectiva desde la perspectiva del proveedor cuando realiza una venta, solo se vuelve eficiente cuando es la parte correcta. Esto se aplica a más que partes físicas.
Aquí tienes un ejemplo del mundo real de ASML, el gigante de semiconductores cerca de mi ciudad natal. El tráfico matutino hacia el campus es infernal y el transporte público solo está servido por autobuses. El ayuntamiento quiere construir un nuevo carril bici para atraer a los trabajadores que viven en un radio de diez millas a ir en bicicleta al trabajo. El objetivo es llevar a todos a la oficina de manera segura y rápida al aliviar la congestión para aquellos a quienes las bicicletas no son una opción. Los contratistas que construyen esta carretera no tienen un interés urgente en este impulso de eficiencia, y mucho menos los fabricantes de bicicletas Trek o Shimano, que suministran los cambios y frenos para que las bicicletas funcionen sin problemas. Pero todos contribuyen a la efectividad de la nueva carretera. La eficiencia es relativa y la efectividad es subjetiva.
Entiendes el punto. El software no es diferente. El producto empresarial promedio consiste principalmente en código de otras personas que tú y tu equipo no pueden controlar (un 99,9% es una apuesta segura, especialmente si cuentas con la pila en la nube que implementas). Cualquier componente puede ser eficiente en algunos lugares y inútil en otros. Un mecanismo de almacenamiento en caché altamente optimizado respaldado por un sistema Oracle empresarial dedicado aún es un desperdicio de dinero si solo lo necesitas para recordar cincuenta números durante una hora.
La eficiencia se trata de experimentación, hacer pequeños ajustes y reemplazar componentes lentos/costosos por otros de mejor rendimiento. Es un ámbito complicado y basado en datos donde las computadoras se sienten como en casa. Por otro lado, juzgar la efectividad del software es complejo: se reduce a si en última instancia hace felices a los destinatarios. ¿Quién más que otras personas están calificadas para responder esa pregunta y tomar decisiones?
En la próxima publicación, me centraré en los requisitos/especificaciones frente a la implementación y cómo coinciden con la distinción entre eficiencia/efectividad. En la tercera parte, discutiré el famoso problema de alineación. Incluso los humanos no logran alinear los objetivos del software con sus propios intereses y construyen fracasos costosos. ¿Cómo podemos esperar que las máquinas lo hagan mejor? Luego, en la cuarta parte, abordaré nuestro amor por la especialización, programar por programar y por qué eso dejará de ser una ventaja competitiva pronto.