¿Cómo puede un programador migrar a disciplinas de ingeniería o ciencias más tradicionales?

No soy ingeniero, pero he pasado mucho tiempo investigando y pensando en este tipo de pregunta. También he escuchado algo sobre la transición de la gente a la ciencia.

Esto va a ser difícil. Hay una razón por la que cualquiera puede ingresar al software, pero no todos pueden ingresar a la ingeniería tan fácilmente. Lo que hacen los ingenieros suele ser bastante crítico, y en algunos casos puede herir a las personas o incluso matarlas si se comete un error. Hay un gran énfasis en la repetición, hacer lo que se sabe que funciona desde hace mucho, mucho tiempo. No solo eso, sino que el nivel de educación esperado de un ingeniero es muy alto. Sus habilidades en matemáticas y física tienen que ser lo suficientemente sólidas como para poder entender cualquier cosa nueva que se le pueda presentar. Puede considerar un título de ingeniería como uno de esos títulos de “obtener una educación” en lugar de los de “conseguir un trabajo”, donde le enseñan los fundamentos y usted sale y lo aplica de maneras novedosas.

Así que todo lo que se dice, la mejor manera de saltar a la ingeniería desde el software es volver a la escuela. Tendría que asegurarse de repasar el cálculo, las ecuaciones diferenciales y la física, y, especialmente, comprender la estática y la dinámica o la teoría de circuitos básicos o lo que sea (cuanto más alto vaya, más dependiente del campo es, obviamente). Tendrás suerte de que te acepten en un departamento de ingeniería para la escuela de posgrado sin tener algo que mostrarles como prueba de que puedes hacer cualquier cosa. Una forma es comenzar a auditar las clases en una escuela de posgrado cerca de usted, utilizarlas y luego usarlas como ventaja cuando esté hablando con el jefe del departamento para que le permitan hacer una EM, por ejemplo. Esta es la única forma en que sé que realmente funciona. La alternativa sería obtener un BS, pero eso solo desperdiciará el tiempo. Es posible que pueda incorporarse a un equipo de investigación de ingeniería y luego avanzar hacia un rol más de ingeniería, pero no estoy seguro de cómo se uniría a un grupo de investigación como ese si fuera un ingeniero de software profesional.

Otro punto a destacar es que también hay algunos campos que serían más naturales para avanzar desde el software. Así que estamos hablando de ingeniería informática, donde un fondo en software de bajo nivel podría ayudarlo a avanzar hacia la arquitectura de dispositivos, por ejemplo, ya que ya tiene una perspectiva de CS sobre cómo se debe hacer. Todavía requerirá mucho aprendizaje. Otra es diseñar software para ingenieros, por lo que tal vez el procesamiento de imágenes u otros trabajos de procesamiento de señales, quizás sea bueno en matemáticas aplicadas y podría ser programador de software numérico / científico en, por ejemplo, aerodinámica. Tal vez seas bueno en AI y ML, y como eres bueno con eso, tienes antecedentes matemáticos para entender también los controles, de modo que puedas hacer la transición a EE y robótica. Tendrá que pensar de manera flexible e intentar encontrar y estirar los enlaces comunes potenciales que puede usar para saltar hasta que esté donde quiere estar.

De todos modos, vas por una ruta muy poco tradicional. Lo más fácil será obtener una maestría, porque entonces la gente creerá que eres un ingeniero capaz. Puede ser un poco difícil obtener esa educación, pero ciertamente es posible. Definitivamente, será más fácil si elige un campo que esté dominado históricamente por personas que son buenas con el software o que deben entender la CS, para que sepan de qué es capaz y puede ser más comprensivo en ese sentido.

La mayor parte de lo que dije anteriormente se refería a la ingeniería. Para la ciencia, definitivamente necesitarás obtener un título. Ph.D será su mejor apuesta, pero en algunos casos lo hará un maestro. Supongo que si mencionas ciencia, estás hablando de investigación científica. Hay muchas personas que también trabajan en laboratorios de ciencias que no son científicos, en lugar de eso pueden ser ingenieros o programadores, y quizás técnicos. El camino a la ciencia es realmente más fácil si crees que puedes ingresar a la escuela de posgrado. La física, por ejemplo, es más bien indulgente con los antecedentes si puedes probar que conoces la física (lo que podrías hacer tomando la física GRE, por ejemplo). Pero una vez más, si viene del software, su mejor apuesta sería campos altamente computacionales o informática, o programas interdisciplinarios. Eche un vistazo a este programa de GT del departamento de ciencias computacionales e ingeniería: Ciencias computacionales e ingeniería. También hay otros departamentos como este, pero la mayoría no son tan públicos acerca de su interdisciplinarismo (sí, he inventado esa palabra). También puedes sacar el mismo truco que mencioné antes, tomar algunas clases y usarlo para probar tu sal después de que hayas estudiado por tu cuenta. MIT OpenCourseware y los equivalentes de Stanford lo ayudarán a evaluar su progreso, ya que ofrecen conferencias de video, notas y tareas, e incluso exámenes.

