Una conversación con Jon Skeet: El Chuck Norris de la programación, en el podcast del Pato Amarillo

Publicado: Última actualización:

¿Sabías que cuando el código de Jon Skeet falla al compilar, el compilador se disculpa? ¿Qué hay del hecho de que cuando Jon hace una búsqueda en Google, el único resultado es "Vuelvo enseguida"? Fuente: Desbordamiento de la pila

Para los que no lo sepan, Jon Skeet es un ingeniero de software senior de Google en Londres, Reino Unido. Aunque algunas de las afirmaciones más descabelladas sobre él aún deben ser verificadas, lo que es definitivamente cierto es que es el único usuario de Stack Overflow con una reputación superior a 1.000.000.

Desde 1998, este tipo ha contribuido con más de 34.000 respuestas al sitio, ¡generando más de 230.000.000 de visitas! Entonces, ¿qué le preguntas al tipo que ya ha respondido todas las preguntas imaginables?

Descúbrelo escuchando nuestra conversación con Jon Skeet

Marcin Kraszewski se sentó con Jon y le preguntó al hombre algo nuevo. Resulta que tiene más respuestas que dar, incluyendo algunas que no has escuchado en ningún otro lugar.

¿Has oído la historia de cómo Jon se metió en el desarrollo de su software construyendo un juego de ordenador? ¿Qué hay del problema más difícil que se le encargó a Jon como ingeniero?

Nuestra conversación cubre todo esto, así como los mayores cambios en la industria del software en la última década, lo que los desarrolladores usaban antes de Stack Overflow, cuánto tiempo más planea Jon contribuir a Stack Overflow, una comparación de C# y Java, y las conferencias favoritas de Jon.

Esta es una oportunidad única en la vida de participar en una exploración casual del viaje personal de uno de los nombres más famosos del software.

Puedes seguir a Jon aquí:

Pero primero, escucha nuestra conversación con Jon en el Podcast del Pato Amarillo

A continuación encontrará la transcripción escrita de nuestra conversación.

MARCIN: Ok todos bienvenidos al Podcast del Pato Amarillo Tengo un invitado muy especial conmigo hoy. Voy a hablar con Jon Skeet, si no saben quién es Jon Skeet, bueno, es uno de los principales contribuyentes a Stack Overflow, incluso podría ser el principal contribuyente a Stack Overflow, lo cual es, si no conocen Stack Overflow, es increíble. Es básicamente un sitio web donde puedes obtener respuestas a casi cualquier pregunta no sólo relacionada con el desarrollo de software y la tecnología, sino también como si supieras que hay Stack Exchange, que es el tipo de sitio principal de Stack Exchange y puedes obtener respuestas a preguntas sobre cualquier cosa, desde la comedia de improvisación hasta la ciencia astronomía. Así que Jon bienvenido.

JON: Muchas gracias. Es un placer estar aquí.

MARCIN: Gracias por acompañarme en el podcast del Pato Amarillo. Tengo un montón de cosas que quiero preguntarte. Pero primero, quiero, por supuesto, llegar a la pregunta número uno que tengo en mente. Investigué un poco sobre su actividad en StackOverflow, que es mundialmente conocida y muy extensa. Y mi pregunta es que respondiste a tu primera pregunta sobre Stack Overflow el 26 de septiembre de 2008, a las 12:11 según la información que pude obtener. Háblame de las circunstancias que rodearon esa primera respuesta y sabemos cómo lo hiciste. ¿Cómo empezaste a usar el Stack Overflow. ¿Cómo obtuviste esa respuesta. ¿Cómo llegaste a responder a esa respuesta. Sabes dónde comenzó todo, bien.

JON: Así que fue realmente un ejercicio de narcisismo hasta cierto punto. La primera vez que escuché sobre Stack Overflow fue en el blog de Sara Chip. Ella había escrito una reseña de la primera edición de C# en profundidad en 2008, que parece que fue hace mucho tiempo, y leí su reseña y luego leí algunas de sus otras publicaciones en el blog y mencionaron el Desbordamiento de la Pila. Así que pensé en echar un vistazo y busqué en Stack Overflow preguntas para responder. Así que no tenía mucha idea de lo que el sitio era realmente y busqué preguntas sobre C# en profundidad, en particular si había alguna y había algunas menciones aquí o allá y había preguntas sobre C# y pensé bien que puedo responder esto así que voy a responder y más o menos, todo fue a partir de ahí. Anteriormente había estado escribiendo un montón de grupos de noticias tanto de C# como de Java durante la década anterior, así que esto parecía ser un paso en la evolución de esos grupos de noticias. Nunca antes me había gustado el software de foros de base HTML. Por varias razones, pero nada era tan útil como los grupos de noticias para mí, mientras que el desbordamiento de la pila cambia completamente eso.

MARCIN: Impresionante y todos estamos muy agradecidos por su contribución. Pienso en más de 35.000 preguntas que ha contestado, lo cual es una increíble contribución a la comunidad. Así que obviamente todos estamos muy agradecidos por eso. Y creo que es muy interesante que hayas empezado como, en cierto sentido como dijiste, como un usuario general que acaba de descubrir su sitio web y decidió responder a la pregunta "¿puedes ir a la siguiente?" que lo que te hizo responder, ya sabes, la segunda, la tercera, la cuarta y los cientos de preguntas más tarde, ¿cuándo sentiste que esto es realmente algo que quieres hacer? Tal vez un enfoque específico en el desbordamiento de la pila, pero en general. ¿Cuándo sentiste este tipo de pasión por responder a muchas de estas preguntas como si tuvieras esta energía?

JONEso empezó hace 10 años, cuando todavía estaba en la universidad, respondiendo preguntas sobre Java en grupos de noticias, mucho antes de que existiera el C# y entrando en discusiones que no son tan relevantes para el desbordamiento de la pila, pero publiqué muchas cosas en los grupos de noticias de Java, y muchas de ellas eran para ayudar a la gente, y esto no es puramente altruista. Disfruto ayudando a la gente porque me mejora como programador, definitivamente me mejora como comunicador, lo cual siento que es increíblemente importante en la ingeniería de software, y luego está el efecto de no sólo ayudar a la persona que hizo la pregunta, sino que espero ayudar a la gente más tarde, que es para lo que Stack Overflow está realmente optimizado. Y creo que algunos de los problemas en los que la gente hace malas preguntas es que están pensando en su necesidad inmediata en lugar de pensar en cómo puedo hacer una pregunta que me ayude a mí pero que también ayude a la gente que venga más tarde. Y si empiezas desde esa perspectiva, la comunidad de Stack Overflow está construida en torno a eso y el número de impresiones que pueden obtenerse con buenas preguntas es enorme, así que puedes ayudar a toda la comunidad mundial de programadores, lo que creo que es increíble.

