¿Por qué los programadores principiantes (como yo) siempre preguntan sobre el próximo idioma que deberían aprender en lugar de preguntar sobre el próximo proyecto para abordar?
¿Por qué Eric Raymond, en la sección " Aprenda a programar " de su ensayo " Cómo convertirse en un hacker ", habló sobre el orden en que debe aprender idiomas (frente al orden en que debe abordar los proyectos).
¿Los carpinteros principiantes preguntan "Sé cómo usar un martillo ... debería aprender cómo usar una sierra o un nivel a continuación?"
Pregunto porque descubro que casi cualquier proyecto significativo en el que estoy interesado en abordar (por ejemplo, una aplicación web, un conjunto de herramientas de análisis de póker) requiere que aprenda lo suficiente de una multitud de idiomas (Python, C, HTML, CSS , Javascript, SQL) y frameworks / bibliotecas (wxPython, tkinter, Django) para implementarlos.
Gracias,
Miguel
fuente
Respuestas:
Creo que cuando la mayoría de la gente se propone aprender un idioma, lo hacen porque quieren abordar un proyecto escrito en ese idioma, ya sea ahora o en el futuro. Para hacerlo, deben aprender ese idioma, lo que lleva tiempo. Los lenguajes de programación son como herramientas, pero si bien puedes aprender a usar un martillo en aproximadamente sesenta segundos, los idiomas tardan un poco más en aprender a usar; así, muchas personas se centran en aprender un idioma antes de concentrarse en trabajar en un proyecto escrito en ese idioma.
En otra nota, creo que cuando la mayoría de las personas preguntan qué idioma aprender a continuación, realmente están pensando en qué proyecto aprender a continuación, pero se enfocan en aprender el idioma primero.
Finalmente, aprender idiomas puede ser divertido , aunque no tenga en mente un proyecto u objetivo específico.
fuente
El motivo de muchos desarrolladores de tiempo completo es ser más empleables.
Ser más empleable generalmente significa pasar el obstáculo del evaluador de recursos humanos (y luego superar el obstáculo de la entrevista real).
El evaluador de recursos humanos típico generalmente tiene una lista de verificación de idiomas que puede comparar con un currículum, pero no tiene forma de evaluar habilidades o proyectos.
El éxito en una entrevista real generalmente depende más de la suerte y las habilidades mínimas en un idioma que de la experiencia y la comprensión profunda de un idioma.
Por lo tanto, ser mediocre en muchos idiomas es mejor para la empleabilidad que ser un experto en unos pocos, a menos que uno solicite puestos de alto nivel.
fuente
Las opciones de programación análogas para el carpintero serían "¿Qué aplicación debo construir a continuación?" o "¿Qué sistema debo construir a continuación?" que son bastante válidos y están separados de un proyecto que realmente puede aplicarse casi universalmente. Podría tener un proyecto para cambiar mi dieta o perder 20 libras tan fácilmente como podría tener algo que requiera que se escriba un nuevo software para unir las cosas.
Sin embargo, para responder la pregunta, creo que la idea es que un lenguaje representa una herramienta en la caja de herramientas de esa persona que puede ser útil en un currículum. Algunas personas pueden optar por convertirse en programadores para pagar las facturas y, de ser así, pueden preguntar qué siguiente herramienta deberían agregar, que a menudo sería un lenguaje, pero hay otras posibilidades, como aprender sobre las metodologías de implementación, control de fuentes, pruebas y desarrollo para nombrar algunas otras áreas. Si un carpintero tuviera que revelar qué herramientas tenía, entonces podría tener una perspectiva similar. Sin embargo, existe un conjunto general de herramientas que se supone que la mayoría de los carpinteros tienen o tienen acceso para obtener si lo solicitan con bastante rapidez. ¿Alguna vez has visto cuántos tipos diferentes de sierras y martillos existen para que la gente los use?
fuente
Quizás se deba en parte a la mentalidad de los hackers, al menos para algunos de los programadores. Hacker se define en el archivo Jargon como
Entonces, para un alma hacker, se trata más de aprender y "jugar" con el proceso, los conceptos, las herramientas y sí, los lenguajes de creación de algo, que el producto final en sí. Más sobre el proceso en sí.
Es un esfuerzo constante por la próxima nueva cosa o desafío. El proyecto terminado pierde ese atractivo rápido. A veces (¿la mayoría de las veces?) Se superan los mayores desafíos creativos o técnicos antes de completar el proyecto. Muchos proyectos se abandonan cuando una mente hambrienta de nuevos desafíos mentales avanza.
Especialmente los hackers están interesados en nuevos puntos de vista, conceptos, abstracciones y formas de pensar, tipo de piratería mental:
fuente
Hay una variedad de lenguajes de mierda en uso común hoy en día: C, C ++, C #, Java, JavaScript, Python, Perl, Ruby, Visual Basic, etc. Los programadores compensan la inherente succión de estos idiomas al aprender y mezclar muchos de ellos. juntos.
Hay una pequeña comunidad conocida como la comunidad Lisp que está libre de la locura que impregna la informática moderna.
Como Lisp es un lenguaje de programación programable, puede expresar todas sus ideas en él sin tener que desviarse a otros lenguajes u otros formatos de datos como XML. Lisp se puede aplicar en todas partes, incluso hasta el nivel de hardware como vimos con las máquinas Lisp .
fuente
Porque aprender un nuevo lenguaje de programación es una gran inversión y a nadie le gusta hacer una mala inversión.
Aprender un nuevo lenguaje de programación no se trata de memorizar cómo escribir construcciones de bucles, declarar clases, importar otro módulo ...
Debe saber cómo escribir un código idiomático en ese idioma y este proceso realmente requiere una cantidad considerable de tiempo y dedicación. .
El tiempo es un recurso limitado, el esfuerzo es un recurso limitado, pero la distracción, el estrés diario, las facturas y los juegos deportivos de los domingos siempre están ahí y deben convivir.
Los programadores quieren invertir sabiamente.
fuente