Cuando vas a un bar con un amigo que trabaja en TI, inevitablemente terminas discutiendo asuntos actuales en la industria.just a few general observations we both made:
-
besides the usual impostor syndrome that many software developers have, there's also a lot of anxiety about all the chatter around AI taking over jobs
-
leaders and managers can’t help but get into conversations about how much of a performance boost (and when) to expect from developers, whether it’ll be x10, x40 or x200
-
at the same time, the push for AI adoption makes both tears and laughter
-
everywhere you look, you can find many near-absurd product features that use AI only to justify that it is from an AI-first company
-
drought and nervous foot tapping are common in the startup world, yet discussing them is often considered bad form
-
hiring is becoming increasingly difficult for everyone, especially for people just starting out in their careers
One of the biggest concerns about the impact of hype surrounding AI is that it could discourage new people from entering the software development industry.
"Esto ya no es trabajo creativo; aprender el desarrollo de software hoy en día es una estafa para los tontos; el juego está resuelto" (este tipo de rumores).
"This is no longer creative work; learning software development today is a scam for fools; the game is solved" (this kind of rumors).
"Esto ya no es trabajo creativo; aprender el desarrollo de software hoy en día es una estafa para los tontos; el juego está resuelto"
Para mantener avanzando la industria de la tecnología, es esencial transferir el conocimiento de cómo funcionan las cosas y ayudar a los novatos a adquirir las habilidades que necesitan para mantener todo funcionando sin problemas y avanzar aún más la tecnología (Jonathan Blow expresó bien esta ideaen su discurso).
Aún así, para mí, se parece al desarrollo web de alrededor de 2008 a 2014 en lugar del boom de PC de la década de 1980 (una expansión, en lugar de una categoría completamente nueva).
En ese entonces, había toneladas de maneras de hacer las cosas básicas.Cada semana, se sentía como si estuviéramos intentando una nueva manera de hacer las cosas.Es similar a la ingeniería de IA actual, donde una nueva herramienta, modelo, enfoque, referencia, marco o empresa emerge semanalmente, alegando que están a punto de revolucionar todo.
No es una ofensa, pero para mí, herramientas comoDevínSon mucho como lo queAplicaciones de Adobe DreamweaverDesarrollo web en 2010.
Dónde estamos ahora
El desarrollo de software ha estado presente durante más de 70 años.Desde entonces, el mundo ha sufrido numerosos cambios.
Aquí está aVersión de tamaño completode la imagen de arriba.
Como puede ver, nuestro campo está evolucionando continuamente hacia una mayor abstracción y más métodos automatizados para gestionar la creciente complejidad.Cada nueva era trae nuevas ideas que nos ayudan a gestionar los problemas anteriores mientras nos impulsan más hacia la hiperspecialización y equipos más pequeños, proporcionándonos más maneras de recopilar retroalimentación más rápidamente.
What complexities are we facing in the 2020s (so far)?
- Supply chain security
- modern software development relies on numerous third-party components, with even simple applications often incorporating thousands of them, each posing a potential security risk that could compromise the entire application
- Observability data overload
- metrics, logs, and traces generate vast amounts of data daily, but pinpointing the root cause is becoming increasingly challenging because dashboards display everything yet explain nothing (debugging is still hard)
- Configuration management
- use of IaC, feature flags, env variables, and secrets has created massive configuration spaces that are hard to validate
- AI/ML integration complexity
-
integrating AI components with traditional software is still quite challenging, as SOTA and toolchains change every two weeks, and approaches evolve even faster
-
Replacing software developers with AI agents can't be a solution for any of today's complexities.
A few things to watch for:
-
AI tooling consolidation
-
commoditization of AI workflow creation
-
even better ways of distributing software
-
changes in the way we build software that cultivate higher quality as consumer expectations rise due to software abundance
Apuesta en el desarrollo de software
La generación de código fue un excelente caso temprano para los LLM, ya que tenía sólo suficientes datos abiertos para que funcionara y un enorme efecto wow que hizo que todo el mundo hablara sobre ello.Los ganancias actuales de rendimiento que obtenemos de los copilotos se pueden perder fácilmente en la ansiedad causada por los medios de comunicación o cuando las personas comienzan a buscar actuaciones laterales para ganar dinero extra y asegurar su futuro.
Sin embargo, debemos asumir que las capacidades de los LLM para generar código solo mejorarán con el tiempo (Como esto parecepara serSu característica más fuertede los problemas actuales (tales comoLongitud rápida que impacta significativamente en el rendimientoY así sucesivamente).
The effect of AI on cutting costs might be tricky, as everyone has the same chances to optimize. What's most likely to happen is that AI will make the whole pie bigger.
¿Qué ocurrió cuando la mayoría de la gente aprendió a leer, escribir, imprimir, publicar, y luego finalmente compartir su trabajo en línea con todo el mundo? ¿Qué ocurrió cuando la mayoría de la gente tenía la capacidad de disparar, editar, añadir filtros y efectos, y luego publicarlo para que todos lo vean (o comprar y ver más tarde)?
Un montón decosas salvajesPero escucha: autores, cineastas y maestros todavía están cerca y en alta demanda (especialmente los excelentes).
Esto elevará la barrera para las empresas y los individuos (como lo hizo con los sitios web y las aplicaciones web), trayendo nuevos diferenciadores, herramientas y enfoques e introduciendo nuevos requisitos para los desarrolladores.
En otras palabras, me gustan las ideas expresadas hermosamente en artículos recientes: "El fin de la programación tal y como la conocemos“Y”IA y programación: el comienzo de una nueva era» »
So, what is next?
¿Tendremos una plataforma "IKEA" que proporcione un contenedor de aplicaciones con todas las características básicas, lo que le permitirá pedir a un asistente de IA para desactivar las funciones que no necesita y agregar las características que desea, luego ajustarlo manualmente?
¿O la criptografía finalmente entregará una mejor web para todos (tal vez felizmente fusionada con los principios locales)?
¿O será un flujo de trabajo de IA amigable a nivel de Excel para todos?
¿Re-diseñaremos los servicios existentes y crearemos nuevos para satisfacer las necesidades de lo que parece ser nuevos actores: la comunidad (o red) y los agentes de la IA?
Si realmente hemos entrado en una nueva fase de la espiral de desarrollo de software, mucho cambiará, y aún más aparecerá.
Una invitación
En un entorno donde agregar más código es barato, un excelente desarrollador de software se parece más a un mago clásico que a un ingeniero clásico.
Están rodeados de libros antiguos (Los Grandes Azules, Los Verdes y Los Dragones, etc.), siempre llevan un libro de hechizos con ellos (sus patrones y principios arquitectónicos favoritos, las mejores prácticas), hablan un lenguaje extraño (abreviaturas, acrónimos, léxico), dibujan algunas ilustraciones esotéricas (diagramas), conectan algunos puntos en el papel (interfaces), y una vez hecho, dicen "generar y correr" (abracadabra).
Los desarrolladores de hoy tienen herramientas mucho más avanzadas, y los nuevos llegados serán una generación de desarrolladores que pueden lograr significativamente más por sí mismos que todas las generaciones anteriores de desarrolladores.
Pero esto aún se tiene que entender y aprender a utilizar.
Some things can significantly enable you on this journey:
-
When code is generated, it will eventually lack evident vulnerabilities and be validated against requirements using automated tests.
- Your job is to ensure that the code is maintainable (this makes it easier for both machines and humans to troubleshoot and extend the codebase).
-
You need to understand, appreciate, and delve into the fundamentals of software architecture and the core principles of computer science.
- The best way to go is to a) study hard, b) build from scratch, and c) revise and exercise (regularly).
-
The programming languages won't matter much, but mastering two languages - a dynamic, high-level one and a static, low-level one - will give you enough opportunities to practice all the essential concepts and broaden your perspective.
Supongamos que las cosas no van bien para la industria. En ese caso, siempre se puede conseguir un trabajo enEl Gobierno de Estados UnidosLa apuestaEn muchos Otros lugarestambién) oMuchos bancos, ya que se basan fuertemente en bases de código escritas en el lenguaje de programación COBOL (Lenguas muertas en los años 80Aparte de las bromas, mientras que la industria de la tecnología se mueve increíblemente rápido, el ritmo de adopción de la tecnología en otras industrias y sus procesos de adquisición a menudo parecen congelados en el tiempo (por ejemplo, Windows XP, Excel, Fortran, Perl).
Las personas también se resisten al cambio.Esto es donde la falta de experiencia de un recién llegado a menudo trabaja a su favor.Muchas personas (especialmente con la edad) encuentran difícil:
- Superar patrones aprendidos y reforzados de comportamiento y prejuicios.
- Tome riesgos al renunciar a algo que funcionó para ellos para probar algo nuevo.
- Alocar una cantidad suficiente de tiempo y energía para aprender y practicar esa nueva cosa de manera consistente.
Heads-up para novatos
Mientras que las analogías históricas pueden resonar con la realidad contemporánea, no debemos engañarnos a nosotros mismos.La realidad es compleja y dinámica, mientras que la historia es estática y contextual.
Many people will likely attempt to automate software development tasks, y es seguro decir que la generación de código mejorará con el tiempo.
Debe asumir que el mercado es volátil, y puede ser más difícil encontrar un buen trabajo, o puede perderlo durante otra ola de despidos que reduce los costos.
Es casi seguro decir quesoftware development shouldn't be your end goalConsidéralo como un medio para llegar a un fin, ya sea en la ciencia, en los negocios, en el arte, en el periodismo o en cualquier otro lugar.
Ser un novato en la industria del desarrollo de software hoy en día se refiere a la agencia personal.Quieres escapar de esta posición, así que empiece a hacer tu trabajo de siguiente nivel lo antes posible.
The great way to prepare for it is to:
- Aprender conceptos aburridos pero que permiten que todo el mundo ignore porque son aburridos
- Encuentre un compañero o una comunidad que coincida con su tipo de energía y entusiasmo
- Use herramientas de IA para aprender y prototipar desde el primer día
- Práctica, Práctica y Practica
Lo que hará una gran diferencia es el deseo de aprender y comprender el negocio detrás de los productos que está construyendo (sus clientes, procesos, problemas y oportunidades). aprender a comunicarse con las personas, identificar sus necesidades, llenar las lagunas en el contexto, prototipar una solución, refinarla con una arquitectura mejorada y asociarse con la IA para construirla.
En algún momento (pero no te apresures), tiene sentido desarrollar una especialización en una área específica. prestar atención a las cosas que te excitan (o enojan) y tratar de profundizar en ellas.
Posteriormente
La IA no trae nuevas maneras de pensar y creatividad; expone lugares donde es necesario el pensamiento real y la creatividad, llenando fácilmente el vacío con simulaciones de ello en otras áreas.
El desarrollo de software no hará a todo el mundo feliz.Si tienes esa energía de constructor y un apetito serio para explorar y aprender, deberías ir por ello!
En cualquier caso, te deseo todo lo mejor en tu viaje. ¡Divírtete!
P.S. Si te ha gustado este post, por favor considereconnecting with me on X or LinkedIn.
XLinkedin