¿Por qué los programadores novatos parecen alejarse de las bibliotecas? [cerrado]


He notado muchas preguntas aquí de nuevos programadores que se pueden resolver usando bibliotecas. Cuando se sugiere una biblioteca, a menudo responden "No quiero usar la biblioteca X" ¿Es la curva de aprendizaje? o ? ¡Solo curiosidad!

Author: Byron Whitlock, 2009-08-28

30 answers

Muchos programadores nuevos siguen trabajando a un nivel muy bajo de abstracción, aprendiendo el oficio. Eso es algo por lo que todo el mundo tiene que pasar. Se necesita un tiempo para "subir la pila" por así decirlo.

Una vez que los programadores se dan cuenta de que pasan la mayor parte del tiempo resolviendo los mismos problemas que alguien ya lo hizo, y el objetivo es darse cuenta del "valor comercial", entonces realmente pueden apreciar el valor que una buena biblioteca aporta.

 106
Author: Nader Shirazie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-03 20:46:02

Cuando todavía estás aprendiendo los entresijos de un nuevo idioma, también tener que aprender a usar una biblioteca de terceros puede parecer demasiado trabajo. Además, las bibliotecas tienden a estar mal documentadas, o al menos tienen documentación que parece totalmente opaca para un nuevo programador.

Por lo tanto, frente a tratar de resolver el problema X, decir "usar una biblioteca" puede sonar muy parecido a "resolver el problema Y LUEGO el problema x".

(También, sus profesores les dijeron que no lo hicieran. Me las arreglé para llegar hasta el final aunque mi licenciatura en C++ sin aprender el STL existió. Vaya, ESO cocinó mis fideos.)

 34
Author: Electrons_Ahoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:48:41

Algunas personas, cuando se enfrentan con un problema, pensar " Lo sé, voy a usar un biblioteca."Ahora tienen dos problema.

En serio - esta es una manera razonable para un novato, ya abrumado por el nuevo lenguaje, entorno de programación, paradigmas, pulsaciones de teclas, etc. para reaccionar a la sugerencia de usar una biblioteca. Si tienes una solución, pero no está funcionando, hay muchas fuentes potenciales de error; clasificarlas es un desafío. Agregar a ellos puede parecer irracional.

"Usar una biblioteca" significa encontrar la biblioteca, descargarla, instalarla en su proyecto y llamar a la función necesaria. No es difícil, si está acostumbrado (y no hay políticas corporativas en contra, y tiene razones para confiar en el proveedor, y la biblioteca en sí tiene dependencias mínimas, etc.).). Pero si todo es nuevo para usted, cuando hace una pregunta de programación y obtiene una respuesta de configuración del sistema , puede parecer inútil (incluso si no lo es, en hecho).

 22
Author: Carl Manaster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-28 00:07:25

Casi siempre es porque su profesor les ha dicho que no pueden.

A veces es solo porque quieren aprenderlo ellos mismos, pero yo diría que es raro.

 17
Author: Noon Silk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:43:02

Es la curva de aprendizaje.

 13
Author: andandandand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:42:36

Usar bibliotecas es probablemente una de las peores cosas que un programador de aprendizaje puede hacer. En lugar de aprender a codificar, están aprendiendo a usar API específicas que otras personas implementaron. No estoy diciendo que cada programador tenga que entender cada cosa que usa, pero los programadores que conocen los entresijos de una computadora (lógica digital, ensamblar códigos operativos, etc.) generalmente tienen una ventaja sobre las personas que han comenzado con algo como Java Swing y simplemente están lanzando juntas bibliotecas.

En producción, esto es un asunto diferente por supuesto. Pero creo que el mejor curso de la educación es "hacer todo" una vez, al menos. Escribir mi propio marco de aplicaciones web desde cero realmente mejoró mis habilidades de programación y habilidades abstractas. No significa que vaya a usar ese framework si alguien me contrata para construir una aplicación, pero conozco las fortalezas, debilidades y razones detrás de las cosas que usan los frameworks "gigantes", y puede ayudarme elija un marco particular para una situación particular.

 10
Author: Lotus Notes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-05 06:23:07

Recuerdo huyendo de varias bibliotecas simplemente porque quería ver si podía crear mi propio algoritmo. No quería rendirme y dejar que alguien hiciera el trabajo por mí, sino que quería aprender de mis errores. Una vez que se me ocurrió una solución con la que estaba contento, busqué en las bibliotecas.

Así que para mí era simplemente querer ver si podía hacerlo.

 9
Author: Nope,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-28 00:56:39

Siempre tengo este impulso de hacerlo yo mismo, pero a veces puedo ver mis propias limitaciones. Recientemente he descargado una biblioteca para crear documentos PDF, pero esa es prácticamente la única vez que puedo recordar.

Al menos para mí, (tratar de) hacer las cosas yo mismo, es mi forma de aprender.

Mi impresión es que muchos programadores novatos no lo considerarían su propio trabajo si utilizaran bibliotecas elses de alguien.

 8
Author: stigok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:57:00

No creo que esto sea necesariamente algo malo. Usar bibliotecas es genial; ahorra tiempo, esfuerzo, errores, etc. Sin embargo, se aprende muy poco en el proceso, y para los nuevos programadores, el aprendizaje es el objetivo. Para responder a la pregunta, creo que tienden a ser tímidos de las bibliotecas simplemente porque no están acostumbrados a usarlas y quizás no saben que existen.

 7
Author: Ed S.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:47:16

Para muchas bibliotecas mal documentadas que se implementan libremente o en lenguajes que no le permiten controlar muy bien la contención y la visibilidad, puede ser bastante difícil adivinar cómo se supone que debe usarse la biblioteca.

Después de usarlo por un tiempo, te has acostumbrado a las peculiaridades o a leer otro código fuente que te enseñó de la manera correcta; pero hasta entonces puede ser bastante irritante usar una biblioteca mal diseñada. (o incluso un bien diseñado uno que no está terriblemente bien documentado).

Si no tiene el código fuente de la biblioteca, ese es otro problema: no tiene control sobre la capacidad de mantener su programa funcionando. Esto es mucho más raro en estos días, pero todavía sucede en el caso de una biblioteca comprada.

 7
Author: Bill K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:49:04

La mayoría de los puntos cubiertos (para mí el principal es la curva de aprendizaje) , pero otro creo que juega un papel:

Porque aprender sobre una biblioteca es menos emocionante que codificar la misma funcionalidad.

 6
Author: Jon Hopkins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-28 09:57:54

Más bibliotecas = menos horas facturables.

 5
Author: Seth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-28 00:15:12

Creo que hay mucho tiempo que necesita ser invertido en entender el propósito de la biblioteca - sí, una curva de aprendizaje, pero es más que los programadores novatos probablemente no saben lo que necesitan hasta que tienen mucha más experiencia.

 4
Author: Craig Shearer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:51:20

Porque es divertido.

 4
Author: Breton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-28 00:38:36

Porque parte de madurar como desarrollador es aprender a identificar rápidamente problemas que pueden ser resueltos por una biblioteca o solución existente y que necesitan atención personalizada.

 3
Author: Rex M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:48:58

Cuando estás tratando de aprender a hacer cosas, en cualquier momento algo se logra "mágicamente" llamando a AwesomeClass.doAwesomeStuff (), terminas regalando una porción de control. Cuando eres "nuevo" y no sabes lo que estás regalando o por qué puede ser inquietante. Este fue mi golpe principal contra los rieles cuando lo estaba aprendiendo por primera vez. Tantas cosas simplemente "funcionaron" y no sabía por qué sin excavar a través de un montón de Rails fuente (que generalmente no tenía tiempo para hacer).

At al menos, esa es mi opinión.

 3
Author: MattC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:56:15

La misma razón por la que los desarrolladores más experimentados lo hacen -

Porque a menudo puede ser tan difícil aprender a usar una biblioteca como escribir la parte de ella que usted mismo necesita. Y al menos entonces puedes entender cómo funciona cuando no hace lo que esperas.

Un desarrollador experimentado solo tiene experiencia en entender cómo usar bibliotecas, por lo que es más probable que lo considere. Un desarrollador inexperto es una cosa más que aprender...

 3
Author: jcoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-28 10:05:38

¡Soy programador, no psicólogo! :)

Fue hace mucho, mucho tiempo para mí, pero fue porque quería aprender y experimentar. No quería usar algo que no entendía, así que si pensaba que no entendía la biblioteca y no podía programarla yo mismo, traté de no usarla. Podría haber habido un poco de miedo también; la programación le da una sensación de control, y el uso de una biblioteca es como regalar este control.

 3
Author: Juice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-03 20:07:23

Respuesta de un novato - "No estoy seguro de cómo usar las bibliotecas o incluso cómo acceder a ellas o cómo funciona"

 3
Author: m0g,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-08 23:52:10

Las bibliotecas a menudo vienen con la sobrecarga de aprender alguna API y su paradigma. Se puede complicar bastante rápido, y podría entender fácilmente que los principiantes preferirían algo un poco más en su zona de confort. Desde mi experiencia, encontré que la mayoría de las bibliotecas y frameworks parecen hacer un gran trabajo abstrayendo alguna rutina tediosa, pero cuando necesito ampliar esta funcionalidad o usarla de una manera que no está prevista, puede ser difícil.

Creo que es una de esas cosas donde "la práctica hace al maestro".

 2
Author: Rev316,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-02 16:22:33

Bueno, el propósito del novato podría ser más resolver el problema que implementar una solución. Tal vez lo que realmente quieren hacer es averiguar cómo para resolver el problema. Quiero decir, si todavía están muy en la fase de aprendizaje, es muy posible que no quieran respuestas fáciles entregadas a ellos.

 2