De todos modos, todo depende de lo que quieras hacer. Como dije acerca de la ingeniería, esto es poco tradicional, pero en este caso, su mayor dificultad será ingresar a un programa de doctorado financiado. Es posible que pueda hacer una transición de hacer software numérico a algo que es como un científico, pero sin un doctorado, realmente no veo que sea probable que reciba el mismo trato que un científico con un Ph.D. . Sin embargo, he visto que aquellos con títulos de maestría en formación científica pasan a puestos de científicos de personal con otros doctores en su nivel, por lo que es ciertamente posible, pero tendrá suerte de encontrarlo. De todos modos, una vez más, sea flexible, esa será la clave para una transición como esta. Recuerde, la mayoría de las personas no hacen este tipo de cosas, por lo que está solo para lo que realmente tiene que hacer.

Buena suerte, y espero que esto haya sido útil.

Una de las razones por las que la gente de ciencia / ingeniería tradicionalmente ha podido (¿se ha visto obligada a hacer?) La transición a roles de software puro es que muchos / la mayoría de los roles de ingeniería científica a menudo requieren considerables habilidades de desarrollo de software para realizar el trabajo. Por lo tanto, se convierte en una transición de “hacer software como parte de mi rol de ciencia / ingeniería” a “hacer software”. Este es esencialmente el camino que seguí desde el físico hasta las operaciones satelitales y el software.

Desafortunadamente, hacer la transición en la otra dirección es menos fácil. La mayoría de los desarrolladores de software no hacen mucha ciencia o ingeniería “como parte de” hacer software.

Además, el desarrollo de software ha sido tradicionalmente un campo más “abierto”, con menos acreditaciones formales. En ciencias, normalmente se te juzga por tu título (MSc, PhD), la escuela, el historial de publicaciones, etc. En la práctica de ingeniería, debes tener un P.Eng. En muchos campos y jurisdicciones. Entonces, en cualquier caso, no puede simplemente hacer la transición al campo, incluso si tiene el conocimiento, si no tiene las credenciales.

Entonces, la respuesta corta es que si desea hacer la transición a la ingeniería o la ciencia, necesita volver a la escuela.

Como se mencionó en las otras respuestas, sucede lo contrario: las personas capacitadas en ingeniería central asumen roles de software. Aquí está mi opinión sobre esto (en esencia, primero intente obtener proyectos interdisciplinarios, luego bifurque en aquellos que tienen una fuerte porción ‘computacional’):

  1. Comience por involucrarse en un proyecto de I + D o de desarrollo de paquetes de software que entregará un software destinado a ser usado en una disciplina de ingeniería central, por ejemplo, una interfaz de control para el control de procesos de una planta de energía, visualización de datos de física de partículas de eventos de ciclotrón, arquitectura o diseños de ingeniería civil y software de análisis de tensión / deformación o cualquier otra cosa en esas líneas.
  2. El proyecto en el paso 1 lo expondrá a las cosas que se hacen, aunque a nivel de espectador. Tendrá que desarrollar herramientas de software para, por ejemplo, resolver problemas de optimización no lineales, análisis estructural o cosas por el estilo.
  3. Obtenga una mejor perspectiva del campo para el que está desarrollando el software: cursos en línea o leyendo por su cuenta. El hecho de que esté desarrollando software para ese mismo campo hará que todo lo que aprenda sea más relevante y, por lo tanto, mantenga el interés.

Más allá de esto, depende completamente de ti. Para la ingeniería de software tradicional (es decir, las carreras CS o similares), se ramifica en el procesamiento de señales (especialmente si tiene alguna lógica digital, estadística, cálculo y / o antecedentes de aprendizaje automático; tenga en cuenta que estos son cursos que se imparten en la mayoría de los currículos de CS, ya sea Como temas principales o como papeles electivos) es manejable.

Si ha realizado la programación a nivel de sistemas, la transición de los controladores de escritura y el código de interfaz para un microcontrolador puede ser su primer paso hacia la instrumentación electrónica. Al menos está familiarizado con las cosas: obtenga un proyecto con una compañía intru o laboratorio de investigación y comience a aprender cosas sobre la marcha. Sería difícil, naturalmente, el diseño de filtros y demás, pero aún así es factible si se tiene la mente lista. A muchos programadores les gusta trabajar cerca de la máquina; el siguiente paso es trabajar con la máquina.

Como programador, si ha trabajado en el manejo de grandes cantidades de datos (Big Data), eso lo califica para casi cualquier campo de análisis de datos. Cada disciplina, ya sea de ingeniería o de otro tipo, arroja toneladas de datos. El manejo de estos datos y el dibujo de inferencias necesitarían una sólida base de programación. Se puede tener el conocimiento teórico necesario siempre que seas lo suficientemente bueno en matemáticas y puedas captar conceptos sobre la marcha.

Tenga en cuenta que todo esto simplemente apunta a estar involucrado principalmente con la parte computacional (que a menudo es una parte importante y crítica) de otras disciplinas de ingeniería. La transición para pasar completamente al núcleo de una corriente podría llevar años, y sí, un título de postgrado sería una buena opción en ese caso.