MARCIN: Definitivamente. Así que es una gran idea que era, ya sabes, creo que era algo que realmente necesitaba ser creado. Sabes que la gente estaba lista para empezar a compartir sus conocimientos y el intercambio de pilas y el desbordamiento de pilas se creó realmente justo a tiempo, ya que dijiste que había otras formas de compartir el conocimiento. Pero creo que esta es tal vez la más accesible para cualquier usuario que quiera obtener respuestas a sus preguntas. Es una forma muy efectiva y creo que también está muy bien moderada, al menos para los seguidores locales.

Sí. Que el grado de moderación es definitivamente un punto delicado con muchos usuarios, no sólo unos pocos que han tratado de hacer la pregunta y la han hecho mal no dando suficientes detalles o dando demasiados detalles o. Hay muchas maneras diferentes de hacer una pregunta mal hecha y creo que la moderación es uno de los puntos más importantes del sitio que trata de mantener la calidad del sitio y de mantenerlo lo más útil posible, pero es definitivamente un punto delicado y creo que hay que trabajar en términos de comunicación de los objetivos del sitio para que todo el mundo pueda tirar en la misma dirección. No es que nadie. Bueno, estoy seguro de que hay algunas personas que o bien hacen malas preguntas deliberadamente o se moderan de forma desagradable sólo por diversión. Siempre habrá unos cuantos idiotas, pero tiendo a asumir que la mayoría de la gente no son idiotas. Están siendo amables, están dando su tiempo y quieren un sitio de alta calidad.

Y si podemos asegurarnos de que todo el mundo está alineado, entonces eso nos llevará a una mejor experiencia para todos. Así que todavía queda un poco de trabajo por hacer en términos de comunicación y todo tipo de cosas que pueden ser muy difíciles porque si estás atascado en un problema inmediatamente y no te has registrado o hecho una pregunta o algo en Stack Overflow antes de tu primera tentación es que ves un muro de texto diciendo que este es el tipo de pregunta que debes hacer y cómo debes abordar las cosas y crees que no me importa que quiera hacer mi pregunta ahora mismo, mientras que si te tomas cinco 10 minutos, incluso media hora, para navegar por la página web, navega por los diversos recursos de ayuda que he escrito en el blog sobre esto es lo que busco en una pregunta que pretende ayudar a la gente a hacer preguntas, pero puedo entender la frustración y por qué la gente se salta todo eso y lo dice bien. Déjame hacer mi pregunta ahora. Asumiré que sé lo que estoy haciendo y es muy desafortunado que eso les dé sobre la experiencia y si la gente no está leyendo la ayuda que se les ha dado entonces ninguna mejora en esa ayuda puede realmente superar el hecho de que no la están leyendo. Así que es difícil

MARCIN: Lo interesante del Desbordamiento de la Pila parece ser que al menos sé que ahora mismo que el Desbordamiento de la Pila todos los datos están disponibles. Como si pudieras descargar todo el conjunto de datos y pensaras que eso es importante.

JON: Absolutamente. Sí, y eso ha sido un objetivo desde el primer día.

MARCIN: Crees que es una parte importante del hecho de que Stack Overflow siga siendo popular.

No sé si es definitivamente una característica. Es encantador que, por ejemplo, creo que todas las preguntas del Desbordamiento de la Pila han sido importadas a Google BigQuery... ...lo que significa que la gente puede hacer consultas sobre todo tipo de datos y hay un Desbordamiento de la Pila. Las herramientas de análisis de datos están disponibles de esa manera también y así hay todo tipo de minería de datos que se puede hacer en las preguntas de la Pila y varios científicos de datos han hecho exactamente eso. Así que es muy bueno en ese frente. También crea una especie de sentimiento de confianza de que Stack Overflow no es dueño de sus contribuciones. Todo el mundo lo hace, todos tienen la licencia apropiada, así que incluso si Stack Overflow como empresa se hundiera, la información no se perdería, pero no sé muy bien cuán importante es, creo que varía en importancia dependiendo de a quién se le pregunte, pero la importancia para la comunidad científica de datos. Sospecho que no ser un miembro de esa comunidad, en particular, sospecho que ha sido un verdadero tesoro escondido.

MARCIN: Quiero decir que he oído hablar de algunos proyectos en los que intentan usar el Stack Overflow para entrenar a un algoritmo de aprendizaje de máquinas para que les guste realmente escribir software o al menos que conozcan el software de depuración o que sea un uso interesante de los datos con seguridad. Ahora, en cuanto a Stack Overflow, por ejemplo, probablemente hay muchas preguntas que son realmente similares y casi la misma pregunta, pero no del todo. ¿Ves alguna solución en el futuro cercano, tal vez usando algún aprendizaje automático o algo para reducir de alguna manera la cantidad de contenido duplicado o casi duplicado

JON: Correcto, así que Stack Overflow ya trata de encontrar preguntas similares y sugiere que mientras que la pregunta es, ya sabes: "¿Has mirado estas cosas. Creemos que son similares". E incluso después de haber hecho la pregunta allí. Hay una lista a la derecha que muestra los posibles duplicados o preguntas relacionadas y es relativamente fácil que una pregunta se cierre como un duplicado, porque si tienes una etiqueta dorada, hay una insignia dorada en una etiqueta en particular, entonces puedes cerrar las cosas y ver muy fácilmente lo que se llama el martillo de los duplicados. Eso ayuda a cerrar las preguntas muy rápidamente si son duplicadas, si se puede racionalizar aún más... Es difícil porque cualquier máquina de aprendizaje nunca va a ser 100 por ciento precisa, así que no quieres evitar que la gente haga preguntas. Incluso si sospechas fuertemente que será un duplicado. Casi necesitas un "estás realmente seguro". ¿Has mirado realmente todas estas cosas pero no sé si se siente como si todo fuera un problema un poco menor. El aspecto del duplicado que la gente hace preguntas y ni siquiera proporciona suficiente información o el tipo de información adecuada para poder decir si es un duplicado o no. Y espero que. Sé que Stack Overflow ha estado pasando por unas cuantas iteraciones de una especie de magos para hacer preguntas diciendo, "¿Cómo se ve tu código como qué lenguajes estás usando. ¿Has dado un ejemplo corto pero completo que demuestre el problema?". Ese tipo de cosas. No está claro exactamente qué es lo que va a funcionar, pero sé que el equipo está trabajando duro tratando de mejorar la experiencia de hacer preguntas, porque fundamentalmente el desbordamiento de la pila depende de que se hagan buenas preguntas.

MARCIN: Definitivamente y porque asumo que siempre habrá preguntas que se tendrán que hacer sin importar la tecnología que haya existido. ¿Cuál es la razón principal. ¿Qué es lo que está impulsando? Ya sabes el hecho de que siempre habrá nuevas preguntas que hacer, incluso sobre el C#, que ya sabes que has respondido a eso y otros temas, ya sabes 35.000 respuestas, pero siempre hay más. Supongo que esto se debe a la naturaleza de la ingeniería de software o a que no puedes abstraer todo.

