¿Qué significa si un futuro programador apesta u odia los algoritmos de aprendizaje y las estructuras de datos?

Hermano, aquí tienes un gran problema que necesita ser resuelto bastante rápido.

Comencemos con un ejemplo. Hace unos días, uno de mis mayores (supongamos que A) en la universidad me habló de un hecho. Otro senior (supongamos B) que está bastante experimentado en el desarrollo de aplicaciones se atascó en un código que fallaba cada vez que se ejecutaba en una máquina virtual. No sabía por qué, aunque comprobó posibles errores y el código parecía estar limpio. Entonces, B le pidió ayuda a A. A verificó el código completo y no cambió ningún algoritmo. En cambio, simplemente reemplazó la versión recursiva de un algoritmo con una versión iterativa de ese algoritmo. El código funcionó a las mil maravillas. FYI, esa era una aplicación basada en la web también en Android.

Entonces, ¿qué nos enseña la historia anterior? Nos enseña que a pesar de hacer todo bien, las cosas podrían colapsar si no usas las herramientas adecuadas. No puede usar el ordenamiento de burbujas cuando tiene 1 millón de elementos para ordenar. Tienes que usar quickSort. No puede usar una matriz para ordenar datos que tienen relación padre-hijo o vinculados de alguna otra manera. Necesitas arboles. Si desea mantener los mismos datos jerárquicos ordenados, necesita BST. Simplemente no puede declarar una gran matriz y ordenar los datos allí.

Centrémonos en otro punto importante. Cada estudiante universitario de CS tuvo que pasar por esos cursos de Estructura de datos y Algoritmo en la universidad. Y sinceramente, a la mayoría de ellos no les gustó. Pero esas son las estructuras comunes que se implementan en el código de la mayoría de los programadores de todo el mundo. Imagine que lo contrata una empresa que desarrolla aplicaciones web. Ahora se le pide que complete la publicación de un ingeniero de software en particular que escribió el código fuente de “whateverApp 1.0”. Ahora la empresa quiere producir la versión 1.1 y debe modificar cierta parte del código. Abre el código y ve que el código está escrito de una manera que implementa el árbol de búsqueda Binary y no tiene idea de qué es WTH. Entonces, ¿qué vas a hacer entonces? Dirígete a tu jefe y dile “Hola topDog, no me cago en la mierda de esos códigos. Puede ser que traiga a alguien más ahí abajo”. O llamarás al desarrollador anterior y le dirás: “Hola, soy el chico nuevo en tu trabajo anterior y un poco atascado con tu código. ¿Puedes echarme una mano? “-_-

Pasemos a la siguiente parte de su pregunta. ¿Qué “debería” hacer para deshacerse de esta situación? Bien, en mi caso, sigo un algoritmo.

1. Mire muchas simulaciones para entender cómo funcionan las cosas. Si está estudiando árboles, debe observar las simulaciones de todos los algoritmos de recorrido y algoritmos de búsqueda. Youtube acaba de cargarse con ellos. Elige el que prefieras y míralo varias veces hasta que realmente puedas hacerlo sin mirar el video.

2. Ahora construya árboles a partir de su propio conjunto de datos. Solo al azar. Luego realice las habilidades que ha aprendido en los árboles. Si tienes un buen amigo, entonces ve a él y pídele que realice esas operaciones en los árboles, luego compara tu respuesta con él. Si esas respuestas coinciden, ya está todo listo. de lo contrario, regrese al paso 1.

3. Ahora comience a codificarlos. Codifique cada uno de los algoritmos en su propia mano. Si está atascado, vea los códigos de Internet, tome su concepto, pero no los copie. Escribe tus códigos a tu manera.

4. Ya está todo listo. Mantenga la lista de algoritmos en su mente. Siempre que se enfrente a un problema, repita mentalmente la lista de algoritmos hasta que la descripción del problema coincida con uno de los algoritmos que conoce. De esa manera, no tiene que tropezar con una estructura de datos y preguntarse qué hacer o cómo empiezo a resolver.

Feliz codificación.

No lo veo como un gran problema. Si se concentra solo en el desarrollo web, probablemente nunca necesitará saber qué estructuras de datos o algoritmos existen o cómo funcionan.

Por otro lado, es útil pensar en las cosas correctamente. En realidad, los gráficos y los árboles son una de las cosas más útiles que uno puede saber. Comprender estos dos le permite comprender el análisis de complejidad, las bases de datos, la inteligencia artificial y, esencialmente, cualquier área de la informática. Pero la informática es más teórica que la programación, y como programador no necesita comprender o familiarizarse con ellos. La mayoría de los programadores tampoco los entienden y aún pueden programar.

Una vez me dieron la tarea de implementar una lista vinculada individualmente en una entrevista de trabajo en PHP. Eso fue divertido ya que nunca, excepto que se encontraría con ese tipo de tarea en el mundo PHP. Mi entrevistado dijo que todos los candidatos fallaron terriblemente (excepto yo) y se preguntó si alguien aún puede programar. Escribí un contrato de trabajo 15 minutos después. Por lo tanto, comprender diferentes temas siempre ayuda y nunca se sabe lo que se avecina en su camino. Ve, aprende y practica si tienes interés y no te preocupes, ¡lo conseguirás eventualmente!

Sabes qué, estás en el camino correcto. Déjame decirte algo que me pasó recientemente.

