Fui bastante malo en matemáticas en la escuela secundaria, probablemente porque estaba más interesado en otras materias. Recuerdo vívidamente que cuando decidiera obtener un título de CS, tendría que cambiar. Me costó esfuerzo, pero lo logré. Entonces, hablando por mí mismo, no pienses que el trabajo duro y el deseo no superarán tus debilidades. No vale la pena rendirse, o pensar que sus luchas pasadas no pueden superarse. Probablemente sepa si es lo suficientemente inteligente o no y tiene el deseo, solo usted puede responder esa pregunta.
Los algoritmos están en el corazón de la programación: escribir código esencialmente expresa algoritmos en cualquier lenguaje de programación que esté utilizando. No importa qué código escriba, definitivamente está en el negocio de crear y depurar algoritmos. Algunos algoritmos son triviales (cuente el número de caracteres en una cadena) y algunos requieren un conocimiento profundo del dominio (abra cualquier libro sobre sistemas operativos, IA, construcción de compiladores para ver algunos de los muchos ejemplos de algoritmos que requieren un estudio cuidadoso).
El análisis de algoritmos involucra matemáticas, y es bueno tomar un curso que cubra este material para comprender los conceptos básicos, pero no piense que tiene que ser un experto en el análisis de algoritmos para utilizarlos, al igual que usted. necesita ser un mecánico experto para conducir un automóvil rápido. En algunos casos, los algoritmos que elegirá usar se publican en libros (existen muchos libros de algoritmos que proporcionan código para algoritmos estándar en el idioma de su elección, o en una forma razonablemente traducible por un programador decente). A veces, se incorporan al lenguaje o sus bibliotecas de soporte (p. Ej., La biblioteca C estándar proporciona una implementación rápida, C ++ tiene listas y hashmaps, etc.).
- ¿Cuándo es mejor usar Lean sobre Scrum y viceversa?
- Como desarrollador de software femenino, ¿qué te interesó en la codificación y cómo empezaste?
- ¿Quién es tu genio favorito en estos campos, física, matemática, química e ingeniería? ¿Qué ha dicho él / ella sobre cómo aprenderlos?
- Ingenieros de software: Dada su experiencia en el desarrollo de software, ¿cree que siente más o menos simpatía por los problemas con el despliegue del intercambio de salud que el estadounidense promedio?
- ¿Cómo describirías tu experiencia al ser "bangalored"?
Lea un libro general sobre algoritmos. Pase por alto las pruebas y las matemáticas difíciles si es necesario, pero aprenda qué es la notación big-O, y sepa por qué O (n log n) es mejor que O (n ^ 2), y qué hace que un algoritmo sea uno u otro . Estudie los algoritmos básicos de clasificación y búsqueda. Compare aquellos que son n ^ 2 o n log n y entienda por qué están designados de esa manera. Encuentre un libro o recursos web que catalogue algoritmos y consúltelo cuando lo necesite durante su carrera. Date cuenta de que las personas más inteligentes de lo que ya has descubierto, hace mucho tiempo, los algoritmos clave y asegúrate de saber dónde buscar.
Cuando estudies el código de otras personas, intenta entender por qué usaron los algoritmos que usaron. Si el autor está cerca, pregúntele por qué eligió usar una tabla hash en lugar de una lista vinculada, o un tipo de inserción en lugar de una clasificación rápida. Tal vez sea porque las búsquedas ocurren mucho, por lo que tiene que ser rápido, y el acto de almacenar elementos puede ser más lento. Tal vez sea al revés. A pesar de la complejidad que puede ver en los textos de algoritmos, por qué uno u otro algoritmo es mejor para un trabajo generalmente se reduce a preguntas simples sobre el espacio y el tiempo requerido del algoritmo y cómo eso afecta la usabilidad de cualquier programa que esté diseñando. No se necesitan matemáticas avanzadas para discutir estos temas.
Si está interesado en alguno de los numerosos subdominios de informática (IA, procesamiento de imágenes, compiladores, rastreadores web, implementaciones de bases de datos, sistemas operativos, la lista es larga …) puede leer documentos y libros que describe los algoritmos fundamentales del dominio y aprende de ellos.
Los “patrones de diseño” también son una buena fuente de conocimiento de algoritmos; Los algoritmos clásicos son solo un comienzo. ¿Cómo se escribe un servidor web eficiente? Existen libros de patrones que describen tales cosas, y creo que debería estudiar los patrones de diseño disponibles para su dominio de interés.
Después de tener todo eso detrás de usted, estará en condiciones de (tal vez) crear sus propios algoritmos complejos, pero no se desanime porque en este momento no siente que es capaz de inventar los suyos propios. La verdad es que la programación es un arte que se aprende mejor leyendo libros y estudiando el código de otras personas, copiando lo que han hecho y ajustándolo a sus necesidades. Después de adquirir algo de experiencia trabajando con los algoritmos de otras personas de esta manera, estará mejor preparado para diseñar algoritmos propios. Pero no se sorprenda si nunca necesita idear algo tan complicado como lo que podría estudiar en un libro introductorio de algoritmos.
Para resumir: gran parte de lo que necesita ya ha sido descubierto por otros, especialmente el tipo de cosas que probablemente necesitará en sus primeros cinco o diez años como ingeniero de software típico. Gran parte proviene de los esfuerzos de la academia y la industria. Aprenda los algoritmos básicos / estándar y encuentre algunas fuentes confiables de código que pueda robar o escribir. Determine lo que su idioma / herramientas ya proporcionan. Aprende los algoritmos básicos de tu dominio. Cuando tenga la oportunidad, haga preguntas a personas más inteligentes (más experimentadas) que usted. ¡Y divertirse! Hay muchos algoritmos geniales e innovadores, y la programación es bastante aburrida sin algoritmos (en serio, si no encuentras estudiar cómo las personas han resuelto los problemas (difíciles) y los algoritmos que resultaron, la programación será aburrida y no tiene sentido y tal vez buscaría una carrera en otro lado. Para mí, la falta de tanta curiosidad es mucho más peligrosa que no ser un estudiante de matemática directo).