JON: Bueno, son muchas cosas, en parte es que el lenguaje está cambiando, así que estoy escribiendo actualmente sobre C# 7.2 y teniendo que aprender nuevas cosas yo mismo para poder escribir sobre ellas. Así que sería totalmente natural que la gente se preguntara sobre C# 7.2 o que supiera otras cosas que son bastante nuevas C# 7.0 es todavía razonablemente nuevo. Así que a medida que los lenguajes evolucionan y los nuevos marcos y bibliotecas y todo tipo de cosas. Siempre habrá nuevas áreas sobre las que la gente pueda hacer preguntas. Y luego hay gente haciendo preguntas sobre áreas existentes y algunas de esas preguntas serán nuevas y otras no lo serán y otras pueden ser nuevas preguntas disfrazadas. Así, por ejemplo, en C# la forma exacta en que las expresiones lambda capturan las variables particularmente para cada cambio de variables de iteración en C# 5 y que causó una carga de preguntas antes de C# 5 cuando no era ideal la forma en que funcionaba. Y muchas de esas preguntas son efectivamente duplicadas unas de otras, pero en realidad respondí a bastantes de ellas porque hay muchas que no parecen obviamente relacionadas. Sólo cuando sabes la respuesta puedes ver que estas dos cosas son el mismo problema sólo que disfrazado. Así que siempre habrá cosas en las que sólo el que responde sabe que en realidad te enfrentas al mismo problema que otra persona y si esas preguntas deben ser cerradas como duplicados es probablemente un tema de debate. Pero sí, siempre habrá gente nueva que venga a la ingeniería de software, lo cual es algo fantástico, y algunos de ellos creo que están tratando el desbordamiento de la pila como un recurso de aprendizaje. Yo los animaría a que piensen que el desbordamiento de la pila es un gran recurso para la solución de problemas. No es una gran manera de aprender un lenguaje como desde cero, no se puede decir que tome un compilador de Java o incluso un IDE y Stack Overflow y aprenda Java desde cero de esa manera. Eso no va a ser una forma eficiente de aprender el lenguaje. Mientras que un libro o un tutorial es un enfoque mucho más estructurado y entonces Stack Overflow es genial para. Bueno, estaba este ejemplo y esperaba que hiciera esto y en su lugar hizo otra cosa. Y por eso creo que debería comportarse de esta manera y en realidad se está comportando de una manera diferente. ¿Podría alguien explicar exactamente lo que está pasando aquí? Este tipo de preguntas son muy buenas para el desbordamiento de la pila, así que es definitivamente una especie de complemento de otras herramientas de aprendizaje, pero no creo que sea una buena herramienta de aprendizaje inicial. O como la única forma de aprender un idioma, pero siempre habrá gente que aprenda cosas por primera vez. Y como digo, si eres relativamente nuevo en un idioma o tecnología, entonces será mucho más difícil de encontrar. Preguntas relacionadas porque ni siquiera sabes necesariamente con qué se relaciona tu pregunta en ese momento, así que no espero que el conjunto o el flujo de preguntas se agoten pronto. Y eso es en parte debido a la gente nueva, en parte debido a las nuevas tecnologías y en parte debido a las viejas manos que están haciendo cosas que no han hecho antes, así que podría seguir escribiendo en C# y hacer una nueva pregunta sobre C# y creo que la mitad de mis preguntas están relacionadas con el propio C#, lo que podría sorprender a la gente. No hay nada como conocer un idioma razonablemente bien para ser consciente de las cosas que van mal o son realmente inesperadas y entonces es realmente útil preguntar en Stack Overflow y decir hey realmente esperaba que esto sucediera y tengo buenas razones para esperar que debido a toda mi experiencia previa pero significa que aquí se termina haciendo preguntas sobre tecnologías que no se esperaría normalmente

MARCIN: Y en Stack Overflow la idea de encontrar una respuesta en línea es que cuánto tiempo ha sido una parte integral de la ingeniería de software. Porque solía ser que estabas un poco atascado con digamos que tenías documentación, tal vez un par de tableros de mensajes, un par de grupos de noticias. Pero parece que muchos profesionales están usando el desbordamiento de existencias de forma regular y muchos de sus proyectos y es probablemente por eso que el desbordamiento de existencias terminó abordando eso con sus licencias y diciendo que tienes que mencionar esencialmente que fue de los ciclos en los que tomaste el código. Así que supongo que en tu opinión, ¿cómo ha cambiado la ingeniería de software y el desbordamiento de la pila a lo largo de los años?

JON: Así que creo que la ingeniería de software ha cambiado en parte porque todos estamos usando más tecnologías y usando tecnologías menos bien documentadas, así que todos usan bibliotecas de terceros a la izquierda, a la derecha y al centro en estos días o la mayoría de la gente lo hace y las bibliotecas vienen con una variedad de grados de documentación y hasta cierto punto el desbordamiento de la pila casi se ha apoderado de la documentación en algunas situaciones. Y hubo el proyecto de documentación de Stack Overflow que terminó siendo cancelado porque no funcionaba para la situación, pero ciertamente Stack Overflow es parte de un conjunto de herramientas de los ingenieros de software en estos días cada vez más. Y parte de eso es porque el desbordamiento de la pila reacciona muy rápidamente. Recuerdo que en 2008 y 2009, cuando Stack Overflow era todavía muy joven. Jeff Atwood diciendo que sabes que a veces necesitas hacer una pregunta y esperar 20 minutos para obtener una respuesta. Y me quedé impresionado pensando que 20 minutos es un tiempo increíblemente corto. Y tiene razón en que si haces una buena pregunta, normalmente en 20 minutos obtendrás una respuesta. Y eso no solía ser el caso en los grupos de noticias. No estoy seguro de si es sólo el número de personas que leen las cosas o sólo la forma en que el mundo se mueve más rápido, pero ciertamente a menudo se espera un día entero antes de obtener una respuesta en un grupo de noticias, mientras que en estos días tiendo a encontrar que me llevará más tiempo escribir una pregunta que lo que se tarda en recibir una respuesta. Así que rara vez me tomo menos de media hora para escribir una pregunta porque estoy haciendo la investigación y construyendo un ejemplo completo y preguntándolo tan claramente como puedo y todo eso lleva tiempo. Pero ciertamente dentro de media hora, así que si me ha llevado media hora escribir la pregunta, entonces menos de media hora después tengo al menos comentarios que dicen "Sí, eso parece raro". Eso es nuevo. No estoy seguro de lo que está pasando aquí o de una respuesta real que explique la solución del problema. Así que sí, el hecho de que sea tan baja latencia lo hace mucho más viable. Y eso si tienes que hacer una nueva pregunta. El 90 por ciento de las veces que me enfrento a un problema con el que me ayuda el desbordamiento de la pila, no tengo que hacer la pregunta en absoluto porque alguien la haya hecho antes. Me doy cuenta de que, sobre todo en las áreas con las que estoy menos familiarizado, como los guiones de Python o Bash o algo así, a menudo investigo un poco sobre el desbordamiento de la pila y encuentro la respuesta a la pregunta exacta que quería. Es genial.

