Como ingeniero de software, ¿no soy lo suficientemente bueno si no tengo conocimiento sobre algoritmos avanzados y estructuras de datos?

Eso depende de dónde desea trabajar y qué problemas desea resolver. Si tengo que hablar sobre el contexto indio, ¡he visto a muchas personas que se unieron a las compañías de MNC como probadores y crecieron al nivel de Directores sin escribir una sola línea de código !, olvídate de las estructuras de datos y algoritmos avanzados.

La mayoría de los trabajos realizados en empresas indias de TI y contrapartes indias de las empresas multinacionales no trabajan en tecnologías y productos básicos. La gente aquí trabaja principalmente en partes, arreglando problemas, proyectos de mantenimiento, portando código, etc. Este tipo de trabajo no requiere ningún concepto avanzado de programación. Las empresas prefieren personas más frescas y menos experimentadas para hacer estos trabajos y se espera que los muchachos experimentados hagan la gestión de personas. Entonces, no ves muchos programadores de alto nivel en India. Trabajé en una empresa estadounidense de multinacionales, donde formaron un equipo para realizar análisis de video y reclutaron muchachos de alto perfil. Trabajaron durante 2 a 3 años para crear un producto, pero no estaba a la altura del estándar del mercado. Luego desecharon ese equipo y adquirieron una pequeña empresa que había desarrollado un producto similar de calidad mundial. Muchas empresas multinacionales generalmente no invierten mucho en el desarrollo de nuevas tecnologías y soluciones, sino que adquieren pequeñas empresas que ya tienen estas soluciones. La fuerza laboral india no es lo suficientemente competente como para trabajar en las tecnologías avanzadas.

Entonces, si está buscando desde el punto de vista laboral, incluso sin aprender cosas avanzadas, puede sobrevivir hasta cierto punto. Si te entusiasma aprender tecnologías avanzadas y quieres resolver problemas críticos, entonces eres bienvenido, ¡porque no mucha gente quiere ensuciarse las manos !.

Algoritmos y matemáticas puede buscar en Google e incluso descargar ejemplos, pero absolutamente necesita comprender los principios y formas de pensar detrás de las estructuras de datos, cómo analizarlas, optimizarlas, usarlas e implementarlas o perderá una gran cantidad de tiempo y esfuerzo para obtener resultados subóptimos.

Actualmente soy un estudiante de CS que está haciendo una pasantía en este momento.

Los uso todos los días, además de algunos conceptos de cálculo. Sin mis optimizaciones, nuestro sistema funcionaba, pero en 400 ms ahora es solo de 4 a 20 ms.

Si está de acuerdo con los programas lentos que utilizan CPU durante medio segundo, no los necesitará. Si desea un programa rápido y sin impuestos, necesitará matemática, estructuras de datos y algo de computación paralela.

Incluso si está bien que escribas cosas lentas, tu futuro jefe no estará bien.

Como ingeniero de software, no eres lo suficientemente bueno si no estás resolviendo problemas cada vez más difíciles cada año. Y resolver problemas difíciles requiere una base sólida en matemáticas, estructuras de datos, algoritmos y diseño. No se puede traducir el diseño de otra persona en código durante toda la vida. En algún momento de su carrera de ingeniería de software, se le pedirá que diseñe cosas a gran escala solo para sobrevivir a la competencia.

Si solo es capaz de hacer lo mismo año tras año, mientras revisa su salario cada año, las empresas encontrarán fácilmente ingenieros más jóvenes, más baratos, solteros, enérgicos y más actualizados para reemplazarlo. Después de todo, están en el negocio de ganar dinero, no alimentar a las familias. Piénsalo.

Siento que el proceso de entrevista de codificación que utilizan muchas grandes empresas de software está demasiado centrado en los algoritmos, sin embargo, entiendo por qué es así. Cuando te gradúes de la universidad o la universidad, se espera que conozcas estos conceptos fundamentales. Después de algunos años, su trabajo real puede diferir bastante del de otro: en el lenguaje, el conjunto de habilidades requeridas, el kit de herramientas y el rol. Si tuviera que hacer preguntas relevantes para su trabajo diario, esas preguntas cambiarían cada año. El proceso de la entrevista se centra en cosas que son tan fundamentales que es de esperar que tanto usted como su entrevistador sepan sobre ellas.

De hecho, depende del área de CS en la que trabaje y de la empresa para la que trabaje.

Algunas compañías se sienten perfectamente cómodas con los programas que sufren de la acumulación de código. Está bien si los programas son bastante lentos, siempre y cuando hagan el trabajo.

En mi campo de actividad, la acumulación de código no es satisfactoria debido a limitaciones de tiempo y grandes volúmenes de datos para procesar. No solo necesito entender los algoritmos, también tengo que poder determinar la eficiencia del algoritmo. En algunos casos puedo hacer esta determinación usando álgebra, pero frecuentemente encuentro que el cálculo es una mejor opción.

Hace varios años me enfrenté a un problema interesante y algo difícil. Reconocí el problema como perteneciente a la categoría de un mapeo. El problema se volvió bastante fácil de resolver en ese punto. Sin embargo, si me hubiera perdido este hecho tan importante, un problema que se volvió bastante fácil habría sido muy difícil.