¿Seré un mal ingeniero de software si tengo dificultades en los cursos universitarios de CS más difíciles?

Eso depende del trabajo que harás.

Los cursos de CS tienden a enfocarse en el lado científico o teórico de lo que las computadoras pueden hacer y para qué se usan. La IA, la teoría de autómatas, los compiladores, los gráficos son áreas importantes y son necesarias para una comprensión más profunda y completa del campo.

Si los usaría en el trabajo que realiza es otro asunto.

La ingeniería de software y los ingenieros de software están más preocupados por diseñar y construir software para manejar trabajos del mundo real. La mayoría de las veces, el conocimiento de fondo necesario para resolver estos problemas no es ciencia espacial. Hay muchos ingenieros de software trabajando para bancos e instituciones de servicios financieros (BFSI). Este sector es, de hecho, el mayor usuario de servicios de software.

En BFSI, los ingenieros de software tienen que encontrar soluciones para resolver problemas relacionados con la banca. Cosas como mover dinero, crear y administrar cuentas, manejar datos de clientes.

Si estaría haciendo esas cosas, entonces no utilizará todos los cursos de CS “difíciles”. Probablemente ni siquiera usarás muchos algoritmos tampoco.

Sí, hay muchas personas que escriben código C / C ++ / Java que resuelven sistemas matemáticos complejos que forman el marco de los productos financieros, pero ni siquiera allí se utilizarán todos los conceptos. Puede usar redes neuronales o algoritmos genéticos en un punto, pero hay bibliotecas listas para usar con funciones disponibles, solo tiene que armarlas. Si todo lo demás falla, siempre puede tomar una cartilla y revisar la documentación.

No todos los ingenieros de software tienen Google o Linux o se espera que trabajen en temas de vanguardia. Hay muchos problemas mundanos por resolver que se pueden manejar con mucho menos.

Eso no significa que debas ser fácil en los cursos “difíciles”. No importa lo que hagas, los conocimientos e ideas que obtengas seguramente te ayudarán algún día.

Ya sabes el viejo dicho de que no importa si ganas o pierdes, sino cómo juegas. Esa es básicamente tu respuesta.

Los detalles de un curso en particular no necesariamente harán una diferencia en su carrera. Sí, puede perder un primer trabajo desarrollando una parte clave de un sistema operativo cuando les da su transcripción, pero es poco probable y un poco irrelevante a largo plazo.

Sin embargo, cómo lidiar con esto va a hacer una gran diferencia. Si estás pensando, oh, demasiado duro, voy a ver otra temporada de un popular drama de HBO, sí, vas a estar en problemas.

En un trabajo real, vas a luchar. Las ideas van a estar sobre tu cabeza. La documentación será obsoleta y engañosa. Los diseños serán fundamentales para un proyecto por razones completamente no técnicas que lo sorprenderán. Puede haber una sobrecarga, algún día / semana / siglo. O tal vez solo hay una tediosa lista de casos oscuros de los que nunca has oído hablar.

La programación es, honestamente, más tratar con cosas como esta que la programación real. Piense en la cantidad de capas entre usted y el microprocesador, el sistema operativo, el tiempo de ejecución del idioma, las bibliotecas, los canales de comunicación, los servicios de directorio, etc. Cada uno de ellos fue creado por un equipo frustrado de ingenieros en una fecha límite, lidiando con conflictos de personalidad y métricas de rendimiento barrocas, posiblemente basadas en los comentarios de los proveedores que intentan vender algo. Eventualmente, vas a golpear algo que simplemente no tiene sentido a primera o segunda mirada.

Si retrocede y entra en pánico cuando sucede, está condenado. Estarás malgastando el dinero de la empresa y decepcionando a tu equipo. Ese es el final del trabajo y un momento difícil para encontrar uno nuevo. La industria es, después de todo, mucho más pequeña de lo que parece ser.

Sin embargo, si se esfuerza por resolverlo, tal vez no a tiempo para el examen final, pero asegúrese de que suceda, entonces puede entrar en proyectos en el futuro sabiendo que puede resolver las cosas. Recuerda, es un gran mundo allá afuera. Sobre cualquier tema, hay muchos libros, documentos, publicaciones de blog, artículos y ejemplos de la mayoría de las cosas que necesitará aprender, y muchas personas entusiasmadas por la oportunidad de explicarlo (posiblemente incluso en el mismo salón de clases que usted) .

Por lo tanto, tal vez nunca se encuentre en una situación en la que necesite construir un sistema de administración de memoria o coordinar tareas con un monitor (aunque también podría sorprenderse), pero no encontrará un trabajo donde no sea difícil luchar una opción.

(Y, sinceramente, si está en un trabajo que parece fácil, comience a enviar currículums de inmediato, a menos que esté utilizando el cheque de pago para financiar un proyecto paralelo. No va a ser feliz y va a pasar un buen rato en su próxima entrevista (los trabajos fáciles tienden a interrumpirse), cuando le preguntan sobre sus logros en el último trabajo …)

No estoy completamente seguro de lo que significa “desarrollo profesional”, pero voy a suponer que se está preguntando cómo le irá en su carrera a largo plazo.

Honestamente, casi todo lo que he hecho ha sido pan comido en comparación con mis cursos universitarios más difíciles. Fui a UCSD y sospecho que otras escuelas podrían tener cursos más rigurosos que nosotros.

Sin embargo, lo que es más importante, creo que estás pensando en estas cosas desde una perspectiva incorrecta.

Si está luchando pero haciendo todo lo posible para aprender y perseverar en los temas difíciles, entonces creo que será un gran ingeniero de software. Por alguna razón, parece que las personas tienden a pensar que su inteligencia es de alguna manera estática y que no puede cambiarla.

No sé si esto es cierto o no, pero en realidad abandoné la universidad y también tuve una gran falta de confianza en mi primer trabajo a tiempo completo porque estaba trabajando con un grupo de graduados de Stanford / Berkeley. Aún así, puedo decir por experiencia propia que cuando demuestras que estás ansioso por aprender y no temes enfrentar desafíos difíciles, las personas lo respetan, y no solo lo respetan, sino que te alentarán y te ayudarán.

Mi único consejo para usted es buscar a aquellas personas que puedan asesorarlo en sus pasantías y trabajos futuros; Estas deberían ser personas que son muy buenas en algo, pero más importante, personas que son como lo que te gustaría ser en el futuro. Siempre y cuando estés ansioso por aprender y no te rindas, sospecho que estas personas te ayudarán y lo harás bien.

En todo caso, el hecho de que te sientas desafiado es algo muy bueno, porque solo desafiándote a ti mismo puedes mejorar.

Bueno, desde el punto de vista de los estudiantes, los sistemas operativos tienden a arrojar muchos conceptos diferentes a la vez, pero todo lo que necesitas hacer es leer con toda tu atención hacia los conceptos básicos y especialmente los fragmentos de código (preferiblemente solo en una biblioteca por 5 a 5). 10 días seguidos). Una vez que lo haga, apreciará los sistemas operativos y puede que incluso sea así. Tan poco de perseverancia es todo lo que necesitas …
Buena suerte