¿Nos dirigimos al “código de pico”?

Si. De hecho, podemos estar allí ya.

Claramente, la cantidad de software que se puede escribir es limitada.

Las plataformas en las que se puede encontrar software no están aumentando ni cambiando.

La tecnología de comunicación no está evolucionando.

Los medios digitales no se están extendiendo.

Los dispositivos en los que se puede encontrar el software están estancados.

Hay un límite para la cantidad de ideas que se pueden expresar, los problemas que se pueden resolver y las plataformas para resolverlos.

Oh espera….

El código pico es una idea ridícula . Estoy seguro de que un académico de artes liberales que había escrito un artículo sobre el pico del petróleo pontificó sobre un vaso de chardonnay que el software era similar al petróleo (probablemente en su nuevo iPad mini con Evernote).

Siempre habrá más código para escribir, al igual que siempre habrá más libros para escribir.

El código no es un recurso finito para ser consumido, el software es una expresión de la mente humana, ya sea aplicado para resolver un problema de la vida o los negocios, o para crear entretenimiento.

Me suscribiré a la escuela de pensamiento que “El código de pico no es real”. Aquí hay una respuesta poco convencional, comparándola con otra área aparentemente no relacionada.

Primero … Piense en “código” como “música”
Piense en “código” como “música” por un momento … pidgin, sintaxis y patrones combinados con mucha creatividad humana distribuida produce mucho “producto” final. Los lenguajes de desarrollo son el equivalente espiritual de los instrumentos musicales, lo que le permite expresar su visión a través de otro medio, permitiendo que los patrones de expresión sean portátiles.

Hay mucha simetría entre la música y el desarrollo de software: a menudo me sorprende la cantidad de mis compañeros de trabajo que tienen antecedentes musicales y trabajan en software como su trabajo diario.

Entonces … ¿Hemos llegado a la música punta?
¿Por qué algunas personas piensan que eventualmente vamos a crear “la mayoría del código que alguna vez se necesitará”? Esa misma razón por la que algunas personas piensan “zomg, ¡hemos compuesto toda la música posible!” Si desea sentir ese efecto en relación con la música, eche un vistazo a esta rutina de comedia que demuestra el uso repetitivo de acordes en la música pop:

Pero, por supuesto, no es que nos hayamos quedado sin música, simplemente resulta que la música pop simplemente reutiliza patrones que nos entretienen constantemente.

En el caso de la música (occidental en particular), ni siquiera usamos la amplitud de tonos con nuestras composiciones e instrumentos, y mucho menos nos alejamos de las fórmulas que parecen generar “éxitos”. Tenemos mucho más que (re) explorar en la composición musical. Este estudio explica mejor lo que le sucedió a la música en los últimos 60 años – Midiendo la evolución de la música popular occidental contemporánea

Pero, ¿qué pasa con todas las veces que escribí X para lograr lo mismo [Y]?
Claro, experimentará la monotonía de la codificación después de la centésima vez que ha escrito esa función para recuperar una gran cantidad de datos sobre el usuario Foo, inicializando una tabla hash para buscar rápidamente muchos valores arbitrarios, o destrozado un fragmento de código para una barra de navegación en un sitio web. Estás reutilizando cómodamente patrones que se sabe que son útiles para resolver un problema conocido.

Al final, reutilizar esos patrones por sí solos no es suficiente para crear ese producto final que cumpla una visión única. No más que reutilizar la sintaxis y los patrones del inglés de segundo grado evitaría que uno escriba una novela superventas verdaderamente única, y muchas más después de eso.

Como menciona un miembro anónimo, los problemas establecidos que se pueden resolver mediante el cálculo son infinitos.

¿Entonces el software es infinitamente creativo?
Si. Al igual que la música, la poesía, la escritura, el dibujo y varias artes visuales / escénicas son inagotables. Y ninguno tiene un recurso “máximo” que hayan alcanzado, con muchas personas que se copian entre sí, consciente e inconscientemente, para producir un producto final que coincida con un objetivo único.

