¿Que es un programador?

20 Abril, 2011

Curiosidades, Tecnología

Es curioso como cambian y evolucionan las cosas, uno de los mayores problemas que se le achacaba a la informática hace unos 20 años, era la poca madurez, la poca organización, y la falta de planificación.

Planificar el desarrollo de un software era toda una aventura, había algunos algoritmos, técnicas basadas en puntos de función, en líneas de código, etc.. pero no había nada que fuera más o menos exácto.

Cuando las empresas empezaron a organizarse y definir unas estructuras básicas de desarrollo, la cosa empezó a mejorar, al mismo tiempo que se perdía productividad, si, se perdía productividad. Vamos a explicarlo un poco, por que es un poco gracioso.

Las empresas con una mala estructura, podían tardar en desarrollar una funcionalidad X entre 3 y 12 meses, era una lotería. Las empresas con una buena estructura, siempre tardaban 10.

Pero muchas empresas querían eso, estaban dispuestas a pagar 10 meses, con tal de que no hubieran sorpresas. Estas estructuras solían tener los siguiente perfiles: (y alguno más que he omitido)

  • Arquitecto: Establecía los lenguajes, FrameWorks y arquitecturas a utilizar en un desarrollo.
  • Jefe de Proyecto: El que se pasaba el tiempo planificando y hablando con el cliente para que no se enfadara con los retrasos, a parte de gestionar las vacaciones y ausencias del resto del equipo.
  • Consultor: Perfil IT experto en el negocio, esto es totalmente imprescindible, si vamos a desarrollar un ERP, al menos que uno del equipo sepa que es un ERP.
  • Analista: Persona que es capaz de traducir un problema en un algoritmo. Tiene que lidiar con el consultor, con el cliente, y con los programadores.
  • Programador: Persona que traduce el algoritmo facilitado por el Analista, en un código entendible por la máquina.
  • Expertos Horizontales: Eran GURUs en distintas áreas que trabajan en varios proyectos, como Base de Datos, Usabilidad, etc….

Con el auge de las StartUps y el Open Source, estas estructuras se volvieron obsoletas, apareció la programación ágil, la cual se mal entendió, y se llegó a una situación donde todo el mundo hacía de todo, se perdió la especialización, la organización, y todo el esfuerzo aplicado durante muchos años en proporcionar a la Ingeniera Informática de un prestigio, de una profesionalización, se fue al garete, y veamos el por que…..

Una pequeña Start Up, no puede permitirse el lujo de contratar a varios perfiles, necesita a un “pogramador” Crack, alguien que en poco tiempo le monte una solución y que esta sea la mejor del mundo, pero…. ¿Necesita un programador?

Si definiéramos las necesidades de esta StartUp, diríamos que necesita una persona con conocimientos en:

  • Arquitectura Web
  • Análisis
  • Diseño Gráfico
  • Programación
  • Base de Datos

¿Y a esto lo llamamos programador? jeje, pues que bien, y si ahora necesita un ayudante que se dedique a picar código, ¿también lo llamamos programador?

El lenguaje es demasiado rico para que programador sea cualquier cosa, y ese es el problema, que los programadores se empeñan en llamarse así mismos programadores independientemente de las habilidades o conocimientos que tenga, estás mezclando a un becario que acaba de terminar FP con un Ingeniero que acaba de desarrollar el software que lleva un satélite espía bajo el mismo nombre.

Traslademos esto al mundo físico, si vamos a construir una cosa y contratamos a una empresa, ¿que pensaríais si os manda a 5 albañiles? si, sólo albañiles, ni arquitecto, ni aparejador, ni fontanero, “es que esas definiciones están anticuadas, ahora todos somos albañiles”.

Seamos realistas, y llamamos las cosas por su nombre, y si no tiene nombre, pues le damos un nombre, pero lo que están haciendo los programadores es cavar su propia tumba, aplanando la jerarquía y especialización que ha costado muchos años crear.

Y si hablamos de sueldo, pues claro que están pagando una “mierda”, es normal, si dentro del mismo “saco” está el becario gratuito, el salario medio del puesto bajará, es que es normal.

A parte de esto, os voy a revelar una cosa que quizás no sepáis, la mayoría de los puestos de trabajo de IT no están en Internet, están en negocios tradicionales como la Banca, la Construcción, Utilities, Administraciones públicas, etc… y en estos sectores siguen con la jerarquía “antigua”, y son los que determinan los salarios, y mientras ellos piensen que un programador deben cobrar lo mínimo, por que debe hacer lo mínimo, el resto de empresarios, aunque sean de Internet, van a pensar lo mismo.

NOTA:

