¿Es imprescindible aprender estructuras de datos y algoritmos si quiero convertirme en desarrollador de backend?

Si y no.

Personalmente, creo que el énfasis en lo básico está fuera de lugar. Sí, necesita conocer los conceptos básicos: cuáles son y cuándo usarlos. Pero realmente no necesita poder recrear todos los diferentes tipos de clases, por ejemplo. Es por eso que tenemos libros de referencia y bibliotecas. Principalmente, tienes que saber qué buscar y dónde.

Lo que realmente necesita es conocimiento de la materia: cómo encontrar, comprender, adaptar y usar algoritmos específicos para el problema en cuestión (por ejemplo, programar entregas, volar un avión, etc.). Y sí, ahí es donde a veces tienes que desarrollar nuevos algoritmos y heurísticas (¡y necesitas saber la diferencia!). Si está haciendo ciencia de datos, por ejemplo, sus algoritmos y heurística provienen de su conocimiento de matemáticas, no de ingeniería de software.

En general, para cualquier cosa complicada, debe prestar mucha más atención a la estructura del SOFTWARE (arquitectura): flujos de datos y transformaciones, y flujos de control. Luego coloca estructuras y funciones de datos (algoritmos) en los flujos.

No, en absoluto.

Un desarrollador de backend es algo muy específico.

No eres un investigador informático. Usted escribe código para ganarse la vida que clasifica el lado del servidor de un sistema.

Muchos de estos sistemas le permitirán acceder a una base de datos SQL o NoSQL. Aquí, la base de datos contiene todos los algoritmos elegantes. Todo lo que necesitará saber sobre un árbol B será la palabra clave SQL ‘INDICE ON’.

Otros sistemas operarán con puntos finales web REST. Nuevamente, no hay mucho en estructuras de datos allí.

De vez en cuando, estará en el equipo central de “That Big System”, que (por ejemplo) decide qué fuente de noticias enviar a cada uno de sus mil millones de usuarios, dadas sus preferencias de interés y la configuración de privacidad de las publicaciones de origen.

Este es un problema complicado que probablemente requiera un algoritmo no estándar, que necesitará una estructura de datos personalizada para manejarlo.

Alguien, no necesariamente usted, lo escribirá. Luego lo envolverá en una API que se parece un poco a esto

Publicaciones getNewsfeedFor (UserId userId);

El código del cliente lo llamará. No hay mucha estructura de datos y algoritmo en el cliente.

Realmente siento que ha surgido un poco de esnobismo en torno a este conocimiento. Los grados de informática lo adoran. El código comercial lo usa muy raramente, una vez, si es que lo hace.

Cualquier idea de ser ‘ese tipo que pasa de un problema de estructura de datos a otro’ me parece fantasiosa.

Entonces, mi solución es estar al tanto de ellos, saber cómo buscarlos en Google, poder decidir si llamar a .sort () o .filter (), etc. Generalmente para ser un usuario de estas cosas, y en el mejor de los casos, un creador renuente de ellas.

Es posible que nunca trabajes en el equipo principal de Facebook News Feed. Y eso está bien para un desarrollador de back-end. Hay mucho que se puede hacer con los sistemas existentes.

La forma en que lo veo es que si no conoce las estructuras de datos y los algoritmos, es mucho más difícil encontrar una solución si requiere estas técnicas. Las estructuras y algoritmos de datos comunes son métodos probados con bibliotecas disponibles en muchos idiomas que puede utilizar fácilmente si sabe lo que está haciendo.

Entonces, en cierto modo, debe conocer las estructuras de datos y los algoritmos. ¿Puedes sobrevivir como ingeniero de software? Tal vez. ¿Puede sobrevivir sin conocer las estructuras de datos y los algoritmos para obtener un trabajo en una empresa establecida? Tal vez no.

Una pregunta es si eres músico, ¿puedes componer buena música en un instrumento musical sin conocer los acordes? Probablemente no, ¿verdad? Del mismo modo, puede pensar en aprender estructuras de datos y algoritmos para implementar software, es como aprender acordes para componer su música.

Si desea ser un desarrollador de software de cualquier tipo, debe conocer las estructuras de datos y los algoritmos. El purista en mí dice que si no estás utilizando estructuras de datos y algoritmos, en realidad no estás haciendo desarrollo de software. No tiene que conocer los nombres clásicos para ellos, pero si no los está utilizando, no se trata de desarrollo de software.

Bueno, no voy a contratar a un desarrollador de back-end que no tenga una comprensión razonable de las estructuras de datos y algoritmos. Simplemente no. Quiero poder saber que esta persona obtiene que escanear una lista llevará más tiempo que escanear el árbol de tamaño equivalente, por ejemplo.

Dicho esto, no estoy buscando a esta persona que haya memorizado varios algoritmos de búsqueda y clasificación, que haya escrito artículos académicos sobre ellos, o que sea un experto completo en algoritmos y estructura de datos. Tenemos libros para eso.

Entonces sí, necesita aprender esto, a menos que solo quiera ser un jugador de código que haga lo que otros les dicen que hagan, no haga un trabajo de diseño interesante y que no pueda crecer y expandir sus habilidades.

No conocer las estructuras de datos y los algoritmos es como un mecánico de automóviles que conoce llaves y destornilladores, pero no tiene idea de cómo funciona el sistema de encendido o la transmisión. Este mecánico no necesita conocer la física del fuego o la metalurgia de los engranajes de transmisión, pero debe tener una idea razonable de lo que está sucediendo.

creo que es …

Algoritmos + Estructuras de datos = Programas – Wikipedia

Algoritmos + Estructuras de datos = Programas (Serie Prentice-Hall en computación automática): Niklaus Wirth: 9780130224187: Amazon.com: Libros

Si.

Los desarrolladores de back-end pasan todo su tiempo escribiendo algoritmos y utilizando las estructuras de datos correctas.

Son parte integral del diseño del sistema de software y son, literalmente, lo que se le pagará.

La respuesta es no. Como hay muchas herramientas disponibles en el mercado y con la ayuda de estas herramientas, puede desarrollar fácilmente un software.

Pero, por otro lado, no podrá desarrollar un software que tenga un mejor rendimiento. Uso correcto de las estructuras de datos que puedan requerir y el uso correcto de los algoritmos correctos donde lo requiera sin la ayuda de nadie.

Pero estoy diciendo que puedes desarrollar backend sin entrar en muchos detalles de estructuras de datos y algoritmos