Y en cada una de estas áreas, alguien eventualmente se aventura lejos del camino trillado. Esas personas crean algo que se destaca por sí solo para recordarnos que no hay nada “máximo” en lo que respecta al ingenio de la mente humana.

¡De ninguna manera! Con la ley de Moore detrás de nosotros, estamos en la confluencia de dos desarrollos principales:

  1. La revolución multinúcleo. Necesitamos escribir código que se distribuya entre los núcleos de su hardware. Estamos viendo muchos desarrollos realizados en esta dirección, incluidas estructuras de datos sin bloqueo masivamente paralelas que se escalan muy fácilmente en hardware básico. Los lenguajes de programación ofrecen muchas construcciones que ayudan a escribir código concurrente y paralelo.
  2. La revolución del Big Data. Hemos comenzado a manejar muchos datos dentro de nuestra aplicación, mucho más de lo que podríamos concebir hace 10 años. Una de las consecuencias de este movimiento es la atención renovada hacia los algoritmos de aprendizaje automático. Estamos viendo mucho trabajo en IA y áreas relacionadas de aprendizaje automático, incluyendo análisis en tiempo real, sistemas de recomendación, etc.

Así que creo que la demanda de código no ha alcanzado su punto máximo y veremos muchos nuevos códigos que se escriben y consumen en los próximos días.

Esta es una propuesta intrigante. Mirando la demanda actual de código (salarios de buenos ingenieros de software), no estamos cerca del pico. Varias otras razones por las cuales en el futuro cercano la demanda solo puede aumentar son:
1) El código evoluciona a medida que aparecen nuevos lenguajes de programación que reemplazan a los antiguos.
2) No todo el código es bueno, por lo que debe reescribirse.
3) El hardware se está volviendo mucho más sofisticado y requiere más código (compare el tamaño de Windows 8 con Windows 95).
Sin embargo, hay una manera de alcanzar el pico y es inventar robots que escriban código para nosotros. Con el código renovable, posiblemente todos podríamos sentarnos y ver cómo el proceso se cuida solo, pero antes de que se escriba todo el código, no me sorprendería si viéramos el surgimiento de las máquinas.

No, pero las patentes de software continuarán haciendo nuestra vida miserable.

La codificación es fácil y cada vez es más fácil. Se nos paga por expresar el problema de una manera que la computadora pueda entenderlo.

More Interesting

¿Qué paradigma entre funcional, imperativo y POO es más similar a la forma en que pensamos?

¿Cuál es la arquitectura MVC (modelo-vista-controlador) en términos simples?

¿Cuál es la historia más interesante que has escuchado al alojar un podcast de ingeniería de software?

¿Qué tan bueno es el maestro de ingeniería de software de la Universidad de Santa Clara?

Cómo hacer mi propio sistema de reconocimiento de voz como Apple Siri

¿Elegiría un lenguaje de programación debido a sus sistemas de gestión de dependencias?

Teniendo una experiencia de programación HTML (muy) básica, ¿cuál es un marco de tiempo razonable que le tomaría a alguien aprender los conceptos básicos de la programación?

¿Cómo se puede construir mejor una cartera como desarrollador front-end, diseñador y UXer?

¿Puede IBM suministrar software de buena calidad (a diferencia del hardware) aunque sea de su tamaño y sus intereses demasiado extendidos?

¿La experiencia de trabajo independiente cuenta con un currículum?

¿Cómo explicaría las pruebas de software a cualquier persona que no tenga ningún conocimiento sobre las pruebas?

¿Cómo es escribir código para un fondo de cobertura?

¿Con qué frecuencia las organizaciones reevalúan sus decisiones de software de base de datos?

¿Se revocarán las leyes de trabajo infantil de EE. UU. Para que los niños menores de 16 años que saben codificar puedan trabajar en Silicon Valley?

Corremos un software financiero en línea. ¿Cómo protegemos la aplicación para que ni nosotros / los creadores podamos ver los datos del cliente?