Programadores o Ingenieros

27Oct07

Ignacio Roda

EinsteinDurante estos días, he estado siguiendo un artículo en el blog de Enrique Dans que trataba sobre el actual problema de la falta de programadores. Quise polemizar un poquito al principio con la intención de que la gente saltara y empezara a hacer más comentarios y a decir lo que piensa. Pero bueno, al final parece que se nos fue un poco de las manos, e incluso algunos malinterpretaron algunos comentarios y se ofendieron. Pido disculpas a aquellos que se sintieron ofendidos por algo, pues no era la intención y no pienso algunas de las cosas que dije.

Me gustaría seguir en materia, pues el tema era muy interesante. En particular, uno de los temas que se trató es el de si un ingeniero debe ser buen programador para ser buen ingeniero o si un programador debe ser ingeniero para poder ser buen programador. Aunque en SOFTKEYS solemos centrarnos más en el sector de la telefonía móvil, creo que los comentarios serían extrapolables a cualquier otro sector que implique desarrollo de software.

Así que empezaré el hilo de comentarios dando mi humilde opinión al respecto, siendo yo un don Nadie, que sólo trata de expresar su punto de vista, sin importarle si es más o menos acertado, aunque partiendo de la experiencia de ser tanto programador como ingeniero.

Creo que en realidad hay mucha relación entre un programador y un ingeniero (sea de la especialidad que sea), sobretodo atendiendo a la forma de usar el cerebro que tienen ambos. Hay gente que explota más la capacidad abstracta del cerebro, otros explotan más las capacidades comunicativas, otros las capacidades motoras, etc., etc. Creo que tanto un programador como un ingeniero tienden a sacarle el mayor rendimiento a sus capacidades abstractas y lógicas (el famoso logical-brain).
Para mi, un buen programador no es bueno por el hecho de saber al dedito toda la sintaxis de 10 lenguajes de programación. El buen programador es independiente del lenguaje que utilice. Lo que realmente hace un programador es fijarse en el mundo real, analiza un problema o una situación en su mente (lo plasma también en papel normalmente), lo modeliza, busca posibles soluciones, evalúa las soluciones para decidir la mejor solución y, finalmente, la plasma en forma de código.

¿Y un ingeniero? Pues básicamente hace lo mismo. Ante un problema, primero analiza el problema, luego lo modeliza (lanzando ciertas hipótesis, como que “x” es igual a cero), busca posibles soluciones, las evalúa para quedarse con la mejor y, finalmente, o implementa la solución o se encarga de que alguien la implemente.

Tal vez la diferencia más grande entre los dos esté en el último paso, pues cuando el ingeniero ocupa un puesto de ingeniero como tal, tiende a no ser él quien implemente las soluciones (pues este último paso normalmente lo pueden hacer otras personas y no merece la pena gastar tiempo en eso, pues puede aportar mucho más en los pasos anteriores). Ahora bien, el hecho de que un ingeniero de profesión no suela invertir tiempo en la implementación final, no significa que no deba saber realizar dicha implementación. Considero que cuanto mejor se sepa realizar el último paso, mejor se podrán realizar los pasos previos, pues las limitaciones de los procesos de implementación pueden influir en los procesos de análisis y modelado.

Entonces bien, a la pregunta que alguien hizo en el blog de Enrique, de si un ingeniero (de proyectos de software, obviamente) debe ser buen programador o no, yo opino que cuanto mejor conozca la programación (sus ventajas, sus limitaciones, etc.), mayor éxito tendrá en las fases de ingeniería.

Sería muy enriquecedor el poder escuchar otras opiniones.

Otros posts


