noticias

tío bob, el maestro de la programación mundial: la "crisis de los 35 años" es una ilusión y nosotros, los "viejos programadores", todavía estamos aquí

2024-10-03

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

bob respondela “crisis de los 35 años” del programador:

pensarla idea de que la programación es sólo para jóvenes es en realidad una ilusión, pero de hecho es una ilusión muy influyente. esta ilusión existe porque la demanda de programadores se ha disparado como un cohete durante los últimos 70 años.

de hecho, nosotros, los "viejos programadores", todavía estamos ahí, pero el número no es tan notorio.

autor |

producido por |nuevo programador》departamento editorial

imagínese si hubiera escrito código durante más de cincuenta años de su vida y siguiera programando hasta los 71 años. ¿cómo vería la era actual de programación explosiva de ia?

robert c. martin es conocido como el gurú de la programación de fama mundial. este hombre se llama ".tio bobel anciano (tío bob) es un pionero de los patrones de diseño y desarrollo ágiles. ha estado involucrado en trabajos profesionales de software desde 1970 y ha estado involucrado en trabajos relacionados durante más de 50 años. los famosos "cinco principios solid" son los cinco. los principios de diseño en el campo de la programación orientada a objetos provienen de su obra. la actitud del tío bob hacia la ia es muy ambigua: desde un punto de vista práctico, se quejó deliberadamente de que ".la ia actual es sólo un programador junior con sólo medio cerebro y nunca crecerá realmente.", porque las tareas que la ia puede realizar son bastante limitadas; pero a pesar de tener más de 60 años, todavía tiene grandes expectativas para el futuro: "para cuando en algún momento del futuro creemos máquinas que puedan pensar como humanos, las habilidades de programación quedarán obsoletas.

como gurú del desarrollo de software de renombre mundial, la obra maestra del tío bob, "código limpio", definió una vez qué es "código limpio" y describió una serie de prácticas operativas efectivas.

recientemente, se publicó la versión china del último libro del tío bob "diseño funcional: principios, patrones y prácticas". mucha gente se pregunta por qué este líder de la programación orientada a objetos "traicionó" al "campo enemigo", y el tío bob también lo mostró. su carácter siempre directo y directamente "rebatido": "en los últimos años, algunos artículos han afirmado que la programación funcional se opone a la programación orientada a objetos y que la programación orientada a objetos está desactualizada. no estaba de acuerdo con esta opinión y decidí escribir este libro.

la programación funcional es más que simplemente "programar con funciones". la programación funcional es programación sin declaraciones de asignación.

una vez que intente programar sin declaraciones de asignación, todas las demás características de la programación funcional encajarán. si desea trabajar con funciones, debe utilizar la recursividad. todas estas cosas surgen de forma natural en el momento en que decide no asignar valores. entonces, de eso se trata la programación funcional.

——"diseño funcional", robert c. martin

los comentarios anteriores provienen todos de la entrevista con el tío bob realizada por el "nuevo programador" de csdn. mantuvimos un intercambio profundo con este "fósil viviente del desarrollo ágil" y escuchamos su relato personal de cómo él, como uno de los 17 líderes de la industria del software, coeditó el "manifiesto ágil" hace 23 años (2001).detalles historicosy también aprendí los últimos puntos de vista sobre la programación de ia de este programador senior con más de 50 años de experiencia en desarrollo, lo que actualizó las opiniones pasadas de muchas personas sobre el tío bob.impresión histórica. el siguiente artículo comenzará con los recuerdos del tío bob de 1970, llevando a los lectores a la "antigua era de los programadores" cuando ni siquiera la world wide web había nacido todavía.

más de 50 años de codificación

"nuevo programador": antes de que comience la entrevista, ¿podría hacer una breve presentación?

tio bob:bien, mi nombre es bob martin. algunas personas me llaman tío bob. he sido programador durante mucho tiempo.más de cincuenta años.cuando comencé a programar, las computadoras eran lo suficientemente grandes como para llenar una habitación grande y caras, llegando a costar millones de dólares.

he trabajado con una variedad de lenguajes de programación, incluyendolenguaje ensamblador, cobol, fortran, pl/i, c, c++, pascal, java, c#esperar. a lo largo de los años, he estado involucrado en el desarrollo de una variedad de sistemas que van desde sistemas financieros hasta sistemas integrados en tiempo real y sistemas de control de procesos. por lo tanto, se puede decir que tengo una amplia experiencia en esta industria.

además, soy autor de varios libros, incluido clean code (código limpio), "el camino hacia una arquitectura limpia" (arquitectura limpia), y el libro que estamos comentando hoy se llama "diseño funcional》(diseño funcional)。

"nuevo programador"además de escribir libros, ¿qué haces en tu tiempo libre? por cierto, leo a menudo tu twitter y descubrí que alrededor del 50% de tus tweets son noticias sociales sobre las elecciones estadounidenses y trump, y el otro 50% son sobre contenido técnico, programación y tus puntos de vista sobre el código.

tio boben efecto. en años no electorales, alrededor del 90% de mis tweets son sobre software. pero como este es un año electoral, hay más contenido que cubre otros temas. cuando no estoy escribiendo libros o programando, hago muchas cosas. me gusta andar en bicicleta y viajar mucho. también soy piloto y me divierto mucho volando en mi propio avión. tengo una gran familia concuatro hijos y diez nietos.normalmente los visito tanto como puedo, por lo que mi tiempo está muy organizado.

"nuevo programador": llévenos al punto de partida de su carrera de programación y cuéntenos la historia de cuando comenzó a trabajar como programador en 1970. tenías 18 años en ese momento y los primeros lenguajes que aprendiste fueron ensamblador y cobol. ¿puedes contarnos tu experiencia cuando empezaste?

