Con una base sólida en Python, ¿sería más importante aprender C o estructuras de datos y algoritmos primero?

Yo diría que las estructuras de datos y los algoritmos juegan un papel importante, no es que lo usarías todos los días, sino que necesitas descifrar todas las rondas y sí, te ayuda a construir las bases de la programación y el diseño de sistemas.

En 2013, cuando comencé, recibí una llamada de Amazon y recién salí de la universidad, pensé que sabía cosas y seguí adelante, pero ni siquiera podía calificar para la segunda ronda. Pasé días tras días antes y antes de la oficina leyendo, entendiendo la implementación de estructuras y algoritmos de datos y Sus aplicaciones de la vida real. Me ayudó. Me convertí en un mejor ingeniero de software con un conjunto de habilidades que requiere años para dominar pero lo hice rápido. Por lo tanto, te pone por delante de tu tiempo si lo aprendes.

Puede elegir cualquier lenguaje de programación después de eso.

Más tarde recibí llamadas de entrevistas de lugares en los que siempre soñé con Google, Microsoft, Amazon, JP Morgan, etc., etc. Algunos de los que logré, otros no. El punto es que con cada falla aprendí cosas y compartí lo mismo. Así sucedió recientemente, asistí a uno de los mencionados anteriormente y borré todas las rondas e incluso me sorprendió ver los cambios entre mí de 2013 vs 2016.

Si está buscando comenzar un trabajo, lo más importante sería tener una base sólida en el desarrollo de software. Todas las herramientas que mencionas (y son herramientas) son útiles, pero si en realidad no tienes ninguna experiencia real en el desarrollo de software, todas las herramientas del mundo no importan.

Hay una gran diferencia entre poder escribir algunos pequeños programas para resolver problemas o crearlos como parte de un tutorial, y desarrollar una aplicación completa. Todos los que salen de la escuela probablemente hayan aprendido un idioma o dos, hayan estado expuestos a estructuras de datos y algoritmos, etc. Lo que pocos de ellos tienen es un conocimiento real aplicado.

Mi consejo para cualquiera que intente aprender programación es que presente proyectos que le interesen. Cree una visión de lo que desea, intente diseñar un programa para hacer realidad esa visión, y luego intente implementar, probar y depurar, y mantenerla. Agregue nuevas funciones, corrija errores, etc. Si tiene más sentido hacer el proyecto en C que en Python, entonces tiene una razón real para aprender C. Aprenda qué estructuras de datos son apropiadas para su programa. Descubra los algoritmos que necesita, aunque es muy probable que descubra que alguien ya los ha implementado; aprenda a usar las bibliotecas existentes cuando hagan el trabajo, en lugar de perder el tiempo haciendo las suyas propias. Puede aprender las cosas que desea aprender y aplicarlas de inmediato, lo que ayudará a que se mantengan.

Primero debe aprender las estructuras de datos y los algoritmos. Es una progresión más natural después de aprender un lenguaje de programación y los conceptos que aprende al estudiar estructuras de datos y algoritmos son más generalizables que aprender C.

Además, la mayoría de las aplicaciones para C es principalmente para programación de bajo nivel y, en mi opinión, es mucho más difícil de aprender que las estructuras de datos y algoritmos de nivel superior. C también es un lenguaje con muchas trampas y puede ser difícil de depurar (por ejemplo, muchas veces, su programa simplemente fallará con una falla de segmentación, sin ninguna indicación de dónde está el error). Aprender estructuras de datos y algoritmos a través de un lenguaje de nivel superior como Java o C ++ es una mejor opción en mi opinión (y menos dolorosa).

Es más importante aprender programación (estructuras de datos y cómo desarrollar algoritmos) antes de aprender un lenguaje de programación.

En cuanto a los marcos, cuando todavía estaba contratando (ahora estoy retirado), si me entregaste algo que usara un marco, profundizaría en los niveles inferiores del marco y te pediría que explicaras el funcionamiento de algunos función de nivel en el marco. Si no pudiera, le prometo enviarle su último cheque, pero fue despedido en el acto. (Si conocía el marco lo suficientemente bien como para darme una respuesta razonable, estaba bien, no me importa de dónde obtiene [legalmente] su código, siempre que lo comprenda todo). Entonces, si realmente aprende Django a sus niveles más bajos, anímate. Entonces, si algo explota, y resulta ser debido a algunos datos que alimentó a un nivel bajo en Django, podrá depurarlo y corregirlo. Solo decir “debe haber algo mal en Django” no hará que el producto salga por la puerta.

Pero primero aprende programación. (Y, si desea hacerlo de la manera correcta, comience en Teach Yourself Computer Science. Sí, puede llevar uno o dos años si se realiza correctamente, pero la programación no es algo que pueda aprender durante un fin de semana).

A2A

¿Qué tal una mezcla? Aprender algoritmos y estructuras de datos con la ayuda de C? Me parece legítimo.

More Interesting

Algoritmos: ¿Cómo decide si usar BFS o DFS para un problema en particular?

¿Cuál es la complejidad temporal de la solución del problema del vendedor ambulante mediante la optimización de colonias de hormigas?

¿De dónde debería comenzar a aprender el algoritmo? ¿Debería unirme a uno de los MOOC disponibles o leer libros como 'Introducción a los algoritmos'?

¿Puedo adoptar un enfoque de alto nivel para aprender Machine Learning sin molestar a los matemáticos detrás de los algoritmos de ML?

¿Son los algoritmos de big data de caja negra una instancia de historia que se repite? ¿Qué está haciendo la comunidad de código abierto para crear algoritmos de big data transparentes y precisos?

Si el tamaño de una matriz es 101 y el rango de números es de 0 a 99, solo un número viene 2 veces. ¿Cuál es ese número?

Cómo revertir un número promedio de números sin los números

¿Cuál es el mejor algoritmo de programación que hayas creado?

Cómo evitar los caracteres repetitivos de una cadena

¿Cuál es la diferencia entre los algoritmos de Dijkstra, Kruskal y Prim?

¿Cuál sería el plan de trabajo general o el calendario para as en programación competitiva?

¿Cómo determinan los algoritmos de creación de mercado qué tan agresivamente deberían salir de las posiciones?

Cómo insertar un nuevo nodo en un árbol binario (no buscar árbol binario)

¿Cómo asigno enteros de o a n en una matriz bidimensional en Java?

¿Por qué ocurre el peor de los casos en Max-Heapify cuando la fila final del árbol está medio llena?