¿Por qué siempre es "qué idioma debo aprender a continuación" en lugar de "qué proyecto debo abordar a continuación"? [cerrado]

14

¿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

MikeRand
fuente
55
Esto parece un poco ... desagradable, para ser honesto. ¿Quizás podrías eliminar las insinuaciones y dejar solo tu pregunta?
Anon
44
Creo que no coinciden los pasos cronológicamente. Lo más probable es que el carpintero ya sepa cómo usar esas herramientas, si sabe cómo enmarcar una puerta. Pero anteriormente en su vida, él también siguió el camino de qué herramienta debería investigar a continuación.
CrazyPenguin
Comentario justo sobre: ​​ranty ... iba por entretenimiento. Disculpas si aparecieron como deshonestas.
MikeRand
44
La comparación del lenguaje de programación con la herramienta manual no es una muy buena comparación. Parece tener sentido superficialmente, pero se desmorona rápidamente y termina siendo más dañino que útil. También demasiadas personas lo tratan como si fuera una verdad incuestionable. Este tipo hace un trabajo decente describiendo algunas razones por las que no funciona. journal.dedasys.com/2007/12/12/…
Nick Knowlson
Me gusta esta pregunta ...!
Michael K

Respuestas:

6

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.

mipadi
fuente
6
  • 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.

Uri
fuente
Lamentablemente, para pasar la pantalla de recursos humanos, debe proporcionar la lista de palabras de moda del día. El proceso de evaluación de recursos humanos es un filtro de curso que dejará atrás a muchos candidatos calificados.
Jeff
1
@Jeff, por lo que escuché sobre la detección de recursos humanos, todo lo que quieren es reducir la cantidad de currículums a un nivel manejable y aplicar muchos filtros arbitrarios, como "bin si hay más de 2 páginas".
Dominique McDonnell
2

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?

JB King
fuente
1

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

"Una persona que disfruta explorando los detalles de los sistemas programables y cómo ampliar sus capacidades, a diferencia de la mayoría de los usuarios, que prefieren aprender solo el mínimo necesario".

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:

"No vale la pena conocer un lenguaje que no afecta la forma en que piensas sobre la programación". - Alan Perlis

Maglob
fuente
0

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 .

jhuni
fuente
Debe conocer tantos idiomas diferentes como sea posible para codificar en Lisp de manera eficiente. De lo contrario, terminará reinventando la rueda en lugar de simplemente robar conceptos e ideas apropiadas de los otros idiomas e implementarlos sobre Lisp.
SK-logic
De acuerdo con su sentimiento sobre el poder de Lisp, pero no está de acuerdo con que no sea útil aprender otros idiomas: la mayoría de los trucos que uso en Lisp explotan activamente lo que aprendí de otros idiomas (ya sea como patrones o antipatrones ...)
mikera
0

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.

Quirón
fuente