MARCIN: ¿Descubren que las personas que son una especie de descubridoras ofrecen un desarrollo que quieren aprender más acerca de ello que sólo están aprendiendo el primer idioma. ¿Crees que no invierten suficiente tiempo en el aprendizaje del núcleo. Como dije la documentación básica y realmente conocer el idioma antes de dirigirse a algo como Stack Overflow?

JON: Creo que es difícil decir qué proporción de la gente hace eso, pero definitivamente veo a algunas personas haciendo eso y ni siquiera conociendo el lenguaje y obteniendo las herramientas. Pero creo que hay una falta de enseñanza en las escuelas y universidades sobre el proceso de diagnóstico y es por eso que tengo una especie de despotricamiento sobre que ciertamente en el Reino Unido hay muchos más cursos de ciencias de la computación en los cursos de ingeniería de software y por todo el hecho de que estoy muy agradecido de que haya cursos de ciencias de la computación y definitivamente necesitamos científicos de la computación. Probablemente hay más necesidad de ingenieros de software que no necesitan saber los detalles de cómo funciona un compilador, pero que realmente podrían hacer un curso sobre cómo resolver un problema e investigarlo más a fondo. Y si no logras resolverlo, entonces aquí está la forma en que lo preguntaste. Bueno, ya sea preguntando a tus colegas o preguntando sobre el Desbordamiento de la Pila o encontrando un error o lo que sea, son aspectos tan simples del proceso de diagnóstico de no intentar morder más de lo que puedes masticar. Si eres nuevo en un idioma, entonces haz algunas cosas simples primero. Tiendo a usar algo como aplicaciones de consola por una cosa en lugar de sumergirme inmediatamente en aplicaciones web y aplicaciones para móviles, por ejemplo, lo cual depende totalmente del idioma, por supuesto, si estás usando un lenguaje que está completamente orientado al desarrollo web, entonces tal vez una consola que va a ser imposible, pero cuando sea posible, usa el entorno más simple que puedas. El entorno en el que la depuración va a ayudarte tanto como sea posible, donde no necesitas 100 líneas de texto para obtener dos líneas de código que ejecuten ese tipo de cosas, es realmente útil para prepararte para el éxito de manera efectiva, de modo que puedas aprender un aspecto del lenguaje, un aspecto de una biblioteca a la vez, en lugar de ahogarte en un mar de cosas buenas. Tengo 100 líneas de código y no entiendo nada de eso y me dan un mensaje de error que tampoco entiendo y no sé por dónde empezar. El problema es que empiezas en un lugar que tiene demasiadas cosas que no entiendes. Así que sí en un mundo que se mueve rápido y soy culpable de esto como cualquier otro si trato de aprender nueva tecnología por todo el hecho de que digo que me gustaría empezar simplemente. A menudo pienso: "Bueno, sólo tengo una cosa que necesito hacer, así que me sumergiré en ella". Así que también me equivoco, pero sé lo suficiente como para saber que si me quedo atascado, me echaré atrás e intentaré hacer algo más sencillo, pero en un mundo que se mueve tan rápido es tentador intentar sumergirse de lleno, porque oye, necesito hacer algo ahora mismo, pero me parece que es mucho más productivo y, a la larga, si das un paso atrás e intentas caminar primero antes de correr.

MARCIN: ¿Alguna vez has estado en una situación, tal vez fue al principio de una carrera, donde empiezas a resolver algún problema que ya ha sido resuelto y luego te das cuenta más tarde que en realidad eso es como un resuelto que es algo que ha sido resuelto puedes usar una API o puedes usar una biblioteca de confianza.

JONSí, y parece haber una especie de aversión a la biblioteca de terceros a veces. Un ejemplo clásico es la manipulación de XML, así que verás a la gente diciendo: "Bueno, yo sólo necesito escapar de los amperios, así que voy a usar cadenas y construir el XML directamente y entonces encontrarán: "Oh, no, tengo esta otra cosa que está causando un problema y tarde o temprano tienes cientos de líneas de código que podrían evitarse por completo si utilizas una biblioteca XML para empezar y será mucho más robusta y segura en todo tipo de cosas". Así que sí, la gente debería usar bibliotecas de terceros. Después de haberlas elegido cuidadosamente, aunque también hay un montón de bibliotecas bastante malas. Pero elegir una buena biblioteca puede marcar la diferencia en un proyecto.

MARCIN: Y dirías que eso es algo que se gana con la experiencia, que es lo que estoy diciendo es que el tipo de sabiduría para poder decir ¿realmente necesito escribir algún código para resolver este problema específico.

JON: Hasta cierto punto. Es en parte una cuestión de experiencia y en parte una cuestión de contenerte porque si ves que puedes hacer algo y significa escribir algún código y crees que sería divertido escribir un código. Entonces siempre existe la tentación de escribir ese código, incluso si realmente no lo necesitas. Y ciertamente tengo esa tentación. Incluso cuando realmente no debería y a veces escribo una herramienta rápida en C# aunque no sea el lenguaje más apropiado para usarla porque es el lenguaje que mejor conozco y por lo que tal vez eso me hace más efectivo a corto plazo. Posiblemente a costa de la productividad a largo plazo. No creo que debamos preocuparnos demasiado por ello. No nos golpeemos demasiado por este tipo de cosas, pero sí por vigilar. Hay mucho que aprender dando un paso atrás de uno mismo y observando el trabajo y diciendo dónde estoy usando mucho tiempo de manera que termine no siendo productivo y cómo puedo reducirlo un poco con el tiempo sin tratar de pensar oh eso debe significar que soy un desarrollador horrible y que debería dejar la ingeniería de software por completo. Sólo trata de mejorarte a ti mismo con el tiempo todo el tiempo.

MARCIN: Genial. Bien. Ahora supongo que lo que quiero intentar es probar un poco de historia como si pudieras decirnos que todo el mundo tiene una historia de cuando empezaron a programar. Entonces, ¿cuál es tu historia de cuándo te metiste en ella? ¿Cuándo te interesaste por algo como la ingeniería de software o la programación o la codificación o como quieras llamarlo en ese momento?