Estaba desarrollando un código PHP para obtener algunos datos de otro sitio web, solo para la práctica de PHP. Me llevó toda la noche. Miré muchos, muchos códigos de otros desarrolladores. Manuales, videos de youtube, foros y lo que no. No obtuve resultados satisfactorios. El código no estaba funcionando. Después de horas de búsqueda, lectura y comprensión, finalmente lo logré. Yo era feliz. Ahora, la parte interesante, el código era de solo 2 líneas.

Moraleja de la historia: durante la búsqueda, lectura, comprensión y construcción de mi sitio web, aprendí mucho sobre PHP. Ahora puede preguntarme cualquier cosa de eso, y podré responder la mayoría de sus preguntas. Cuantos más problemas enfrente, mejor programador se convertirá.

Por favor, no pienses que no eres lo suficientemente inteligente. En serio, si tienes problemas, estás ganando mucho a largo plazo. Solo ten un poco de paciencia. ¡¡Buena suerte!!

PD

Avíseme si he respondido su pregunta.

Un buen desarrollador conoce sus estructuras de datos y algoritmos, especialmente los básicos. Es posible que aún pueda improvisar un poco de código utilizando varias herramientas disponibles, pero será difícil depurar abstracciones con fugas [1] y seguir creciendo construyendo sobre fundamentos sólidos.

Es difícil para la mayoría de las personas aprender los conceptos básicos por primera vez. Pero gastar el esfuerzo ahora te ayudará mucho a largo plazo.

[1] http://www.joelonsoftware.com/ar

La mayoría de los nuevos estudiantes interesados ​​en el desarrollo web odian DS y algoritmos. Pero cada desarrollador debe saber estas cosas.

Aún eres estudiante y no has terminado el curso. Entonces, ¿cómo puedes decir que no eres lo suficientemente inteligente? DS y los algoritmos son básicos y en el futuro su carrera de desarrollo web se mantendrá en él. Estás muy ansioso por convertirte en desarrollador web. Entonces, tome el desafío de dominar DS y algo. , porque la tecnología es muy dinámica y sabe que incluso JavaScript se mantendrá. Fortalezca su base para que pueda absorber nuevas tecnologías rápidamente más adelante.

Esto sucede con cada persona. Establece tus objetivos y dedica tiempo.

¡La mejor de las suertes!

¡Hola!

Las estructuras de datos son muy importantes para un programador. Y nos ayudan a llegar a la solución de un problema. Bueno, quieres ir para el desarrollo web, ¿verdad?

Por lo tanto, debe tener una visión general si no se sumerge en pozos profundos. Dado que no son TAN útiles en el desarrollo web, debes y debes aprender y comprenderlos. De hecho, ¡DS es tan interesante!

Pero te aconsejo que entiendas eso. Tienes que poner esfuerzos . No hay nada que se pueda lograr de forma gratuita. Será fructífero.

Gracias por la solicitud sin embargo.

Feliz codificación !!

Para ser brutalmente honesto contigo: es beneficioso, ya que al 90% de los otros desarrolladores web tampoco les gusta ese tema, por lo que tienes algún tipo de socialización gratuita (“ser similar”). Y por último pero no menos importante: YAGNI.

(Yo por un algoritmos de amor: P)

Hmm! Pregunta interesante, pero diría que si eres bueno en algo, entonces eres realmente bueno en eso. Si te encanta la programación, eventualmente superarás estos fundamentos en algún momento de tu vida como programador. Teniendo en cuenta que la vida útil de un programador indio promedio es de ~ 10–12 años por los cuales se los empuja a convertirse en TL / Gerente de Proyecto en la mayoría de las empresas: un papel en el que no realizarán ninguna programación seria, aún puede sobrevivir el viaje. Pero, al final, ¡podría no ser satisfactorio! Eso es todo.

Encuentro que aprender una habilidad para completar una tarea es más efectivo para adquirir la habilidad que estudiar sin rumbo fijo.

Mi consejo es que se concentre en dominar las herramientas que necesita para el trabajo que desea realizar. Si ciertos temas son importantes, eventualmente aparecerán y deberá estudiarlos para lograrlo.

También es útil ampliar su lectura a todos los temas. Comience con la lectura de descripciones detalladas de los temas de CS relacionados y abordelos cuando sea necesario. ¡Sigue practicando!

Atrapado en el trabajo equivocado hermano.
Claro, salga y aprenda, tal vez de una fuente diferente, porque en Ciencias de la Computación, cualquier cosa que tenga que ver con eso, debe tener la capacidad de aprender y aplicar, desde las cosas más simples, hasta los temas más insoportables y dolorosos. Tienes (lee NECESIDAD) para ser bueno en casi todo y el maestro de unos pocos.

Es importante estar familiarizado con las estructuras de datos comunes, aunque no necesita saber todo lo que cubren en la universidad. Si le gusta trabajar con tecnologías web, no debe preocuparse por no gustarle las estructuras de datos. Pero averigüe si realmente le gusta trabajar con ellos, a veces el césped es más verde cuando hay más zumbido.

Algunos temas en Ciencias de la Computación se pueden entender solo al verlos, leerlos y jugar con ellos una y otra vez. Eso significa que lo obtendrá después de algunas iteraciones de “estudio adecuado”. Por lo tanto, espere allí e intente aprenderlo nuevamente y tal vez nuevamente, lo obtendrá. Los algoritmos y las estructuras de datos son como la “médula espinal” de la programación: no puede omitirlo y no debe omitirlo.

Significa que probablemente nunca podrá realizar una programación complicada, como el desarrollo de sistemas centrales o desarrollar ningún tipo de middleware o marcos de desarrollo. Pero si su objetivo es ser un desarrollador web y usar marcos populares, entonces probablemente no sea un gran problema.