Cuál es el papel de un desarrollador de software MIS, y difiere de un desarrollador de software general?

Me especialicé en MIS en la universidad, pero he hecho desarrollo de software desde que me gradué.

En un escenario del mundo real, soy tan bueno como mis colegas de CS alrededor del 98% del tiempo. De vez en cuando me encuentro con un problema espinoso que, resulta ser un algoritmo escrito en los años 70, o es parte de la matemática discreta, o es un poco de diseño de SO fundacional que me encontré por casualidad por razones. Pero para la mayor parte del trabajo real me mantengo al día. (Las entrevistas son más difíciles para mí, nunca he tenido los fundamentos de CS que se preguntan. Por suerte para mí todo el mundo hace las mismas 3 preguntas básicas: Cómo funcionan los hashmaps, la notación Big-O para el quicksort, el algoritmo de la tortuga y la liebre).

En el lugar teórico de la clase, siempre se nos inculcó que seríamos los intermediarios: de alguna parte de la empresa a alguna parte de la tecnología / TI en la que podríamos encontrarnos. Como parte de mi educación en MIS tomé 1 curso de base de datos, 1 curso de desarrollo web (hoy lo llamaríamos fullstack), 1 curso de COBOL (de verdad), 2 cursos de VisualBasic – cambié uno de ellos por 1 curso de Java con alguna charla dulce), 1 curso de redes, 1 curso de diseño de sistemas, 1 curso de telecomunicaciones (semana 4: «así es como funcionan literalmente las radios…»), 2 cursos de contabilidad, 2 cursos de financiación de empresas, 1 curso de cálculo para licenciados en empresariales, 1 curso de diseño de sistemas, 2 cursos de marketing, 1 curso de operaciones empresariales, 3 cursos de gestión de la calidad total, y quizás un curso de gestión… además de artes liberales y 2 clases de ciencias.

(La idea aquí es que podría hablar (pobremente) con cualquier parte de los negocios porque conocía sus términos básicos: balance, análisis DAFO, Valor Futuro del Dinero, y volver a los desarrolladores y entender cuando necesitan construir 3 clases en un patrón de diseño polimórfico y la máquina que ejecuta este servicio necesita al menos una NIC de 1gb.)

Donde como una licenciatura en CS tendría – ojo, esta es una lista parcial medio recordada para una licenciatura que no tomé): 3 cursos de Java, 1-2 cursos de C++, 3 cursos de cálculo, 2 cursos de matemáticas discretas, 1-2 cursos de construcción de sistemas operativos, 1 curso de «escribir un compilador», 1-2 cursos de ingeniería de software, un curso del tipo «aprender 4 lenguajes en un trimestre»… además de artes liberales y algunas clases de ciencias.

Así que las carreras de CS se concentraban en construir.

Me di cuenta a los 3 1/4 años de la carrera de MIS que me estaba especializando en ser el jefe de pelo puntiagudo de Dilbert (un poco más educado, claro, pero resulta que las bases de datos no vienen en colores (Dilbert Comic Strip on 1995-11-17)

No me arrepiento de mi carrera, de hecho fue súper útil cuando me gradué y abrí mi propia consultoría de desarrollo de software. Pero a veces me pica el gusanillo de construir mi propio lisp o algo así y me doy cuenta de que tendría que enseñarme a mí mismo ese curso de compiladores….

Pero, de nuevo, cuando el caucho golpea el camino durante el día de trabajo, mi formación generalista inicial rara vez importa después de alrededor de 5 años de ser un dev de software profesional a tiempo completo. Excepto en casos raros como las entrevistas, o tal vez el desarrollo de juegos (pero incluso cuando trabajé en uno de ellos, llegué a la velocidad en el libro de texto de CS, pero no se ve comúnmente en el truco salvaje que utilizamos, y eso fue todo).

Otras universidades pueden tener otros significados para estas palabras: otra universidad a la que no fui, pero conozco bastantes graduados – «MIS» parecía significar, «sabe VisualBasic y bases de datos «, y «CS» significa, «sabe cosas MIS más PHP». (Admito que esto es un poco reduccionista, pero se entiende).