tio bob: bueno, no había muchos cursos universitarios en ese momento. no tenía ningún interés en la escuela en ese momento. en ese momento, la guerra de vietnam estaba en pleno apogeo y había muchos disturbios y disturbios en el campus. y,he aprendido mucho sobre programación de computadoras, y aprendí cobol y fortran, e incluso varios lenguajes ensambladores de computadoras. entonces, no creo que sea necesario ir a la universidad.

en cuanto a dónde empezó mi carrera de programación, todo empezó cuando mi madre me compró una pequeña computadora de plástico cuando tenía 12 años. ese juguete tiene tres chanclas y seis puertas and, y es necesario girar una pequeña palanca para operarlo. algunas bandas elásticas y palancas en el interior mueven las piezas, lo que le permite hacer cálculos simples, como contar del 0 al 7, o. contando de 7 a 7. la cuenta vuelve a 0. además, también puedes programarlo para agregar dos bits para generar un bit de suma y un bit de transporte. incluso escribí muchos programas interesantes en él: el proceso de programación consiste en agregar un pequeño tubo insertado en el pestillo, estos tubos se bloquean. la varilla entre en la ranura, cambiando así la condición del gatillo.

entonces, pasé algunas semanas aprendiendo cómo hacer funcionar esa computadora de juguete y, a través de ese proceso, me convertí en programador.soy programador desde entonces.

ese fue mi punto de partida, y luego mi papá compró muchos libros sobre computadoras y lenguajes de programación para brindarme la mayor cantidad de información posible. luego, a los 16 años, conseguí un trabajo de programación escribiendo programas para honeywell 200. el trabajo duró dos o tres semanas, cuandotodavía sólo un niñolo hice durante las vacaciones de verano y fue muy divertido.

aproximadamente dos años después, cuando tenía 18 años, conseguí un trabajo de tiempo completo escribiendo lenguaje ensamblador y cobol para ibm 360. poco después comencé a programar muchas microcomputadoras en lenguaje ensamblador. en el momento en que varian corporation producía estas computadoras, muchas empresas estaban construyendo microcomputadoras en ese momento, pero pocas tuvieron éxito, y fue digital equipment corporation (dec) la que dominó el campo. luego adquirí mucha habilidad para programar el pdp 8 y ​​el pdp 11, dispositivos que se produjeron a principios de los años 1970.

"nuevo programador": la década de 1970 fue una época realmente interesante. la world wide web aún no se había inventado y usenet acababa de inventarse.aparecer. eres uno de los primeros usuarios de usenet en el mundo y también me enteré de que un colega de la empresa te puso originalmente el apodo de "tío bob". más tarde, utilizó por error este apodo como firma en usenet y, finalmente, el nombre cambió con éxito de un apodo a su nombre real. ¿puedes compartir la historia?

tio bob: estaba trabajando en una startup llamada clear communication, que fue el comienzo de mi carrera.cuarta parada, en algún momento entre 1987 y 1989. allí, un compañero de trabajo les puso a todos un apodo, el mío era "tío bob". al principio fue un poco molesto porque siempre andaba por ahí llamándome con este apodo: "tío bob, ¿qué pasa con esto?". "tío bob, ¿qué pasa con eso?".

dejé esa empresa y me convertí en consultor, y ya nadie me llamaba "tío bob". resulta que me perdí el título, así que cometí el error de agregarlo a mi firma de correo electrónico.

yo era muy activo en usenet en ese momento, a menudo publicaba artículos en grupos de noticias como comp.object y comp.lang.c++, y la gente comenzó a notar "tío bob" en mi firma. una vez estuve en una conferencia de c++, probablemente alrededor de 1990, y alguien me señaló desde el otro lado del pasillo y dijo: "¡mira, ese es el tío bob!". pensé: ¡dios mío, cometí un error, realmente debería cambiar mi versión! firma - pero luego me di cuenta de que "uncle bob" en realidad sería una buena marca, así que la conservé.

"nuevo programador": usenet puede considerarse como la primera red social en la que participa. como muchos desarrolladores legendarios, te gusta participar en diferentes comunidades o foros. una vez te vi publicando en hash. nota: "soy robert martin. puedes hacerme preguntas. en ese momento, muchos desarrolladores te pidieron activamente que te unieras". la conversación. ahora, esa comunicación parece tener lugar principalmente en twitter.

tio bob:bien,gorjeoahora mi principal red social. también uso facebook, pero principalmente para mantenerme en contacto con familiares y amigos.

"nuevo programador": inicialmente se sintió atraído por c y c++, pero también mencionó que probó lenguajes como snobol, focal, alcom y basic por interés. ¿qué otros lenguajes de programación crees que se pueden llamar "interesantes"? especialmente entre los nuevos lenguajes de programación que han surgido en los últimos años, ¿cuáles te parecen interesantes?

tio bob: el idioma que encuentro más interesante en este momento esclojure, un idioma en el que he invertido mucho tiempo en aprender. esto me sorprendió porque clojure es en realidadceceoun dialecto de lisp que nunca pensé que aprendería.

durante los primeros treinta años de mi carrera, nunca pensé en aprender lisp porque pensaba que era un lenguaje terrible... porque, por supuesto, no lo entendía en absoluto. hasta que un día leí un libro llamado "la estructura e interpretación de los programas informáticos". el lenguaje utilizado en el libro era lisp, lo que me atrajo de inmediato. de repente, me convertí en un gran admirador de lisp. quiero encontrar unformas de utilizar lisp en tu vida diariaentonces conocí a clojure.