JON: Así que era muy temprano. Compramos el espectro de los aztecas 48 K Sinclair en Spectrum cuando yo era, creo que fue en 1984, así que tenía ocho años. El espectro salió dos años antes, en 1982, e inicialmente, sólo jugaba a juegos y luego, bastante rápido, empecé a hacer una codificación muy simple. Así que el Spectrum vino con un intérprete de BASIC incorporado. Así que cuando arrancas el ordenador puedes empezar inmediatamente a escribir código y el manual del espectro que venía con él era muy bueno para enseñar programación enseñando al menos lo básico. Recuerdo que un día mi padre estaba en casa porque estaba enfermo por alguna razón y recuerdo haber escrito un pequeño y tonto juego de disparos que consistía en una nave espacial que probablemente estaba compuesta por algunos personajes ASCII y un alienígena que aparecía en un punto aleatorio y movías la nave arriba y abajo y luego presionabas el botón de "cara al fuego" o lo que fuera, era completamente trivial y no era nada entretenido. Pero era la primera vez que escribía algo que fuera interactivo y fue sorprendente la sensación que me dio. Creo que en parte porque todos los juegos eran bastante burdos en aquel entonces, me gustaba Jetpack y Lunar Jet Man, etc. Pero eran juegos bastante simples, así que el hecho de que estuviera escribiendo algo sencillo no me desanimó. Siento un poco de lástima por los niños de hoy en día, que si siguen mi consejo y hacen algo muy simple para empezar, terminarán con un pequeño juego de texto que tal vez te pida que adivines un número al azar y te diga si estás subiendo o bajando demasiado, etc. Bueno, si lo comparas con Overwatch o cualquier otro juego al que hayas jugado por diversión. Es bastante difícil ver cómo se conectan porque hay un millón de años luz de distancia desde una simple cosa de texto a los gráficos 3D pasando por eso a gran velocidad con las redes y todo tipo de cosas. Pero en aquel entonces era genial. Así que lo hice, solía escribir mi propio código de esa manera. También había revistas que venían con listas para que las escribieras. Así que comprabas un libro y en lugar de tener una cinta en la parte delantera con el código que podías cargar, lo escribías todo y los beneficios de eso eran que se sentía inmensamente tedioso pero estabas aprendiendo todo el tiempo. Bueno, así es como se puede escribir código sin que se enfatice particularmente. Así que creo que gané mucho con eso y recuerdo que uno de mis primeros proyectos significativos fue escribir un intérprete de Logo así que nos dirigimos a las computadoras de la BBC Micro en la escuela. Teníamos un intérprete de Logo que es donde hay una especie de robot falso y puedes decir adelante cien giros a la derecha 90 grados etc. y dibujaría hojas en la pantalla. Me encanta esto, pero no lo teníamos en el espectro, así que implementé el mío propio porque no sabía que esto era algo difícil que llevaría mucho tiempo y lo hizo, pero fue increíblemente satisfactorio y creo que es un testamento a la calidad del manual del espectro que efectivamente aprendí trigonometría del manual del espectro porque no lo hemos hecho en matemáticas todavía, yo tenía sólo no sé 10, 11, o 12 años. Así que no he mirado la trigonometría de Trigon en la escuela en absoluto, pero el manual de espectro era lo suficientemente claro como para aprender lo suficiente como para hacer un intérprete de logotipos a partir de eso. Y mirando hacia atrás me encantaría ver el código ahora. Sospecho que es absolutamente asqueroso. Y, por supuesto, se pierde en la neblina del tiempo. Pero aún así estoy inmensamente orgulloso en retrospectiva de lo horrible que fue ese código. Podrías escribir tu lista de logotipos. Podrías guardarlo en cinta, puedes cargarlo de nuevo, podrías ejecutarlo... Todo era extremadamente genial.

MARCIN: Y a medida que progresas en esta habilidad, ¿siempre pensaste que ibas a trabajar como ingeniero de software o te interesaban otras cosas y luego de alguna manera te dirigías o sabías cuál era el proceso para entrar en el campo?

JON: Creo que a partir de los 13 ó 14 años, consideré que esta sería mi carrera. Así que sí. No fui a la universidad a través de la informática, me licencié en matemáticas y pensé que tal vez terminaría haciendo investigación en matemáticas. Resulta que no soy lo suficientemente bueno en matemáticas para hacer un doctorado o lo que sea. Pero sabía que sería algo relacionado con la informática. Así que me interesé por la vida artificial en mis días de escuela, así que hice una licenciatura en matemáticas y luego una maestría en ciencias de la computación equivalente a un año y durante las vacaciones terminé trabajando con un amigo en Electrónica Digital y de ahí pasé básicamente. Siempre he sido muy malo dirigiendo mi carrera, lo dejo ir de un lugar a otro mientras me divierto, así que siempre he considerado que el placer es mucho más importante para mí que el dinero, y el reconocimiento que recibo de Stack Overflow y de la escritura es muy placentero. Nunca ha sido una meta deliberada en la vida como lo es el hacerse famoso o lo que sea. Pero el tipo de estatus de microcelebridad bizarra que obtengo a través de Stack Overflow es bastante divertido y un poco raro, pero hacer cosas divertidas en tu trabajo siempre es mucho más importante para mí, así que me aseguro de tener una buena calidad de equilibrio entre mi vida laboral y mi vida familiar. Mi familia es increíblemente importante para mí, pero no le he prestado tanta atención a mi carrera como probablemente lo harían personas más deliberadas.

MARCIN: ¿Cómo pueden los padres desarrollar el interés de sus hijos en la programación?

JON: Tengo tres hijos, uno de los cuales se interesa por las cosas de Arduino y hace trozos de codificación y disfruta de Python también. Otro que ha comenzado en Python más recientemente pero anteriormente estaba haciendo scratch lo cual es interesante, es un ambiente más visual y no sé mucho sobre la ciencia o enseñar a los niños a programar. Intenté enseñar a mis hijos a programar en Python intentando un enfoque muy paso a paso y creo que es genial para los adultos pero no estoy seguro de que mantenga el interés de los niños lo suficiente. Al menos no el paso a paso para el que fui entrenado. Eso o no soy un buen profesor, lo cual es totalmente plausible, pero creo que lo más importante es asegurarse de que es algo que quieren hacer. Así que cuando dejé de intentar enseñar a mis hijos la programación, empezaron a hacerlo por sí mismos y a aprender mucho más. Mi hijo mayor ha hecho un montón de cosas Arduinos y Frambuesa Pi. Estoy seguro de que esas cosas nunca las he visto, porque de vez en cuando dice: "¿Podría darme estas partes, por favor?". Y luego va y construye cosas al azar y así fue como aprendí también. Mis padres nunca me cuidaron hasta donde yo sé en términos de lo que estaba programando. Estaban felices de que yo fuera feliz y me animaban a salir al mundo exterior. De vez en cuando, pero estaban felices de que estuviera haciendo algo creativo y aprendiendo de mí mismo. Así que si puedes animar a los niños lo suficiente para que encuentren algo que disfruten haciendo por sí mismos y luego dejar claro que estás contento de ayudarles siempre que quieran ayuda, pero no vas a obligarles a hacerlo. Ahora mismo es el momento de media hora de programación. Entonces creo que esa es la receta para el éxito. A los niños les encanta aprender. Puede que no les guste la escuela pero les encanta aprender y les encanta hacer cosas creativas. Así que déjalos que den rienda suelta a su creatividad como mejor les parezca y te sorprenderán con lo que pueden hacer.