Por si alguno piensa que no sé de programación, y que sólo sé de marketing y gestión de empresas… empecé a programar con 9 años en ensamblador, con 12 ya había creado un sistema de identificación de llamadas en telefonía por pulsos, con 13 tenía mi propio procesador de textos colaborativo por puerto Serie…. he colaborado con la revista MSDN de Microsoft, y diseñé la arquitectura web para una de las empresas más grande de España, con lo cual, algo de programación se.

[Actualizado]

Veo que en los comentarios hablan de programación ágil, si nos vamos a Scrum, en la parte donde se define el equipo, veréis que sigue hablando de varios perfiles diferentes:

In the Scrum methodology, the team is responsible for completing work. Ideally, teams consist of seven cross-functional members, plus or minus two individuals. For software projects, a typical team includes a mix of software engineers, architects, programmers, analysts, QA experts, testers, and UI designers. Each sprint, the team is responsible for determining how it will accomplish the work to be completed. This grants teams a great deal of autonomy, but, similar to the Product Owner’s situation, that freedom is accompanied by a responsibility to meet the goals of the sprint.

16 Responses to “¿Que es un programador?”

  1. Jose Alfonso Suarez Moreno Says:

    Hola Juan,

    Después de leer tu artículo ¿no habrá que redefinir la profesión informática? Está claro que, aunque sigan existiendo bancos, empresas de construcción y demás megacorporaciones que precisen mantener en su plantilla equipos de profesionales informáticos de todo el escalafón, la mayoría de las empresas del país son monopersonales y familiares, que contratan a un “equipo de desarrollo” de una sola persona (autónomo o microempresa de software) donde no se puede mantener una gerarquía de profesionales de la programación y donde al final se termina subcontratando parte del proyecto con otros autónomos y/o microempresas de software.

    Yo no me defino como programador “a secas”, ya que hago de todo (menos diseño que se me da fatal), en mi trabajo administro sistemas, bases de datos, hago análisis, ideo algoritmos, pico código . . . y ademas hago labor comercial, administrativa, de atención al cliente . . . . ¿Crees que los autónomos que nos dedicamos a hacer software deberíamos ser solo programadores, o analistas, o jefes de proyecto, o consultores, o…, o…., …. o deberiamos irnos a un banco a trabajar?

    Un saludo

    Alfonso

    • JuanMacias Says:

      Si quieres te puedes llamar programador, pero entonces, no te puedes quejar cuando te quieran pagar como un programador…. es una paradoja….
      El problema es que la gente de a píe, no entiende de estas escalas, no entiende de nombres de puestos, ni de categorías, pero es que nosotros tampoco estamos haciendo nada para solucionarlo!!!

  2. Jose Alfonso Suarez Moreno Says:

    Es que no acepto que me quieran pagar como a un “programador”, por eso decidí ser autónomo. Ahora el precio lo pongo yo, si no le interesa seguro que habrá otro que lo haga más barato, pero nunca será lo mismo.

    Si por los motivos que sean termino volviendo a trabajar a sueldo como programador, tengo muy asumido que mis funciones empieza y terminan en ser programador “pica-codigo”, nada más. No se me pida que idee algoritmos, no se me pida que piense la estructura de una tabla, no se me pida nada más.

    Aunque es de pena ver que solicitan programadores con experiencia para pagarles una miseria y terminar haciendo la labor de analistas, consultores e incluso de arquitectos.

    Pero tampoco podemos crear escalafones de profesionales autónomos de la informática que encarecería demasiado los proyectos y en los que el que termina cargandose la mayor parte del trabajo sea el que menos cobre.

    Por eso: hay que reestructuras la profesión y adaptarla a las necesidades reales del mercado. Y si bancos y demas megacorporaciones quieres pagar una miseria (recordemos que no son puestos productivos), que el que quiera se vaya a trabajar picando codigo a un banco.

  3. Lluna Says:

    Yo mismo tengo en mis tarjetas “programador freelance” y como el amigo Jose Alfonso hago prácticamente de todo, el caso es que hasta que no cambie esa definición en el imaginario colectivo profesional pues…”programador” es lo que entiende más gente, sea entendida o no, luego ya le explicas a quien toque el resto de cosas que puedes hacer. En cualquier caso de acuerdo con Juan a que no hacemos nada para solucionarlo.

  4. David Blanco Says:

    Hola Juan!

    La estructura organizativa que describes en este post es la típica de las grandes factorías de software o consultoras de toda la vida. Salvo excepciones, claro, estas compañías están llenas de gente que se ha acomodado en su puesto casi administrativo y que ha dejado de tener contacto con el código, que es en última instancia lo que hace que el software funcione (esto da para otro post). Es muy difícil mantenerse al día y reciclarse si uno deja de picar código y śolo se dedica al análisis o al diseño de sistemas o aplicaciones.

    La ventaja de los equipos de desarrollo pequeños es que son más ágiles y flexibles aunque, claro está, requieren de programadores (sí, programadores) con más experiencia y mayor capacidad que la de simplemente picar código a partir de diagramas de flujo, UML, etc.

    En mi humilde opinión, hay gente que ha entendido muy bien los conceptos que defiende el Agile Manifest. Hay muchos ejemplos de empresas de éxito que utilizan estructuras organizativas planas donde no hay un puesto de mayor responsabilidad que otro. Todos comparten tareas y sobre todo, conocimiento, llevando la productividad del equipo a su máximo posible. Y no cobran el sueldo mínimo de un programador junior porque su sueldo va en función de la experiencia y calidad que aporten al equipo, como debe ser.

    Si un programador recién salido de FP es un crack (alguno habrá), ¿por qué debe pasar 10 años en la empresa para cobrar un sueldo decente?

    ¿Y por qué en las empresas con jerarquías muy definidas siempre suele progresar el empleado más pelota y con memos capacidad técnica, por no decir el más cabrón?

    Por otro lado, si asciendes al programador con más talento del equipo y le asignas tareas de gestión, estás empobreciendo el equipo de desarrollo.

    Conclusión: A los buenos programadores hay que dejarles programar y pagarles lo mismo que a los Arquitectos / Analistas / etc.

    Un saludo

  5. JuanMacias Says:

    David, no hay confundir programación ágil, con programación sin control. Que mucha gente monta un equipo si estructura ninguna y dice que la programación ágil es así, y es erróneo. La programación ágil requiere seguir una metodología ágil, por ejemplo scrum, y conozco a muy pocas empresas que lo sigan… conoces algún scrummaster?

  6. David Blanco Says:

    Obviamente, como en todo, hay gente que interpreta mal los principios y los utiliza para justificar su falta de competencia. Si este fuera el caso de la mayoría del sector del desarrollo de software pues estaríamos jodidos, hablando en plata 🙂

    Pero dejemos a un lado y por irrelevantes a los que no entienden qué significa el desarrollo ágil.

    Como bien dices, el desarrollo ágil requiere utilizar una metodología de desarrollo ágil. Hay unas cuatas claramente definidas y fácilmente localizables en la Wikipedia: Kanban, Scrum, XP, TDD, PUD, Lean-Agile, etc.

    Pero esto no quiere decir que tengas que elegir una y casarte con ella. En toda la bibliografía sobre el tema que he consultado estos últimos años hay un principio que destaca sobre todos los demás y es que cada equipo de desarrollo debe encontrar (o adaptar) el método que mejor se ajuste a su propia naturaleza, composición y circunstancias. Esta es la clave. Partiendo de los principios del manifiesto ágil y del método que elijamos nos montamos la película cómo más nos convenga, pero siempre, como dices tú, siguiendo un orden, si no es imposible hacer algo que no sea basura. Luego si clavamos tarjetas en la corchera con las historias de usuario o si las escribimos en hojas perfumadas de Hello Kitty, eso ya es otra historia y son detalles casi irrelevantes.

    Desarrollo iterativo, feature driven, unidades de test, equipos pequeños y horizontales, release early, release often y llámale cómo quieras, pero eso es desarrollo ágil.

    PD: No conozco a ningún scrumm master, como mucho conozco al Sword Master y el Scumm Bar, pero creo que estos no cuentan 🙂

    Un saludo

  7. Paco Garcia Says:

    The thing is people who look for people to solve their IT problems actually know what are the boundaries and skills between those “profiles”, and what they need, BUT as long as they can name “programmer” to one who solves their IT stuff, they´ll keep naming them like that. Why? It´s easy, it´s cheaper.
    What can we do? Easy: Don´t allow them, say NO.

  8. AG Says:

    Este tema ya se comento en el post de que las startups necesitaban programadores baratos, porque estaba empezando el negocio, y muy buenos , por el poco tiempo disponible. O tengo la memoria mal.
    Te sigo desde hace tiempo y he visto que has estado en empresas del ramo y sabes perfectamente de jerarquias pero veo contradiccion. En España una persona debe progresar de puestos tecnicos a puestos de gestion para ganar mas y/o progresar.
    Lo de un programador ganando un sueldo de jefe de proyecto solo se ve fuera de España. Te doy la razon es que no podemos llamarnos programadores. Minimo consultor o analista aunque al final dependiendo de la empresa piques codigo.
    Aqui el problema que yo veo es que cuanto mas abajo esta uno mas cosas tienes que dominar porque en mi experiencia nunca he visto que un programador pase a codigo el algoritmo definido por el analista. Lo mas comun es el hombre orquesta.

    • JuanMacias Says:

      El hombre orquesta como tu dices, no es tan común, quizás sea el 10%, hay que tener en cuenta que la inmensa mayoría de los programadores esta en grandes consultoras.

  9. Luis Says:

    No sé el apodo que tiene que tener una persona que se dedique al desarrollo de software, sólo sé que cosas como “analista”, “analista-programador”, “arquitecto”, sólo las leo en las ofertas de empleo en España. Bueno, miento, reconozco que el perfil de “arquitecto” si que existe como tal fuera. Lo demás, se buscan desarrolladores de software con mayor o menor nivel de experiencia, más o menos “crack” (lo cual se valora según los proyectos y empresas para los que hayas trabajado).

    El problema es que en España no hace falta nada de eso. En España no se hace (por norma general) software complejo. Perdón por la simplificación, pero ir al host a por datos y pintarlos en la ventana lo hace un mono. El único sitio hoy por hoy donde se empiezan a hacer cosas interesantes son en esas pequeñas start-ups. Ahí se necesitan “full-stack developers”. En el resto, por desgracia, basta con un programador como el que has descrito (y 40 analistas-programadores-yo-que-se)

    Por cierto, otra diferencia lamentable es que si tienes más de 35 años y sigues “picando” en este país eres un perdedor. Por contra en los países civilizados puedes jubilarte como desarrollador, habiendo crecido tu sueldo en consonancia. A ver si la cosa cambia, pero creo que el problema está muy enraizado (facultades de informática)

    • JuanMacias Says:

      Si hay empresas con esas jerarquías, de hecho, la mayor parte del empleo IT están en esas empresas.

  10. Ivan de la Jara Says:

    Acabas de aclararme el porque me siento ridículo cada vez que digo que soy “informático” o “programador web”. Ni soy informático, ni soy programador web. No tengo titulo y aunque pienso que esos papeles/títulos si que están obsoletos parece ser que todavía no hay nombres definidos sobre como se puede (o debe) hacer un proyecto hoy en día… Casi que mejor aquello de “webmaster” porque parece que uno tenga que coger 4 bolas y hacer malabarismos…

  11. Rafa Says:

    Estoy totalmente de acuerdo con Luis en lo que se busca al hombre orquesta, que sea multifucional y pueda abarcar muchas funciones. Pero es que en grandes empresas sucede tambien lo mismo pues yo he trabajado en varias, y he trabajado en integraciones con otras muchas empresas pequeñas y grandes, y tambien habia una, dos o tres personas que hacian de todo (reuniones con clientes, requisitos, analisis, diseño de base de datos, codificación, pruebas, formación, etc.) . Asi que eso de que las grandes empresas tienen esa categorización bien definida …

    Lo que tengo claro es que no tiene nada que ver trabajar para una empresa de servicios que vende proyectos o personas (body shopping) que para un cliente final que hace ‘Productos’ El cliente final (segun mi experiencia) valora otros aspectos como la calidad, la profesionalidad, etc, pues esta desarrollando sus propios productos. Mientras que un proyecto en llave en mano, ya sabemos como funciona, incluso es necesario dejar pufos para disponer de contratos de mantenimiento (esto lo he vivido)

    Yo me considero PROGRAMADOR, es lo que me gusta y es como me he indentificado en entrevistas de trabajo. Y lo digo porque es la verdad. Ojalá en este pais se valorará a un programador con 40-50 años (que no solo pica codigo, quiero volver a indicarlo) y no se le considere un fracasado !!!

  12. Rull Says:

    Que tal, parece increible pero las estructuras jerarquicas en la actualidad no estan del todo bien definidas en las empresas, no se como esten en otros paises pero en México hay consultoras que si siguen la estructura y hay quienes no, trabajo en Gobierno y mi puesto es programador pero al final de cuentas tengo que hacer el trabajo del analista, de arquitectura, incluso de consultor de business intelligenge entonces soy programador o soy hombre orquesta?, estoy de acuerdo con varios de que a la persona se le debe de pagar de acuerdo a sus funciones y la experiencia y no dejarlo como si fuera solo un programador.

Trackbacks/Pingbacks

  1. Programador web en ciudad pequeña « Las Noyas - 28 Abril, 2011

    […] he visto enlazado varias veces estos días (y que yo mismo he compartido en Google Reader) titulado ¿Qué es un programador?, aunque creo que me ha permitido asumir unas responsabilidades que no habría adquirido en una […]

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies