¿Debo escribir mi propio código o usar bibliotecas?

Use las bibliotecas tanto como sea posible: nadie se adelanta reinventando la rueda innecesariamente.

Los mejores programadores se centran en hacer las cosas reutilizando la mayor cantidad de código posible, el suyo propio o el de otros.

De vez en cuando, solo para practicar o para mejorar sus habilidades, puede estudiar el código de la biblioteca o incluso recrearlo en proyectos de juguete / secundarios. Pero en el trabajo real, use bibliotecas.

Miles de horas hombre se dedican a la creación de bibliotecas, asegurando que estén libres de errores en todo tipo de condiciones, haciéndolos eficientes y agregando funciones a lo largo del tiempo. Incluso si recreas alguna funcionalidad de una biblioteca por tu cuenta, no podrás igualar todas esas cosas (o si lo haces, realmente estarás perdiendo mucho tiempo que deberías haber gastado en hacer las cosas).

No se preocupe por no necesitar todas las funciones de la biblioteca. La hinchazón adicional introducida por las funciones innecesarias no es, en la mayoría de los casos, un problema. (Recuerde que la optimización prematura es la raíz de todo mal). En el caso del código Javascript o las aplicaciones móviles (donde el tamaño del código realmente importa) existen programas que pueden eliminar automáticamente las funciones innecesarias para usted.

Sí, a corto plazo, parece más fácil escribir sus propias funciones en lugar de descubrir cómo funciona una biblioteca de terceros y configurar las cosas de manera adecuada para la biblioteca. Sin embargo, confía en mí, a largo plazo, ahorrarás tiempo al usar la biblioteca.

Así es como Josh Bloach explica por qué deberíamos preferir usar bibliotecas (tomando un ejemplo del número aleatorio de Java) en su libro Effective Java (Effective Java (2nd Edition): Joshua Bloch: 9780321356680: Amazon.com: Books)

No tiene que preocuparse por los detalles de cómo nextInt (int) hace su trabajo (aunque puede estudiar la documentación o el código fuente si tiene curiosidad). Un ingeniero senior con experiencia en algoritmos pasó mucho tiempo diseñando, implementando y probando este método y luego se lo mostró a varios expertos en el campo para asegurarse de que fuera correcto. Luego, la biblioteca fue probada, lanzada y utilizada ampliamente por millones de programadores durante la mayor parte de una década. Aún no se han encontrado fallas en el método, pero si se descubriera una falla, se solucionaría en la próxima versión.
Al usar una biblioteca estándar, aprovecha el conocimiento de los expertos que lo escribieron y la experiencia de quienes lo usaron antes que usted.

Una segunda ventaja de usar las bibliotecas es que no tiene que perder el tiempo escribiendo soluciones ad hoc a problemas que solo están marginalmente relacionados con su trabajo. Si eres como la mayoría de los programadores, preferirías dedicar tu tiempo a trabajar en tu aplicación que en la plomería subyacente.

Una tercera ventaja de usar bibliotecas estándar es que su rendimiento tiende a mejorar con el tiempo, sin ningún esfuerzo de su parte. Debido a que muchas personas los usan y porque se usan en puntos de referencia estándar de la industria, las organizaciones que suministran estas bibliotecas tienen un fuerte incentivo para que funcionen más rápido. Muchas de las bibliotecas de la plataforma Java se han reescrito a lo largo de los años, a veces repetidamente, lo que ha resultado en mejoras de rendimiento dramáticas.

Las bibliotecas también tienden a ganar nuevas funcionalidades con el tiempo. Si a una biblioteca le falta algo, la comunidad de desarrolladores lo dará a conocer y la funcionalidad faltante puede agregarse a una versión posterior. La plataforma Java siempre se ha desarrollado con aportes sustanciales de la comunidad.

Una ventaja final de usar las bibliotecas estándar es que coloca su código en la corriente principal. Tal código es más fácil de leer, mantener y reutilizar por la multitud de desarrolladores.

Para resumir, no reinventes la rueda. Si necesita hacer algo que parece que debería ser razonablemente común, es posible que ya haya una clase en las bibliotecas que haga lo que desea. Si lo hay, úselo; si no lo sabes, verifica.

En términos generales, es probable que el código de la biblioteca sea mejor que el código que usted mismo escribiría y es probable que mejore con el tiempo. Esto no refleja tus habilidades como programador. Las economías de escala dictan que el código de la biblioteca recibe mucha más atención de la que la mayoría de los desarrolladores podrían dedicar a la misma funcionalidad.

> Quiero desarrollar mis habilidades de codificación (C / C ++).

Para mejorar sus habilidades de codificación, lea mucho código. Si tiene acceso al código fuente de la biblioteca, use la biblioteca y lea el código fuente para asegurarse de comprenderlo. Estoy constantemente investigando el código de los demás, en parte para asegurarme de que lo estoy usando bien, y en parte debido a mi curiosidad. Al hacerlo, me he encontrado con una variedad de estilos de API y codificación, patrones y trucos, etc. Todo esto ha sido muy útil para escribir mi propio código y revisar el código de otros.

> Mientras estoy en el trabajo, si encuentro algunas bibliotecas, ¿debería usarlas directamente o escribir mi propia versión de programas más pequeños (no necesito todas las funciones en la biblioteca)?

Está bien elegir y elegir funciones de las bibliotecas. Muy raramente he usado todas las funciones en una biblioteca en un solo programa. A veces usaré una biblioteca solo para una sola función.

>
¿Qué tipo de algoritmos debo escribir yo mismo y para qué debo confiar en el trabajo realizado por otros?

Si puede usar un algoritmo existente, hágalo. No implemente su propia versión de un árbol rojo-negro (a menos, por supuesto, que no tenga otra opción). Pero asegúrese de comprender los algoritmos y las estructuras de datos que está utilizando. Si el código fuente no está disponible, lea detenidamente la documentación. Seguro que encontrarás peculiaridades de diseño o implementación. (Tome el vector como ejemplo).

Como eres un programador junior, te recomendaría que no uses ninguna biblioteca a menos que no te interese la tarea. Afrontar el problema sería el mejor enfoque para el aprendizaje.

No dejes que las bibliotecas te oculten conocimiento. No seas perezoso Escribe tu propio código. Arregla sus errores. Ser creativo. Vas a rockear.

El código que se basa en bibliotecas externas debe incluirse en su propio código. De esa manera, puede eliminar la biblioteca cuando sea antigua o necesite otra biblioteca.

Si necesita cavar un hoyo, ¿preferiría diseñar y construir su propia pala o comprar una?

Todo lo que no ve un usuario final debe ser una biblioteca. Período.

More Interesting

¿Puedo convertirme en ingeniero de software sin una licenciatura de CS? Estoy muy interesado en AI y VR ahora.

¿Qué tipo de trabajos hacen los inmigrantes en los Estados Unidos y cuánto ganan?

¿Cuáles son las oportunidades de carrera después de hacer los sistemas de M.Tech in Control en una de las universidades de renombre? (¿Estrictamente el lado central pero no en TI)?

¿Cuáles son las características de un buen terapeuta?

Cómo conseguir un trabajo en Arabia Saudita en el sector de tuberías

Cómo obtener buenas pasantías de verano en las escuelas de MBA si tienes experiencia en ingeniería y eres más nuevo

¿Hay alguna necesidad de más ingenieros informáticos en la India? ¿Qué pasa con otras partes del mundo?

¿Cuáles son las principales áreas de investigación en ingeniería química?

Mi antiguo jefe (que sé que es un imbécil de microgestión) ha estado publicando la misma lista de trabajos de vez en cuando desde que tengo memoria. Necesito desesperadamente un trabajo. ¿Debo tragarme mi orgullo y solicitar este trabajo?

¿Qué tres cosas desearía saber el día 1 de la escuela de negocios sobre cómo aprovechar al máximo su experiencia, tanto profesional como personalmente?

Si las carreras de informática / ingeniería y tecnología se están volviendo más competitivas y populares, ¿por qué no hemos visto el surgimiento de una nueva compañía tecnológica?

He convertido 1,000 fichas de juego en más de 80,000 en 3 meses uniendo mesas como short stack. También siempre me ubico bien en los torneos SnG. ¿Estoy listo para convertirme en profesional?

¿Cómo se debe decidir qué especialización se debe elegir para MBA?

¿Cuál es el proceso para convertirse en un examinador acreditado de IELTS? ¿Vale la pena?

¿Android ofrece una carrera estable en la India?