La “programación” es un área muy grande ahora, significa cosas diferentes para diferentes personas. Alguna programación es “arte”, mucho es de memoria, ya que ha sucedido mucha ciencia de la computación desde que los primeros programadores trabajaron con sus computadoras electromecánicas crudas.
La mayor parte del trabajo de programación ahora se trata de la manipulación de personajes, imágenes y datos, el tipo de cosa que le trae Facebook, descubre qué anuncios mostrarle, renueva su licencia de conducir en línea, comprime videos para que pueda ver Game of Thrones en su iPhone , o mantiene sus números de cuenta bancaria precisos y seguros. No hago ese tipo de programación (aunque lo he hecho brevemente en el pasado) y no quiero hacer ese tipo ya que no es muy interesante para mí.
Cuando estaba en la universidad, los dos tipos básicos de programador eran programador “comercial” y programador “científico”. Por supuesto, también había programadores de “sistemas” para mantener la maquinaria funcionando para programadores de aplicaciones como nosotros.
Elegí ser un programador científico; Voy a responder su pregunta desde esa perspectiva, ya que otros ya han cubierto el otro tipo de programación.
- ¿Qué universidades ofrecen un programa de maestría en matemáticas puras?
- ¿Puede un ingeniero eléctrico y electrónico hacer una maestría (MS) en computadoras?
- He trabajado como ingeniero de sistemas en una multinacional durante los últimos 2 años y me gustaría obtener una maestría en análisis de negocios / ciencia de datos / aprendizaje automático. ¿Qué puedo hacer si no tengo antecedentes de análisis o estadísticas?
- ¿Cómo un estudiante de maestría indio internacional obtiene una visa de trabajo en los Estados Unidos? ¿Cuáles son los procedimientos que un maestro que se gradúa debe saber sobre las visas?
- ¿Cómo va un estudiante indio sobre la declaración de diversidad requerida para las mejores universidades de los Estados Unidos?
Un programador científico es una especie de personaje “dividido” que tiene que saber bastante sobre programación y ciencia. Un científico o ingeniero no se sentará y le enseñará ciencia básica, le explicará un problema que tenga y le pedirá que use su experiencia en programación, matemáticas y varios tipos de ciencias para ayudarlo a resolverlo.
Algunos ejemplos del mundo real:
- Procesar una imagen escaneada escasamente de grietas en una estructura de puente grande y descubrir qué segmentos de las grietas escaneadas están realmente conectadas y si cada una de ellas fue causada por fatiga o expansión / contracción térmica, interactuando con un “experto” humano para conocer sus decisiones. el experto no necesita estar presente en el futuro para procesar el gran volumen de datos. Esta aplicación requiere conocimiento de sistemas expertos, procesamiento de imágenes, traducción de trama a vector y diseño de interfaz gráfica, así como gestión de bases de datos.
- Determinar la viabilidad de los terroristas de secuestrar con éxito una barcaza de transporte de productos químicos y usarla para destruir puentes con tráfico de vehículos presente. Esta aplicación requiere conocimiento de ingeniería estructural, creación y acceso a una base de datos con varias configuraciones de remolcador / barcaza / carga, monte carlo y otras técnicas de simulación.
- Predecir las propiedades de los nuevos agregados minerales disponibles para su uso en estructuras de hormigón basadas en resultados de análisis de residuos de óxido de muestras. Esta aplicación requiere conocimientos de química (estequiometría), geología (mineralogía) y análisis estadístico (ANOVA, regresión, etc.).
- Investigar el uso de sensores integrados y autónomos en el pavimento permeable para detectar la formación de hielo negro subsuperficial para que los puentes autodescongelantes puedan construirse de manera confiable Esta aplicación requiere conocimiento del procesamiento de señales (conexión de múltiples dispositivos asíncronos a la red troncal de la red del sistema de transporte inteligente en la carretera), química (calor de fusión latente), gestión de bases de datos y estadísticas (análisis multivariado).
El punto es que una persona que quiera ser un programador científico debe tener un conocimiento amplio y general de la ciencia. Obviamente, no puede saberlo todo, pero una educación sólida en ciencias le permite investigar y comprender rápidamente los detalles en el área que necesita para un proyecto en particular. Debe saber dónde y cómo encontrar la información que necesita. En mi caso personal, paso mucho tiempo leyendo artículos de ciencias fuera de mi campo para que en una reunión de lluvia de ideas pueda decir cosas como: “Oye, la industria del transporte está utilizando ibuttons para monitorear continuamente la temperatura, la humedad y los impactos de la carga, tal vez ¿podríamos usarlos en la cubierta de un puente?
En el lado de la programación, necesita un amplio conjunto de herramientas que pueda usar o adaptar a la codificación. Necesita un conocimiento sólido de algoritmos básicos, estadísticas generales, capacidad para crear o modificar código en unos pocos idiomas estándar (créalo o no, SAS y FORTRAN son importantes), necesita poder dividir un problema complejo en pasos manejables usando subrutinas y funciones. Y será mejor que seas bueno con la “programación” de Excel porque eso es lo que usan los estudiantes de ingeniería.
En resumen, la cualidad más importante en un programador es su capacidad para visualizar una solución, dividirla en partes y luego encontrar las combinaciones correctas de técnicas y algoritmos para desarrollar esa solución. Si escribe una simulación sólida realmente buena, modificará ese código durante muchos años a medida que la ciencia mejorada y los datos adicionales entren en línea, lo que le permitirá agregar capacidad y mejorar la correlación de sus modelos con la realidad.
El santo grial de la simulación es ese hermoso día en que alguien encuentra un resultado “sorprendente” de su modelo que resulta no ser otro error más, sino una predicción sólida que puede confirmarse en el laboratorio o en el campo.