equivalente de clojureun dialecto lisp que puede ejecutarse en jvm (java virtual machine), fue perfecto para mí, así que comencé a aprender a codificar clojure y a divertirme haciéndolo, fue un gran pasatiempo para mí.

además, existen otros lenguajes interesantes comoadelante, un lenguaje de pila basado en expresiones postfix que es diferente a cualquier lenguaje que haya usado y muy interesante.prólogotambién es un lenguaje muy interesante. no es necesario decirle directamente a la máquina lo que es correcto, sino dejar que la máquina obtenga el resultado correcto resolviéndolo. en general, estos son lenguajes muy interesantes que todos deberían explorar porque son únicos.una vez que aprendes un idioma muy diferente, cambia toda tu perspectiva sobre el código.

cuando las máquinas piensen como humanos, las habilidades de programación quedarán obsoletas

"nuevo programador": entiendo algunos de sus comentarios anteriores sobre el código ai. en su opinión, los modelos de lenguaje grandes a veces son buenos y otras estúpidos. si bien la explicación del código de la ia ayudó un poco, aún afirmaste que no se debe confiar ciegamente en él.

tio bob: sí, programadores fácil volverse demasiado dependiente de herramientas como copilot y aceptar sin crítica el código que generan cuando lo ves, y eso es peligroso. debe ser crítico y, si bien parte de este código está bien, la mayoría de las veces debe tener mucho cuidado con el código generado por ia. entonces mi sugerencia es,tenga cuidado, úselo como una herramienta y recuerde siempre que las herramientas pueden dañarlo si se usan incorrectamente.

"nuevo programador": entonces, para los programadores que recién comienzan a aprender, ¿cómo deberían usar la ia para crecer? he escuchado dos puntos de vista completamente diferentes en las entrevistas: uno es que los programadores novatos deberían adoptar completamente la ia; el otro es que la ia destruirá a los programadores jóvenes porque estas personas no tienen la capacidad de juzgar la calidad del código de ia.

tio bob: al igual que los pilotos jóvenes no deberían usar el piloto automático.primero aprenda a volar un avión y luego use el piloto automático cuando no necesite prestar atención a los detalles. lo mismo ocurre con la ia.los programadores junior no deberían confiar en la ia al principio porque aún no saben cómo juzgar la calidad del código de salida. muchas veces, ese código no sólo es malo, sino que simplemente está mal y no funciona en absoluto.

lo que realmente me preocupa es cuando a los programadores junior se les asigna una tarea y eligen usar ia para implementarla. después de que la ia proporcione el código, estos novatos siempre pensarán: "bueno, lo dio la ia, debe estar bien" y luego perderán su trabajo. entonces mi sugerencia es,incluso deberías reducir el uso de la ia durante los primeros años de tu carrera.

"nuevo programador": hoy en día, se utilizan cada vez más códigos generados por ia en diferentes proyectos. ¿cómo se equilibra la calidad del código y la eficiencia de generación?

tio bob: mi forma de equilibrar esutilice ia para generar código primero y luego límpielo. no dejaré que introduzca código incorrecto en el proyecto. entonces, si el código generado por la ia funciona y pasa mis pruebas, regresaré y lo refactorizaré, lo limpiaré y lo mejoraré sin dudarlo. como cambiar el nombre, extraer algunas funciones, ajustar la estructura, etc.

porque no espero que la ia genere un gran código. así que lo limpiaré y lo convertiré en mi propio código. de esta manera, es mi proyecto y el código que escribí.

"nuevo programador": hace unos cinco años, alguien le preguntó "¿qué tendencias en ingeniería de software están sobrevaloradas?" y maldijo los microservicios.dentro de cinco años, ¿hay otras tendencias que estén sobrevaloradas?

tio bobla tendencia sobrevalorada en este momento es, por supuesto, la ia generativa, no hay duda. es nuevo y cualquier cosa nueva está sobrevalorada. dentro de cinco años, todo el mundo mirará hacia atrás y dirá: "probablemente lo sobreestimamos".

"nuevo programador": tu viejo conocido kent beck dijo algo cuando la ola de ia estaba aumentando. dijo que usó chatgpt a regañadientes y descubrió que el 90% de sus habilidades ahora no valían nada, mientras que el valor del 10% restante había aumentado mil veces. ¿qué tan útil puede ser la ia generativa?

tio bob: para ser honesto, no creo que la ia sea particularmente útil. en los casos más simples, puede resultar algo útil. por ejemplo, cuando estaba haciendo un trabajo de codificación muy básico, la ia me daba un código. lo miraba y pensaba que estaba bien, así que seguía trabajando en ello. luego, la ia a menudo continuará funcionando de acuerdo con el contexto, hasta que una vez que las cosas se pongan interesantes, la ia se volverá cada vez menos confiable——cuanto más complejo es algo, menos útil es

la ia puede manejar cosas pequeñas, pero no en absoluto si quiero refactorizar y mejorar el diseño. además, la ia no puede ayudar mucho a la hora de redactar exámenes.

"nuevo programador": has dicho antes que pasará mucho tiempo antes de que las escuelas de programación se vuelvan obsoletas. ¿habrá un momento específico que identifique ese momento? ¿habrá un fin para la tecnología?

tio bob: esta es una pregunta interesante, pero la consideraría desde una perspectiva de ciencia ficción.para cuando en algún momento del futuro creemos máquinas que puedan pensar como humanos, las habilidades de programación quedarán obsoletas. pero seamos honestos, ahí es cuando todas las habilidades se vuelven obsoletas.así que no estoy seguro de que sea algo que podamos esperar. si va a suceder, creo que será en un futuro muy, muy lejano. ya sabes, el cerebro humano es mucho más complejo que todo internet.