MARCIN: ¿Crees que la idea de que todo el mundo debería aprender a codificar, sobre todo si sabes que están tratando de introducir, tenía más en los planes de estudio. ¿Es una buena idea o es que obligar innecesariamente a la gente a aprender algo que realmente no quieren.

JON: Creo que hay dos aspectos uno es que es bueno exponer a todos a la codificación porque tenemos este estereotipo malsano de lo que es un programador de computadoras que realmente está dañando nuestra industria. Así que si podemos exponer a la gente y decir correctamente que esto es lo que la codificación es en realidad y si podemos dar a la gente una experiencia positiva de ella, entonces la gente que tal vez nunca haya dicho naturalmente que sabes que eso es algo que yo mismo voy a tomar para mí puede descubrir. En realidad, les encanta. Así que creo que es muy beneficioso. Y el otro aspecto es que el software funciona en gran parte del mundo ahora que creo que tener alguna idea de lo que está involucrado incluso en el nivel más burdo es muy beneficioso. De la misma manera que creo que la gente debería aprender a planificar sus finanzas, lo básico es lo que son las pensiones y lo que son los préstamos, y así es como funciona el mercado de valores. No es para que puedan ser banqueros, sino para que puedan maniobrar en un mundo que está tan orientado a las finanzas que sólo tienen una idea de que sí, lo mismo es cierto para la política y todo tipo de cosas, las partes de la realidad que van a afectar a su mundo. Es bueno tener algún entendimiento básico de. No digo que sepa mucho de política o de finanzas, pero me alegro de lo que sé porque ayuda a moldear mi visión del resto del mundo. Así que creo que el software tiene un papel definitivo que desempeñar en que ningún niño de hoy en día proviene de la clase media de los países desarrollados y hay muchas otras conversaciones que podemos tener sobre las áreas en las que los niños no entran en contacto con los ordenadores debido a la pobreza, etc. pero muchos niños van a tener alguna interacción con los ordenadores. Así que si ellos los ven como un código en ejecución, es un código muy complicado, pero tengo una idea de cómo es el código. Y la idea de saber lo que es la nube en la medida en que sus computadoras se ejecutan en otro lugar en un centro de datos que es administrado por Google o Amazon o Microsoft o lo que sea y tener los fundamentos de que sólo puede ayudar a hacer cualquier otra cosa que no es necesario hacer la codificación a ti mismo para beneficiarse de tener las ideas básicas de cómo funcionan los ordenadores.

MARCIN: Y ahora con usted sabe algo como el cromo, por ejemplo, con su barra de herramientas de desarrollo. Puedes tomar a cualquiera que esté usando Internet y decir si te diste cuenta de que todo esto está pasando mientras estás usando este sitio web, conoces toda esta actividad y puede que ni siquiera lo entiendan bien. Pero esto revela lo que realmente está detrás de la cortina. Y creo que a veces es una gran manera de mostrar a alguien que no tiene interés, digamos en el tema y dices OK. Déjeme mostrarle, déjeme mostrarle lo que realmente está pasando en este sitio web mientras lo usa. Creo que es increíble que podamos abrir la consola y empezar a hackear javascript sin tener que hacer nada.

JON: Absolutamente sí y se aplican el uno al otro. Hay muchas otras maneras de hacer bits básicos de código sólo para un navegador, incluyendo en C#, ahora Tray.net te permite empezar a escribir cada uno sólo en tu navegador y seguro que entre bastidores hay un contenedor de nubes corriendo en algún lugar. Pero definitivamente puedes empezar a ver el código en una miríada de idiomas sólo desde tu navegador. Y creo que hay algo que se puede decir de la informática teniendo también esa exposición. Así que ciertamente he dado charlas a los Cachorros y guías e incluso al gremio de mi iglesia metodista local, que es en su mayoría gente que está jubilada o cerca de la edad de jubilación que nunca habría hecho ninguna ciencia de la computación la mayoría de ellos y di una charla que les mostró algo de ciencia de la computación sin que ninguna computadora estuviera involucrada en absoluto. Así que cosas como que tienes una pila de trozos de papel como puedes clasificarlos eficientemente y escuchar algunos algoritmos diferentes que puedes usar. ¿Y qué significa esto? Si tuvieras que saber que si tienes a una persona intentando clasificarlos, podrías usar un algoritmo. Si tienes 10 personas diferentes, ¿el camino que has elegido sigue siendo el mismo que el de muchas personas diferentes? Así que terminas con una especie de fusión o lo que sea y cosas como la complejidad algorítmica dando ejemplos de la vida real de cuánto tiempo se tarda en hacer cosas diferentes. Si tienes más información colgando camisas en una línea de lavado o lo que sea, creo que la gente puede encontrar ese tipo de cosas interesantes si no se sienten intimidados por ello. Pero en cuanto empiezas a decir "informática", mucha gente se apaga inmediatamente. Así que hay mucho que decir para hacer que las cosas estén disponibles de una manera no amenazante y no condescendiente y que eso requiere una habilidad significativa en áreas que yo no tengo. Pero he hecho lo que he podido, pero estoy seguro de que mejores educadores podrían hacerlo mucho mejor. Creo que es bastante importante.

MARCIN: Sigamos aquí. ¿Qué dirías que eres además de Stack Overflow. ¿Hay algún tipo de recursos que realmente te gusten. Quiero decir que soy fan de los libros de O'Reilly, pero ¿de qué eres fan en cuanto a los recursos que utilizas cuando en realidad quieres aprender un nuevo lenguaje o algo así?

JONAsí que los libros son geniales para aprender idiomas porque te llevan allí en un orden particular y hoy en día, por supuesto, eso también va para las tutorías en línea siempre y cuando hayan sido escritas apropiadamente y requiere mucho esfuerzo, lo sé por experiencia, para escribir recursos que te enseñen todas las características de un idioma en un orden específico que te va a ayudar a aprender. Y así alguien podría escribir un tutorial de C# que en realidad no es muy bueno en absoluto porque acaba de dar un volcado de cerebro. Así que tienes que elegir, pero algo que esté estructurado para ti marca una gran diferencia Una buena documentación de la API siempre es muy bienvenida. Así que el .NET tiende a estar bastante bien documentado y el nuevo navegador de la API hace que sea más fácil encontrar la documentación, etc. Yo animaría a la gente que está escribiendo bibliotecas a que realmente se esfuerce en escribir buena documentación para ir junto a esas bibliotecas. No tiene sentido tener el serializador JSON más rápido del mundo. Si nadie puede averiguar cómo usarlo. Pero, o bien utilizo los mismos recursos que otras personas, ya sean tutoriales y libros, o simplemente busco los resultados correctos cuando estoy entrenado para escribir bien, ¿cómo puedo hacer lo que sea? Poner algo en un PDF o cualquier otra tarea que tenga a mano. Sí, busco en Internet, uso Stack Overflow, uso libros, uso tutoriales, uso bibliotecas y su documentación. Sí, eso es más o menos lo que creo.