10 comentarios a “Programadores o Ingenieros”  

  1. 1 fmarzal

    Para mi un ingeniero se supone que es un paso superior al de un programador, por tanto debe de saber programar. Soy partidario de que la persona que ocupa un escalafón más alto debe de saber que es lo que se hace por debajo de él, no a nivel exacto, pero si tener conocimientos de las cosas.

    El problema es que la gente estudia la ingenieria y se cree que ya debe de ir directo a puestos de dirección, cuando en este país no hay suficientes empresas tecnicas para haber tanto ingeniero en puesto de dirección. Y mucho de ese problema es que la Universidad te enseña a ser director de proyectos que harian en la NASA, pero no director de proyectos que harian en España. Recuerdo cuando estudiaba en la Universidad Politecnica de Valencia que siempre usaban más ejemplos de organizaciones a los que no llegará nunca nadie que ejemplos un poco más cercanos a la realidad española. Con lo que claro, se dan casos de ingenieros españoles en la NASA, pero el resto de ingenieros se frustan al ver que no hay trabajo para lo que han estudiado.

    Y eso que muchos de mis compañeros aprobaron sin saber exactamente lo que queria decir lo que estudiaban, ellos simplemente memorizaban… O sea, ingenieros sin saber programar. No los contrataria como programadores.

  2. 2 Juan Antonio

    Estimado amigo. Hace unos 19 años más o menos compré un libro que publicaba anaya que era “el libro de los programadores”. Grandes genios como el programador del comecocos, Bill Gates o el diseñador de CPM y creador de digital Research entre otros. Ninguno era ingeniero informático, tal como está tipificado hoy en día. Creo que parece que es necesario ahora mismo, ser ingeniero informático para hacer un buen software, y eso no es cierto. Estos señores decian que mas que aprender a programar , había que aprender a razonar y a solucionar problemas. Esto lo hacias estudiando matematicas, física, música ( si, si, música) , etc. Por ejemplo, Jaron lanier, es músico, sin embargto invento la realidad virtual en el JLP de la Nasa.

    Fue un libro muy estimulante, y me enseño que lo que debía de hacer era trabajar y estudiar. Aprender y razonar. La única diferencia, aunque estudie todos los días, es que yo no tengo título, pero sin embargo hago un buen software. y porque hago un buen software ? Porque mis clientes lo piensa, me lo compran y puedo vivir gracias a ello.

    Un saludo.

  3. 3 Man

    Despues de seguir el hilo (postee una cosita) me parece que aunque con ciertos matices tienes toda la razon del mundo. Si ademas todo lo que comentas del trato a tus trabajadores es cierto, mereces TODO mi respeto. Una pena que mis conocimientos sobre J2ME sea bastante limitado (por no decir nulo).

    Saludos.

  4. 4 nyakete

    Hola Man, recuerdo tus posts, si. Fuimos un poco las víctimas de aquel blog por defender el hecho de que tener un título no significa saber programar si no va acompañado de muchas ganas y mucha práctica, y que pueden haber grandísimos programadores que no hayan pasado por la universidad.

    El trato de nuestros compañeros sí es cierto. Tratamos de hacer una empresa más acorde con los tiempos en los que vivimos, ofreciendo las mejores condiciones posibles para cuidar a nuestro activo más importante: nuestro equipo humano.

  5. 5 Endy

    Para Juan Antonio (#2),

    Siento decirte que por mucho que tú digas que haces buen software y que también lo piensen tus clientes (o eso afirmas) no significa que sea verdad porque tu no estás CUALIFICADO para poder emitir ese juicio.

    Por cierto, el argumento de los genios es una buena jugada pero que no engaña a las personas con mayor capacidad analítica.
    Ahora resultará que los genios abundan por doquier (¿insinuas que tú eres un genio?).
    Solo teniendo en cuenta el que los genios escasean tu argumento cae en la incorrección por si mismo.

    Además, se te puede refutar fácilmente con lo siguiente:
    Podríamos decir que el primero que se le ocurrió sumar no era matemático, el primero que construyó una casa no era aquitecto y así hasta el infinito.
    En una sociedad MODERNA todo tiende a ser regulado y especializado. Esa es la razón por las cual existen las titulaciones.
    Hace 20 años tus argumentos serían factibles, hoy y cada día más no lo son.

  6. 6 nyakete

    Endy, siento curiosidad por saber en qué te basas para decir que Juan Antonio no sabe hacer buen software. ¿Lo conoces? ¿Conoces el software que él hace? ¿Has hablado con sus clientes?

    Una pregunta que dejo en el aire en base a un comentario que has hecho. La gente con capacidad analítica, ¿tiene capacidad analítica por el hecho de haber estudiado ingeniería? ¿o es porque la gente que tiene capacidad analítica estudia ingeniería porque es lo que más se adapta a su forma de ser?

    Conozco grandísimos programadores que programaban desde que llevaban pañales. A los 18 años tenían que entrar en la universidad. ¿Qué carrera debían elegir? Lógicamente se decantaban por Informática, Telemática, etc.

  7. 7 Endy

    nyakete,

    El hecho de repetir una cosa durante años NO es garantía de hacerla bien.
    A mi excusas de gente sin cualificación que dice que llevo x años haciendo esto y lo otro me dan risa.
    Para afirmar que se hace un buen software hay que demostrarlo porque nosotros un desarrollador no debe ser tener mentalidad de vendedor sino de técnicos y, por lo tanto, basarse en pruebas empíricas.

    Por regla general el client NO tiene ni idea y se traga lo que tú le dices, y si la cosa funciona o parece que funciona, están la mar de contentos (aunque detrás haya una verdadera chapuza).

    Menos mal que cada vez quedan menos fantasmas de estos que hacen mucho de todo y nada realmente bien.

  8. 8 fmarzal

    Endy, por supuesto un buen desarrollador tiene que demostrarlo, faltaria más. No por llevar X años programando ya es garantia de que es buen programador, pero si que una persona que lleva muchos años programando da más garantia que un recien licenciado que ha aprendido a programar (a veces ni eso) en la carrera.

    Obviamente el que lleva años deberia haber ido corrigiendo sus fallos y defectos, estudiando a base de libros, o la misma carrera, porque sino seguramente tendrá muchos defectos en su código.

  9. 9 nyakete

    Endy, el hecho de ir a una universidad y aprobar asignaturas, tampoco es garantía de saber hacer las cosas bien. Yo terminé la carrera con bastante éxito, saqué buenas notas en asignaturas de microondas, comunicaciones ópticas, etc…. y no me pidas que te haga una instalación de las antenas de recepción de un edificio, pues te aseguro que te haría una chapuza.

    Al que le sirve la universidad es a quien tiene verdadera vocación y tiene esa pasión por lo que estudia. Que aprobar aprobamos todos, el paso siguiente es demostrar lo que valemos. Muchos se meten en una carrera por el hecho de que no saben qué estudiar, no porque realmente sea su vocación.

    No has respondido a la pregunta de si conocías a Juan Antonio. No me creo que puedas juzgar sus conocimientos y su calidad de programador sin conocerlo.

  10. 10 Chema

    Creo que el tema no debe ser si se tiene o no título.Conozco gente sin carrera que programa mejor que la mayor parte de ingenieros que conozco ,pero resulta que tienen una amplia formación ” FORMAL ” en dicho campo.Es decir, han estudiado exactamente los mismos conceptos de ingeniería que los titulados y muchos otros que se aprenden al salir de la Universidad(Masters en programación,certificaciones,etc…).Luego la pregunta no es si tienes o no título universitario sino si has recibido una correcta formación en ingeniería del software,sistemas,programación,etc… Y desgraciadamente no todos los titulados la han tenido,aunque diría más bien que NO LA HAN ASIMILADO Y COMPLETADO cuando cursaban la carrera.Me veo obligado a decir también que he encontrado mucha gente,principalmente de “modulos”, con gravísimas carencias en conceptos relativos a arquitectura de computadores y programación moderna orientada a objetos. Por no mencionar un total desconocimiento de rutinas de bajo nivel y funcionamiento de sistemas operativos (distribuidos o no),redes y conceptos matemáticos. Por tanto,también ha de tenerse en cuenta que la formación universitaria es precisamente eso,FORMACIÓN. Y probablemente sea más diversa que la “autodidacta” o de niveles catalogados como “inferiores”(no considero que exista realmente tal cosa pero creo que así nos entendemos).En resumen,FORMACIÓN CON EXPERIENCIA ES LO QUE DEFINE A UN BUEN INFORMÁTICO/PROGRAMADOR.(Una cosa sin la otra no garantiza NADA)

Deja una respuesta



Comparte este artículo