Author: BigBeagle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-03 20:43:44

Creo que los profesores quieren que se adhieran a lo básico. Cuando me gradué de la escuela de licenciatura, sabía C++, Java y algunos otros lenguajes, pero no tenía idea de las bibliotecas y marcos que se utilizan en las empresas. Era como sabes java..Sí..puedes escribir un servlet..no.

 1
Author: Perpetualcoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:48:25

Para los demonios de velocidad rara vez usan bibliotecas de terceros y los nuevos programadores generalmente buscan exprimir cada vez la velocidad de su código. Creo que si no tienen control sobre su código no pueden obtener el rendimiento que están buscando. Al menos por eso evité las bibliotecas cuando empecé a programar.

Recuerdo que programé mi primer DAL y evité todas las otras bibliotecas gratuitas en la web porque quería que mi código funcionara a máxima velocidad. Más tarde, descubrió que por lo general no es el código que es el bttleneck es en realidad la base de datos.

 1
Author: user161433,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:52:39

Algunas bibliotecas de código abierto tienen fallos o no son tan eficientes como otras.

 1
Author: codingbear,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-27 23:58:56

En mi opinión, otro factor es que las bibliotecas adicionales agregan complejidad. Los programas tienden a ser más difíciles de entender, más difíciles de mantener y más defectuosos cuando se vuelven más complejos. Creo que lo que hace que los programadores especialmente nuevos se alejen de las bibliotecas es que agregar código de biblioteca aumenta la complejidad más que agregar su propio código, simplemente porque entender cómo funciona la biblioteca todavía está fuera de su alcance. Así que parece ser un problema de habilidad y psicología.

 1
Author: Kage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-02 12:33:03

Creo que las cuestiones más fundamentales pueden ser reconocidas como un elemento disuasorio para el uso de las bibliotecas existentes.

  1. Parte de esto como "programadores novatos" es la falta de exposición a las bibliotecas. Si no sabes que existen, ¿cómo sabes usarlas?
  2. Número De Opciones Disponibles. Digamos que estoy realmente interesado en aprender más sobre MVC, pero si tengo que elegir entre cakephp y smarty y zend y ... bueno, puede ver rápidamente el trabajo de los engranajes para descubrir una manera de lograr el objetivo sin invertir el tiempo experimentando. Eche un vistazo a Freshmeat o SourceForge para obtener una mejor comprensión de la desalentadora selección de bibliotecas disponibles.
  3. Soporte cuestionable combinado con documentación incompleta/desactualizada para las bibliotecas. ¿Quiero usar esta herramienta que puede que ya no funcione o que pueda ser abandonada en el futuro? Es probable que un proyecto evolucione, y también lo hará para el proyecto de una biblioteca. ¿Durará su utilidad la vida de mi proyecto o seré requerido para volver a hacer este trabajo de nuevo?
 1
Author: Joshua K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-02 13:50:11

Usar una biblioteca requiere entender el diseño relativamente complejo de la biblioteca, algo que los nuevos programadores podrían no haber dominado porque todo lo que han escrito es código simple/procedimental/de propósito único. Por ejemplo, para un programador experimentado, los patrones de diseño estándar como el método de plantilla, el observador y el comando parecen bastante obvios, pero para un novato todo parece magia y/o complejidad innecesaria. Para mí, el punto de inflexión fue cuando llegué a ser lo suficientemente bueno para grok diseña patrones y escribe un código básico reutilizable.

 1
Author: dsimcha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-18 05:07:57

Ha pasado mucho tiempo, pero cuando salí de la universidad, no sabía nada de bibliotecas. Esto fue en los días de los mainframes y mini-ordenadores. Nuestra universidad tenía un VAX y los gerentes estaban paranoicos sobre los estudiantes hackeando el sistema, así que ni siquiera nos permitieron ver los manuales de la biblioteca. Así que, cuando salí de la universidad, ni siquiera pensé en bibliotecas disponibles.

 1
Author: GreenMatt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-03 20:22:42

Estoy seguro de que hay muchas razones por las que el novato no quiere usar la nueva biblioteca. Pero, ¿no sería esta una buena oportunidad, si tiene tiempo suficiente, para mostrarles cuál es la ventaja de usar la biblioteca? Con las personas con las que trabajo, generalmente proporcionaré un ejemplo de por qué algo es mejor que su enfoque. Les ayuda a aprender y madurar como programador.

 1
Author: Ascalonian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-03 20:48:23

Sucede que noobs usan Libs sin saber, pero cuando deben importar/agregar una que está bastante menos documentada, hay un temor de desconocimiento. Eso sucede principalmente para langs compilados!

En el IRT interpretado, (o compilado), principalmente cuando hay una consola, tal temor es casi inexistente; ya que puede requerir y ver si falla, llame a un método y vea qué devuelve.

Las Consolas son herramientas de valentía !

 1
Author: Fabiano Soriani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-03 21:03:16