"nuevo programador": de hecho, esto me recuerda que usted también dijo que todos deberían regresar a la casa de asimov.tres leyes de la robótica, incluso si creara una raza de "esclavos robóticos". ¿cómo se entiende la inteligencia artificial general (agi) desde una perspectiva filosófica?

tio bob: sí, aunque creo que es poco probable que se logre en el corto plazo, ya contamos con tecnología genética. si alguna vez creamos máquinas conscientes para nuestra propia supervivencia, creo que algo como las tres leyes de asimov será absolutamente necesario.

"nuevo programador": sobre esta base, la ia debería sercódigo abierto¿para evitar que esto suceda? ¿los humanos necesitan ia abierta o cerrada?

tio bob: definitivamente, diferentes empresas quieren guardar sus propios secretos, y no creo que eso tenga nada de malo.el verdadero problema de la ia es el consumo de energía.consume mucha energía y seguirá aumentando a medida que la tecnología se vuelva más sofisticada. esto hace que su coste sea bastante elevado. así que tenemos que ver hasta qué punto puede desarrollarse la ia hoy en día y ver qué tan bien pueden funcionar estos grandes modelos de lenguaje. sin embargo, consumen mucha energía, al igual que las centrales nucleares.

el "espíritu artesano" de los programadores

"nuevo programador": alejémonos de la ia y hablemos de temas de persona a persona.

alguien preguntó una vez: "¿quién es tu mentor en la vida?" y tu respuesta fue: "los libros son mi mentor". a través de los libros conociste a figuras destacadas como martin fowler y kent beck, e incluso trabajaste con estos dos más adelante. entonces, como ese añouna de las 17 personas que crearon el manifiesto ágil, ¿puedes revelarnos cómo es vuestra relación?

tio bob: en el pasado, solíamos tener muchas reuniones relacionadas con el software, pero ahora hay muchas menos reuniones de este tipo. asisto a varios tipos de conferencias, como conferencias sobre lenguaje c, conferencias sobre patrones de diseño y algunas conferencias generales sobre desarrollo de software. a través de estas actividades, conocí a mucha gente.

por ejemplo, me conocí en una conferencia sobre patrones de diseño.kent beck, conocido en una de las primeras conferencias de programación extremamartín fowler. conocí a la mayoría de estas personas cara a cara. fueron tanto mis socios como mis mentores. aprendí mucho de ellos. también son mis compañeros y aprendemos y progresamos juntos. mucho de lo que aprendí provino de libros de programación de las décadas de 1960 y 1970, como the art of computer programming de donald knuth, y los libros de esa época fueron fuentes de información muy importantes para mí.

entonces, cuando tenía unos 30 años de carrera, comencé a ir a conferencias y a conocer gente cara a cara, y fue en este entorno que fundamosreunión ágil. la mayoría de las personas que asistieron a conferencias agile las conocía antes, ya sea por correspondencia o por haberme conocido en conferencias.

"nuevo programador": a menudo podemos ver un punto de vista, es decir, "¿es realmente aplicable el desarrollo ágil?"

hubo un período en el pasado en el que muchos desarrolladores buscaban una entrega rápida e ignoraban la calidad del software. esto puede ser una mala interpretación de lo ágil.

tio bob: de hecho, esto es un malentendido sobre ágil. ágil no se trata de ser más rápido, se trata de comprender dónde se encuentra. realiza un desarrollo ágil para saber exactamente cuánto progreso está logrando, qué tan rápido lo está haciendo y si está cumpliendo con sus plazos. en otras palabras, agile es una excelente manera de ayudarlo a comprender en qué problemas se encuentra. garantiza que no se sorprenda cuando los plazos se retrasan y les da a todos una idea clara del progreso porque es posible que no seamos tan rápidos como pensábamos.

mucha gente cree erróneamente que ágil es un método rápido y algunas personas también lo comercializan como un método rápido, pero esto siempre es un malentendido.la agilidad no es una forma de hacerte más rápido, es una forma de hacerte saber qué tan rápido eres.entonces, agile no es obsoleto; no es una tecnología obsoleta. si desea conocer el progreso real y la fecha de finalización de su proyecto, agile es una excelente manera de hacerlo.

"nuevo programador": uno de sus tweets me impactó muy profundamente, es decir, “agility fue fundada originalmente porreveladoriniciado, perogerente de proyectointervenir en las primeras etapas del movimiento ágil destruyó la relación de colaboración original. “¿puedes contarme la historia?

tio bob: de hecho, el movimiento ágil fue iniciado originalmente por un grupo deprogramadoriniciado. diecisiete participantes se reunieron en snowbird resort para crear el manifiesto ágil. todos somos programadores, o al menos tenemos una sólida formación técnica. este movimiento no comenzó desde una perspectiva de gestión de proyectos, pero uno de los fundadores, ken schwaber, decidió iniciar un curso llamado certificación.maestro de scrum(scrum master)". este curso está diseñado para capacitar a personas que quieran convertirse en scrum masters y enseñarles cómo ayudar al equipo a utilizarmétodo scrum——este es un modelo de desarrollo ágil.

los directores de proyectos han mostrado gran interés y se han inscrito en dichos cursos. dado que la mayoría de los participantes eran gerentes de proyectos en lugar de programadores, esto resultó en el originalel movimiento iniciado por los desarrolladores se transformó gradualmente en un movimiento liderado por los directores de proyectos.los programadores estaban descontentos porque sentían que estaban siendo excluidos de esta iniciativa.

para resolver este problema, un grupo de nosotros comenzamosmovimiento de artesanía de software(software craftsmanship) y lanzó el craftsmanship manifesto en un intento de volver a conectar a los gerentes de proyectos y desarrolladores. sin embargo, esto no logró resultados significativos.