MARCIN: ¿Y qué dices de esta idea que es porque en realidad somos grupos de edad casi similares. La idea de que a cierta edad la gente se convierte en gerentes. ¿Has visto que eso suceda. ¿Es eso cierto o es como si fueras único en ese sentido que todavía estás desarrollando software o eres. Supongo que qué dirías a eso.

JON: Ciertamente no soy el único. Diría que he dicho activamente que no he manejado mi carrera. El hecho de que estoy optimizando para divertirme, me he resistido activamente a dirigirla durante bastante tiempo. Fui gerente durante seis meses y descubrí que hay mucho que decir al respecto. En particular, me gustaría pensar que soy empático e intento conscientemente serlo, ya que creo que es una habilidad importante para un ingeniero de software. Pero obviamente también está relacionado con la gestión, así que pensé que sería interesante intentar la gestión y lo intenté, y entonces fue apropiado para mí volver a un papel de colaborador más individual. Hay mucho que puedes hacer en términos de liderazgo como ingeniero de software sin la gestión. Y eso no tiene por qué ser siempre escribir código, así que probablemente escriba más código que la mayoría de las personas con un nivel de antigüedad equivalente, porque he decidido hacerlo y me he resistido activamente a las cosas que podrían tener un impacto más amplio, pero sin que sea tan divertido para mí, decir que a menudo se puede pasar mucho tiempo escribiendo documentos de diseño y, sí, que sigo escribiendo documentos con una frecuencia razonable, normalmente de manera bastante informal, no soy un gran aficionado a escribir documentos enormes con todo tipo de bits y piezas que no van a ser relevantes para nadie. Preferiría ir al grano rápidamente. Pero escribir documentos para contribuir a múltiples equipos diciendo "Bien, creo que todos tenemos este problema". Veamos si podemos llegar juntos a una solución que tenga un impacto más amplio que sólo yo escribiendo código para resolver ese problema yo mismo. Creo que una de las cosas a las que probablemente deberías aspirar a medida que vayas adquiriendo más experiencia es ver dónde esa experiencia puede ayudar a otras personas. Pero hasta cierto punto eso seguirá siendo codificar, hasta cierto punto será compartir tu conocimiento con grupos de usuarios y conferencias y cosas así. Y al resolver los problemas internamente dentro de una compañía que puedes ver más claramente que otras personas que son tal vez menos experimentadas tal vez se han unido a un equipo o lo que sea. Pero en términos de si las personas deben convertirse en gerentes o no, personalmente creo que estaría bien que alguien viniera y empezara a dirigir inmediatamente sin haber hecho necesariamente el trabajo por sí mismo. Si eso es algo en lo que van a ser buenos por empatía y aprendizaje, puedes aprender lo que implica un trabajo sin hacerlo, siempre y cuando seas consciente de que no lo has hecho y no tengas esa experiencia directa. Así que no creo que no deba haber una correlación directa entre la edad y la proporción de trabajadores que son gerentes. Ciertamente espero seguir escribiendo el código hasta bien entrada la jubilación y probablemente no haciendo cantidades significativas de gestión. Si termino teniendo que ser gerente en algún momento lo haré lo mejor que pueda, pero no creo que normalmente deba ser un requisito y creo que muchas empresas hacen lo incorrecto al promover a personas a la gerencia que en realidad serían mucho más felices en su calidad de codificadores.

MARCIN: En cuanto a la idea de que sí, es probablemente una especie de idea equivocada que sabes que después de 15 años de escribir software te vas a convertir en un gerente y eso es lo que todo el mundo hace. Sé que hay cierta presión, al menos en el Silicon Valley de California, donde la gente está realmente preocupada por tener 29 años, por ejemplo, y por ser demasiado viejos para ser contratados por algunas empresas que están obsesionadas con contratar sólo a personas de 22, 23 o 24 años.

JON: Bueno, no me gustaría ser contratado por una empresa que está obsesionada con la contratación de jóvenes de 22 años. Preferiría trabajar para una compañía que valora a las personas por lo que son, por lo que pueden lograr y por lo que pueden lograr juntos. Así que no sólo sus habilidades actuales sino su potencial. Así que no he experimentado ese tipo de agitación. Disculpe, pero soy consciente de que es una preocupación. Ciertamente diría que no he experimentado ninguna degradación de la que sea consciente en términos de mis habilidades de codificación. Sigo codificando tan feliz y productivamente como siempre. Hasta donde yo sé. Así que espero que las empresas tomen nota de ese tipo de cosas y contraten a gente que pueda hacer el trabajo.

MARCIN: ¿Crees que hay algo bueno. Por ejemplo, hablamos de si hablamos de todas las demás profesiones. Se tiende a considerar que si alguien ha estado haciendo física durante 30 años, entonces sabes que no hay nadie que vaya a decir: "Oh, ya no sabes lo que estás haciendo". ¿Es algo que la ingeniería de software está tan estrechamente ligada a la tecnología y a la tecnología que se desarrolla tan rápidamente que la gente asume que si lo has estado haciendo durante tantos años, entonces estás como fuera de contacto o hay algo que diferencia la ingeniería de software de todas las demás disciplinas que hacen que la gente tenga esta idea de que sabes que alguien es de cierta edad y que tiene ciertas ideas sobre esa persona.