en última instancia, separamos un "movimiento agile oficial" centrado en la gestión de proyectos y un movimiento agile real liderado por desarrolladores. este último sigue comprometido a trabajar de manera concisa y ordenada y a aclarar su posición y dirección de desarrollo.

"nuevo programador": entonces, ¿cuál es la importancia del rol de scrum master? ¿de qué manera es importante este papel? ¿cómo cultivamos un excelente scrum master?

tio bob: el scrum master fue diseñado originalmente para ser un miembro del equipo responsable de recordar a otros miembros los compromisos asumidos al utilizar métodos scrum o agile. las responsabilidades incluyen controles semanales del progreso del equipo, como confirmar que el código de prueba se haya escrito según lo planeado y que se hayan seguido métodos de estimación predeterminados. este rol se rota dentro del equipo, generalmente entre diferentes miembros. en equipos maduros, después de varias semanas de práctica, no es necesario que un scrum master dedicado los supervise porque los miembros del equipo ya son capaces de ejecutar conscientemente el proceso establecido.sin embargo, con la participación del director de proyecto, este rol evolucionó gradualmente hasta convertirse en una función de gestión de proyectos, lo que está lejos de la intención original del scrum master.como resultado, el papel del scrum master hoy ha cambiado significativamente.

"nuevo programador": acabas de mencionar la historia de la artesanía del software, lo que me recordó que tu firma en twitter también dice "artesanía" (artesanía), esta es una palabra muy antigua, hoy debería traducirse como "espíritu artesano”。

¿cómo debe entenderse esta palabra? en la industria actual de rápido crecimiento, ¿realmente no hay tiempo para centrarse en la calidad? a medida que avanza la ia, la entrega de software parece ser cada vez más rápida. creo que la ia ayudará, ¿verdad?

tio bob: estos grandes modelos de lenguaje son herramientas realmente interesantes y creo que serán útiles para los programadores. pero no reemplazarán a los programadores y no harán toda la codificación. no son buenos escribiendo código, pero pueden hacer algunas sugerencias interesantes. entonces creoserán útiles, pero no lo suficiente como para que ya no necesitemos programadores.

en cuanto a la artesanía, es una actitud, una actitud ante el trabajo. la mejor manera de explicarlo es la siguiente: cuando llegas a casa después de un largo día de trabajo y te miras en el espejo, puedes decirte a ti mismo: "hoy hice un gran trabajo y estoy orgulloso de mi trabajo".la forma en que se comporta un artesano.los artesanos están satisfechos con la calidad de su trabajo. son diligentes y disciplinados para producir un trabajo de alta calidad. este es el núcleo de la artesanía en software.

por supuesto, podemos discutir muchas tecnologías y métodos, como el desarrollo basado en pruebas (tdd), el diseño simple, los principios solid, etc. hay muchas tecnologías y conceptos. pero la idea fundamental es que al final de cada día puedas decirte a ti mismo: "hoy hice un gran trabajo". desafortunadamente, muchos programadores regresan a casa, se miran en el espejo y sienten que necesitan darse un baño. porque sienten que tuvieron un mal día. escribieron un montón de códigos incorrectos solo para cumplir con una fecha límite y necesitan eliminar esos malos sentimientos. de eso se trata la artesanía: volver a casa sabiendo que has hecho un buen trabajo y sintiéndote orgulloso de tu trabajo.

"nuevo programador": su libro "la forma de limpiar el código" (código limpio) también refleja el principio de artesanía. ¿el llamado "tao" del código limpio se centra más en la implementación de la lógica empresarial que en la programación del sistema? ¿o no hay diferencia entre los dos?

tio bobel código limpio es un conjunto de conceptos y técnicas que te ayudan a trabajar como un artesano para que puedas volver a casa sintiéndote orgulloso de tu trabajo.no importa si está implementando lógica empresarial o programando sistemas. es solo un conjunto de técnicas y conceptos que te ayudan a hacer bien tu trabajo y te hacen sentir satisfecho.

"nuevo programador": he descubierto antes que, ya sea en la comunidad de desarrolladores de china o de estados unidos, mucha gente piensa que un código limpio significa muchoabstracto. entonces, ¿cómo evitamos escribir código demasiado diseñado y demasiado abstracto?

tio bob: sí, este es un fenómeno muy extraño, porque mi libro en sí no recomienda una abstracción excesiva ni recomienda mucha abstracción. lo que sugiere el libro es,utilice abstracciones con moderación y de forma adecuada, pero no se recomienda diseñar demasiado. aparentemente, hay algunos programadores que creen que cualquier forma deindirectoson todos malos, piensan que la única forma de escribir un buen código es intentardirecto. no estoy de acuerdo con este punto de vista, creo que una cantidad moderada de indirección y abstracción puede ser útil, pero hay que tener mucho cuidado porque la abstracción tiene un costo. por lo tanto, utilice la abstracción cuando ayude a resolver un problema, pero tenga en cuenta su coste y utilícela con moderación.

"nuevo programador": presumiblemente esta es la razón por la que dijiste hace algún tiempo que lanzarías una nueva versión de "code cleanliness". ¿puedo entenderlo como una limpieza de la fuente? pero ya que decidiste rediseñar y reescribir completamente el libro, ¿por qué no darle un nuevo nombre?

tio bob: el título del libro lo decidió el editor. principalmente quería reiterar el concepto central de "código limpio", pero utilicé diferentes expresiones y desarrollé el tema desde diferentes ángulos.

el libro original fue escrito hace 16 o 17 años para la audiencia de ese momento. y ahora estoy escribiendo este libro para los lectores de hoy. lo intentaráresuelva los problemas más comunes hoy. usaría un lenguaje diferente y adoptaría enfoques diferentes, haciéndolo menos directivo y más informativo, tratando de transmitir el mismo punto de diferentes maneras. el mensaje es el mismo, sólo que expresado de manera diferente. creo que estos dos libros serán, en última instancia, complementarios y los lectores deberían leerlos ambos.

la ia es un programador junior con solo medio cerebro

y nunca crece realmente

"nuevo programador": hablemos de su nuevo libro “diseño funcional”. en primer lugar, ¿por qué quisiste escribir este libro?

tio bobla programación funcional ha ganado importancia durante la última década. aunque la gente empezó a prestar atención a la programación funcional alrededor de 2005, en realidad es un concepto más antiguo, ya que existe como lenguaje matemático desde 1936 y uno de los primeros lenguajes de programación fue funcional.

en los primeros días, los lenguajes funcionales eran costosos de ejecutar, lentos y requerían grandes cantidades de memoria. pero ahora, los avances en la potencia informática y los recursos de memoria han hecho que el costo de la programación funcional sea casi insignificante. esto trae las ventajas de la programación funcional, especialmente cuando se trata de programación multiproceso. la programación funcional le permite escribir código multiproceso sin preocuparse por las condiciones de carrera o las actualizaciones simultáneas. esto se debe a que la programación funcional no tiene declaraciones de asignación y no cambia el estado de las variables.

mientras aprendía clojure, descubrí que era una forma divertida de codificar y resolver problemas. creo que debería combinarse con otras herramientas como la programación orientada a objetos y la programación estructurada.sin embargo, en los últimos años, algunos artículos han afirmado que la programación funcional se opone a la programación orientada a objetos y que la programación orientada a objetos está desactualizada. no estaba de acuerdo con esta opinión y decidí escribir este libro.

portada del libro "diseño funcional: principios, patrones y práctica"

este libro analiza cómo la programación funcional, la programación orientada a objetos y la programación estructurada trabajan juntas para construir mejores sistemas. comienza con conceptos básicos, desarrolla gradualmente principios y patrones de diseño y finalmente los combina en una pequeña aplicación completa. espero que los lectores entiendanla programación funcional no existe de forma aislada, que funciona con todo lo que hemos aprendido durante los últimos 50 años.

"nuevo programador": también he recopilado muchas preguntas sobre el nuevo libro de la comunidad de desarrolladores de csdn, y la mayoría de la gente siente mucha curiosidad por saber por qué lo elegiste.clojure¿en lugar de scala para escribir el código en el libro? ¿es porque desea utilizar un lenguaje más funcional que no admita clases ni herencia, para demostrar que sus principios solid también se aplican en el diseño funcional?

tio bob: parte de la razónen efecto. aunque clojure no es un lenguaje funcional "puro", es muy propicio para escribir programas funcionales. sin embargo, hay otra razón, quizás más importante, por la que elegí clojure, y esclojure es muy simple.

lo que quiero transmitir en este libro es la idea de programación funcional, no enseñar un lenguaje de programación funcional complejo. especialmente no quiero enseñar un idioma con gramática compleja. la sintaxis de clojure es muy simple y casi no tiene una sintaxis compleja. aprender clojure es fácil y puedes dominarlo leyendo el código de clojure.

entonces, cuando muestro el código en el libro, no entro en detalles sobre cómo funciona clojure, sino que explico algunos conceptos básicos y dejo que el lector descubra la mayor parte del resto. también recomiendo algunos otros documentos para que los lectores interesados ​​los consulten. pero en general, clojure es muy fácil de entender, así quepara aquellos lectores que no saben mucho sobre clojure o programación funcional, pueden centrarse más en el concepto de programación funcional sin preocuparse por el lenguaje en sí.

"nuevo programador": recuerdo que una vez dijiste en twitter que si alguien quiere ser mencionado en tu próximo libro, puede enviar el código que crea que es el mejor. ¿esto sucede a menudo? ¿cuántas personas suelen enviar código? ¿pueden también presentarse los desarrolladores chinos?

tio bobsí, tuiteé eso y obtuve bastantes respuestas. algunas personas envían fragmentos de código a través de enlaces de github o directamente. probablemente usaré parte de este código en un próximo libro.si los desarrolladores chinos quieren enviar un código que consideren muy interesante, estaré encantado de considerarlo.pero no puedo prometer usar el código de todos, porque la extensión de un libro es limitada y no puedo incluir el código de todos en él.

"nuevo programador": ¿tiene alguna idea innovadora para libros de texto digitales y plataformas de aprendizaje en línea? la gente parece estar menos dispuesta a leer libros en papel hoy en día. ¿cómo revolucionarán estos nuevos formatos la forma en que se enseña y aprende la programación? ¿cómo planeas enseñar programación a la próxima generación?

tio bob:en efecto,ahora estamos en la era digital, donde la capacidad de atención se ha reducido a menos de 20 minutos. pero si realmente quieres aprender algo, debes reducir el ritmo y concentrarte en tus estudios. varios de mis libros recientes han venido convideocontenido, los lectores pueden ver demostraciones en vivo de las sesiones de programación a través de la url del libro. esta combinación de texto y vídeo es muy efectiva.

además, hay una manera muy interesante esconferencia en línea. por ejemplo, después de leer el material impreso, el libro le pedirá que visite una url específica para ver la conferencia correspondiente. creo que estos métodos son muy útiles.