JON: Puede ser que de ahí venga la impresión, pero yo diría que probablemente sea inexacta. Tienes que estar dispuesto a aprender cosas nuevas. Al menos si quieres estarlo si quieres ser capaz de seguir en nuevas y excitantes áreas. Si has estado haciendo COBOL durante 30 años y has decidido no aprender nada más que COBOL, entonces estoy seguro de que puedes seguir siendo productivo y eso está bien. Pero no deberías esperar conseguir un trabajo en JavaScript o algo así sin haber mostrado ningún interés en seguir aprendiendo. Por otro lado, sólo conozco C# y Java a nivel profesional porque he descubierto que hay suficientes cosas nuevas para aprender en C#. No tengo suficiente tiempo para aprender F# y D y Rust and Go y todo tipo de cosas que otras personas hacen más o menos profundas. Pero depende de los individuos cuánto quieren asumir y tienes que ser consciente de que si decides no aprender, si decides dejar de aprender, con el tiempo te volverás menos valioso. Pero para ser honesto sospecho que hay suficientes sistemas de legado que para la mayoría de los idiomas podrías seguir siendo razonablemente valioso incluso si decidieras dejar de aprender. Francamente no puedo ver por qué querrías dejar de aprender ya que siempre es interesante hacer cosas nuevas. Pero lleva bastante tiempo y creo que las empresas deberían estar dispuestas a invertir ese tiempo en sus ingenieros para que éstos no sientan que necesitan aprender cosas en un tiempo que, por ejemplo, pasan con la familia. Así que hay una buena cantidad de desarrollo activo que debería continuar como parte de tu trabajo. Parte de ser un buen ingeniero de Sopher en tu vida laboral es aprender cosas nuevas. Para la mayoría de los desarrolladores, como digo, hay algunas áreas más de legado donde eso no es tan relevante, aunque diría que incluso los desarrolladores de Cobol que siguen adelante con ello siguen aprendiendo cosas nuevas, es probable que puedan ver cómo pueden aplicar sus habilidades Cobol en otros entornos aquí. Tal vez hay contenedores que están ejecutando COBOL en estos días y de repente tienes sistemas de contenedores basados en la nube que pueden estar ejecutando COBOL y de repente puedes mover todas tus máquinas en las instalaciones a fuera de ellas. Así que hay espacio para todo tipo de personas que siempre quieren aprender el nuevo idioma. Gente que quiere aplicar todas las habilidades tecnológicas a nuevos entornos y gente que no ve mucho valor en aprender cosas nuevas. Sí, puedo decir que no siento empatía con eso en particular, pero la ingeniería de software es un campo tan amplio que estoy seguro de que hay vidas útiles y productivas que se pueden pasar haciendo. Aplicando todas tus habilidades existentes a nuevos desafíos todo el tiempo. Podría usar C# 7 por el resto de mi vida y seguir haciendo cosas nuevas incluso si no aprendo ninguna nueva área de lenguaje real. No es lo que quiero hacer, pero estoy seguro que para otras personas. Puede que sea más el camino que quieren recorrer.

MARCIN: Y es todo eso porque el hecho de que la mayoría de los idiomas son Turing completo y por lo que puede hacer cualquier cosa con cualquier idioma que usted sabe. Quiero decir que es muy ampliamente hablando

JONProbablemente no estoy muy seguro. Creo que los lenguajes evolucionan, ciertamente C# ha estado evolucionando muy definitivamente para los casos de uso que se le está dando, por lo que algunas de las características que se están agregando ahora no habrían tenido tanto sentido hace 10 años, antes de que la computación en nube se generalizara mucho y estamos viendo otras áreas como los juegos que C# está dominando en forma casi inesperada con plataformas como Unity. Así que hay características del lenguaje que están de alguna manera sintonizadas con los juegos y la computación de alto rendimiento de baja latencia y creo que eso es genial. Pero sí, se pueden hacer cosas en otros idiomas o en versiones anteriores de los idiomas, pero es mucho más productivo e interesante utilizar las nuevas características porque han sido diseñadas para atender particularmente tus preocupaciones.

MARCIN: ¿Cuál es tu IDE favorito?

JON: Estudio visual

MARCIN: ¿Utiliza una cierta metodología?

JON: Consigue el código hecho. No uso Kanban o no me gustaría decir ninguna metodología específica como esa. Creo en las pruebas, no necesariamente en el desarrollo dirigido por pruebas, pero al menos las pruebas junto con el desarrollo a veces dependen de la situación. Me siento incómodo por tener mucho código de producción que no está probado. Así que ese es un aspecto del desarrollo ágil pero no es que personalmente no termine usando todo el ágil. No hago mucha programación en parejas. Lo he hecho en el pasado y lo encontré muy útil. He hecho no-programación por parejas en el pasado y lo encontré absolutamente bien. Considero que es importante tener una buena relación con sus colegas, por lo que la revisión de código es muy importante para mí y que la revisión de código sea honesta y franca. Pero eso no está ligado a ninguna metodología en particular.

MARCIN: ¿Qué consejo le darías a alguien que está en esa área donde ha estado aprendiendo un idioma por digamos tres meses tres a seis meses. Y sienten que no son lo suficientemente inteligentes para hacerlo y aprenderlo bien. Como si hubiera demasiados errores que arreglar. Y sabes qué tipo de consejo tienes para esa persona que tiene un interés en ello, pero que siente que no puede superar esa joroba.

JON: Así que si todavía estás interesado y crees que podrías disfrutarlo si lo hicieras mejor, entonces busca gente. Ya sea leyendo blogs o buscando un grupo de usuarios, encuentra gente con la que puedas interactuar y recibir clases particulares si es posible, porque puede ser bastante solitario tratar de encontrar respuestas sólo desde detrás de una pantalla. Mientras que si te presentas si te comprometes con alguien uno a uno a menudo pueden ver ok aquí está tu problema de modelo mental donde estás imaginando algo de manera equivocada y que podría ser muy difícil de obtener sólo de pequeños trozos individuales. Si no lo estás disfrutando, entonces busca otro idioma porque hay muchos idiomas por ahí.

MARCIN: ¿Qué lenguaje de programación es superior, Java o C#?

JON: Personalmente diría que C# Absolutamente. No he visto los detalles de las características de Java 9 y sólo conozco las características de la tasa de trabajo, pero me parece que C# tomó algunos de los errores que Java había cometido y los cometió, sin duda. Pero en general, C# parece haberse desarrollado más rápido y muy bien el equipo de C# es fantásticamente inteligente y muy cuidadoso en el desarrollo del lenguaje. Así que estamos en C# 7.2 y parece que ha tomado una muy buena dirección, se está manejando extremadamente bien, muy bien especificado. Dicho esto, sabes que Java está mejor que nunca y no creo que no haya suficiente en él para que si estás trabajando en una base de código Java deberías tirar todo por la borda y empezar a hacer C# en su lugar. Pero si tengo mi opción en algún momento, definitivamente elegiría C# en cualquier día.

MARCIN: ¡Impresionante! Jon Skeet gracias por ser un invitado en el podcast del Pato Amarillo. Si tienes algún enlace que quieras enviarme, y conferencias que vayas a hacer, por favor envíame toda la información.

JON: Gracias.

MARCIN: Sí, gracias, ¡adiós!

Compartir correo

Más información sobre la contratación de tecnología

Suscríbase a nuestro Learning Hub para recibir información útil directamente en su bandeja de entrada.

Verificar y desarrollar las habilidades de codificación sin problemas.

Vea los productos DevSkiller en acción.

Certificaciones de seguridad y cumplimiento. Nos aseguramos de que sus datos estén seguros y protegidos.

El logo de DevSkiller Logotipo de TalentBoost Logotipo de TalentScore