no creo que los días de los libros en papel hayan terminado. pueden convertirse en libros electrónicos, pdf o versiones para lectores en línea, pero los libros de texto no desaparecerán. el texto es un medio con una densidad de información muy alta, más denso que los videos o las conferencias, y también es más conveniente para controlar el progreso del aprendizaje. por lo tanto, creo que una combinación de diversos formatos de aprendizaje puede ser más eficaz, utilizando tanto texto como vídeo.

"nuevo programador": su libro está destinado a lectores de todos los niveles de experiencia, desde principiantes hasta profesionales experimentados. sin duda, esto presenta diferentes desafíos cuando se trata de equilibrar la profundidad y la amplitud del contenido.

tio bob: mi libro está realmente dirigido a un grupo diverso de personas, tanto programadores novatos como profesionales. la clave es proporcionar valor a ambos tipos de lectores sin hacerlo demasiado difícil de digerir para uno ni simplificar demasiado para el otro.

cuando enseño y escribo, asumo que mis oyentes o lectores son tan inteligentes como yo y pueden entender mi contenido. puede que les cueste un poco de esfuerzo, pero estoy seguro de que lo entenderán. no ajusto el contenido según mi juicio sobre la capacidad del lector. simplemente entrego mi mensaje directamente, como si le hablara a un compañero.

quizás tenga más experiencia, quizás haya pasado por más y haya cometido más errores. para que pueda compartir mis experiencias e historias. pero no lo ralentizaré ni lo simplificaré demasiado.

"nuevo programador": ¿cómo ha cambiado la forma en que enseña programación a lo largo de los años? ¿qué nuevos enfoques y lecciones ha adoptado para mantenerse al día con el panorama tecnológico en evolución?

tio bob: al principio, solía usartransparenciasy mostrar el contenido del curso a través de un proyector, generalmente preparando una gran pila de películas para mostrar el contenido página por página. con el tiempo, ahora usoipades muy divertido hacer una presentación, conectarla a un proyector y dibujar en la pantalla del ipad con el apple pencil, y todo se mostrará en la pantalla grande en tiempo real.

durante la pandemia de covid-19, comenzamos a enseñar a través de herramientas de capacitación remota como zoom. ahora, la mayor parte de mi enseñanza se realiza de forma remota. todavía uso presentaciones de diapositivas y dibujos en pantalla, y esos métodos todavía funcionan. la única diferencia es que en la enseñanza remota no puedo ver directamente la reacción de la audiencia, lo cual es una experiencia menor.la mitad de la diversión

"nuevo programador": otro cambio provocado por la epidemia es que a muchos programadores les preocupa ser reemplazados por la ia. vi una declaración antes de que aprender diseño funcional puede ayudarlos a conservar sus trabajos, ¿puede dar más detalles sobre eso?

tio bob: el diseño funcional y los conceptos de los libros de diseño funcional en realidad están diseñados para ayudarle a convertirse en un programador más maduro.agregue nuevas herramientas a su “caja de herramientas”. la programación funcional es una buena herramienta, la programación orientada a objetos es una buena herramienta y la programación estructurada también es una buena herramienta. estas deberían estar en su caja de herramientas. el desarrollo basado en pruebas es una gran herramienta y es mejor tenerla a mano. los principios sólidos también son buenos y definitivamente deberían estar en tu caja de herramientas. entonces, el propósito de este libro es ampliar la caja de herramientas del desarrollador, lo que definitivamente lo ayudará a conservar su trabajo.pero no creo que tengas que preocuparte demasiado por ser reemplazado por la ia. es poco probable que esto suceda durante mi vida, y puede que no suceda durante tu vida, o puede que nunca suceda. tengo la sensación de que no veremos máquinas capaces de tener una inteligencia a nivel humano.

"nuevo programador": en cuanto al diseño funcional y la programación orientada a objetos, creo que mucha gente te habrá preguntado cuál es mejor. pero lo que quiero preguntar es, ¿crees que¿en cuál es mejor la ia actual?por ejemplo, ¿la programación funcional es más adecuada para la generación de código de ia? no tiene estado, se puede generar una función cuando se usa y cada función también puede ser generada y verificada automáticamente por ia. entonces, si la ia es mejor en el diseño funcional, ¿los programadores que solo conocen la programación funcional enfrentarán una crisis mayor?

tio bobno importa, porque la ia no puede hacer nada., y no es mejor para generar código funcional que el código estructurado o orientado a objetos.puedes pensar en la ia como unaprogramadores jóvenes con medio cerebro y que nunca crecen realmente. le dará algunas sugerencias, la mayoría de las cuales no son muy buenas, y algunas de ellas pueden estar bien, pero deben cambiarse, porque el código escrito por ai siempre es confuso.

la ia es lo que es y puede ser útil, pero no debes ajustar la dirección de tu carrera para adaptarla. la ia es una herramienta y puedes aprender a usarla, pero no debes cambiar tus planes profesionales solo por una determinada herramienta de ia.

qué hacer si no sabes qué hacer ante la programación de ia

entonces apágalo

"nuevo programador": si una persona nueva se le acercara y le preguntara: "¿qué idioma debería elegir como mi primer lenguaje de programación?", ¿cómo respondería normalmente?

tio bob: bueno, puedes elegir java. dicho esto, c# también es un lenguaje muy bueno. clojure también es bueno. el lenguaje c también está disponible. c++ es un poco difícil y complejo, pero también es una opción. el lenguaje go también es muy bueno, es un buen lenguaje...

en realidad, cuál elijas no es tan importante. programar es programar, no importa con qué lenguaje empieces. lo más importante es que debes aprender el siguiente idioma. no te quedes con un solo idioma.aprende uno, pasa unos meses hasta que domines un poco, luego aprende otro, y así sucesivamente, aprendiendo un nuevo idioma cada año. piensa que aprender un idioma es divertido y encuentra un idioma que aún no hayas aprendido. es posible que nunca lo uses en el trabajo y que nunca lo vuelvas a usar, pero adquiere el hábito de aprender un nuevo idioma cada uno o dos años.no importa dónde empieces, lo que importa es que sigas aprendiendo.

"nuevo programador": ¿recomendaría a programadores junior participar en proyectos de código abierto? ¿en qué proyectos impresionantes de código abierto has estado involucrado? ¿puedes compartir la historia?

tio bob: mi hijo y yo empezamos un proyecto hace 20 años y todavía continúa y es un gran proyecto. aunque yo ya no estoy involucrado, muchos otros continúan.

si eres un programador junior o un programador joven y quieres aprender algunas ideas nuevas, te recomiendo unirte a un proyecto de código abierto. intente enviar algunas solicitudes de extracción y contribuya con lo que pueda. en primer lugar, esta es una excelente manera de ayudar a los demás y, en segundo lugar, una gran oportunidad de aprendizaje. de todos modos, tienes razón, recomiendo encarecidamente a las personas que se involucren en proyectos de código abierto, es una excelente manera de expandir su carrera.

"nuevo programador": ¿conoce la “crisis del 35”? muchos programadores se enfrentan a dos caminos una vez que alcanzan cierta edad: pasar a la gestión o jubilarse.

tio bob: este es un problema real dada la preferencia de la industria tecnológica por los jóvenes. de hecho, un desarrollador me hizo una pregunta similar y la recuerdo claramente. sus palabras exactas fueron: "tío bob, ¿por qué sigues programando a los 70 años?". tiene razón, ahora tengo 71 años y sigo escribiendo código.

esta idea de que la programación es sólo para los jóvenes es en realidad una ilusión, pero de hecho es una ilusión muy influyente. esta ilusión existe porque la demanda de programadores se ha disparado como un cohete durante los últimos 70 años.

piénselo de esta manera: cada cinco años, el número de programadores en el mundo se duplica. esto significa que tenemos que duplicar el número de programadores cada cinco años, lo que significa que la mitad de los programadores del mundo tienen menos de cinco años de experiencia y tres cuartas partes de los programadores tienen menos de diez años de experiencia. en otras palabras, tres cuartas partes de los programadores del mundo tienen menos de 35 años. entonces, cuando miras a tu alrededor, lo único que ves son jóvenes. quizás te preguntes, ¿dónde están todos esos viejos programadores?de hecho, todos seguimos ahí, aunque no tanto en número.

esto crea la ilusión de que la programación sólo es adecuada para los jóvenes, pero en realidad esto es completamente erróneo. para convertirse en un programador verdaderamente poderoso, se necesita mucho tiempo para acumular. puede que algunos programadores experimentados sientan que es fantástico tener diez años de experiencia. eso es realmente bueno, pero en otros cinco años podrá convertirse en un mejor programador.

entonces, si realmente te gusta escribir código, crees que este es tu favorito y quieres seguir haciéndolo, no te rindas. no es necesario ser directivo. si hay gente que sabe gestionar bien, déjeles que lo hagan. si quieres seguir escribiendo código, sigue así. no es necesario cambiar de carrera ni jubilarse anticipadamente. no significa que tu cerebro no funcione bien cuando llegues a los 36 años. de hecho, ahora hay mucha gente nueva ingresando a esta industria, y no solo los jóvenes, sino también personas de todas las edades están aprendiendo a programar.eso no significa que no tengas ninguna posibilidad.

"nuevo programador": esto me recuerda que muchos programadores ahora dudan de sí mismos cuando se enfrentan a la ia. pero, de hecho, la duda no es nada nuevo y muchos programadores antiguos habrían tenido el mismo problema en épocas anteriores. ¿alguna vez has tenido sentimientos de duda antes?

tio bob: cuando comencé a programar, todavía era un niño pequeño y siempre sentí que podía hacerme un nombre. nunca tuve ninguna duda en este momento.

en cambio, comencé a cometer errores, a que me despidieran y a experimentar otros contratiempos. dudar de uno mismo en este momento es realmente algo bueno.en realidad, una cantidad moderada de dudas es bastante saludable. porque después de un tiempo aprendes a afrontarlo.piensas: "está bien, sé cómo evitar estos errores. sé que no soy perfecto, pero mientras me concentre, tenga cuidado y hable con los demás, debería poder solucionar estos problemas lentamente". superará esas dudas. en realidad, pasar por un período de dudas no es necesariamente algo malo. te permite crecer y hacerte más fuerte.

"nuevo programador":finalmente, ¿puedes dar algún consejo a los desarrolladores actuales? especialmente aquellos programadores que se sienten confundidos o perdidos cuando se trata de programación de ia.

tio bobsi no sabe qué hacer cuando se enfrenta a la programación de ia, apague la ia. simplemente ignóralo.dedique otro mes a escribir código usted mismo y luego active la ia. tal vez entonces mire su código y vea lo que quiere hacer, y luego podrá dar mejores sugerencias.

por ejemplo, imagina que eres un novato que está aprendiendo a conducir. nunca has tocado el volante y quieres utilizar la conducción automática nada más empezar. tan pronto como presione el piloto automático, el automóvil comenzará a moverse. es posible que se muera de miedo y piense: "primero tengo que apagar esto. déjame tener algo de experiencia". hasta que aprendas a conducir, prueba el piloto automático nuevamente. piensa: "oh, ahora entiendo cómo funciona esto". entonces podrás aprovecharlo mejor.lo mismo ocurre con la ia. puede que no sea fácil al principio, pero a medida que avance, se volverá cada vez más competente.