Alba on Tech

Talking about technology

Soy un ingeniero, no un artesano

Últimamente está muy de moda la expresión “artesano de software”. Desde la primera vez que la leí, esa expresión me chirrió. Entiendo que es una idea romántica, que suena bien, y se refiere a la parte del cuidado y el cariño que ponen los artesanos en su trabajo. No obstante, creo que hay algo fundamentalmente erróneo en ese concepto.

Según la wikipedia, artesanía se refiere al trabajo del artesano (normalmente realizado de forma manual por una persona sin el auxilio de maquinaria o automatizaciones). Dejando de lado el oxímoron de hacer software sin maquinaria, quiero centrarme en la parte de automatizaciones.

Salvo en raras ocasiones, los proyectos grandes los abordo utilizando un framework de desarrollo. En Kaleidos usamos principalmente python/django y groovy/grails. Obviamente, utilizamos cientos de bibliotecas de software que nos proporcionan piezas comunes, como envío de mails, abstracciones de la base de datos, o comunicaciones remotas. Además, seguimos convenciones de código, para crear un resultado lo más mantenible y uniforme posible. Por supuesto, utilizamos un sistema de control de versiones distribuido, git, con un protocolo de ramas que nos permite trabajar en paralelo con máxima eficiencia. Ni que decir tiene que somos grandes defensores de los test automáticos, de forma que nuestros proyectos rebosan de test unitarios y de integración. Eso nos lleva al uso de herramientas de integración continua, como Jenkins, que no sólo se encarga de pasar los tests en las diferentes ramas, sino que incluso realiza despliegues automáticos a preproducción.

Claramente, ¡las automatizaciones son básicas para el desarrollo de software de calidad!. Permiten no sólo ser muchísimo más eficiente, sino, y esto es lo más importante, ser consistente en el desarrollo. Y eso lleva a una calidad claramente superior. Hace el código mantenible, legible, y permite el trabajo en equipo.

¿Sabéis cómo se llama al proceso de creación, perfeccionamiento e implementación de estructuras para la resolución de problemas? Ingeniería.

Estoy muy orgulloso de todas las automatizaciones que utilizo al desarrollar software. Y siempre estoy en el proceso de mejorar aún más el sistema. Y por supuesto, le pongo mucho cariño y cuidado a lo que hago. Pero el cariño y el cuidado por sí solos no bastan. Hay que hacer las cosas bien. Hay que tener procesos claros, y estar siempre dispuestos a refactorizarlos y mejorarlos. Hay que automatizar las tareas para mejorar la calidad. Hay que ser ingenieros1.

Así que lo digo convencido: Soy un ingeniero, no un artesano.

 

 

 

(1) Disclaimer: Estoy hablando de la forma de trabajar y abordar los problemas, no de titulaciones. Conozco gente que ha estudiado módulos de FP y son magníficos ingenieros, y gente con titulación superior en informática a los que no les dejaría acercarse a un teclado.

Advertisements

10 October, 2013 - Posted by | Software

5 Comments »

  1. Entiendo y comparte en parte tu razonamiento, y sin entrar en el debate de que
    podamos calificar o no a la Informática como una Ingeniería, creo que el
    problema lejos de residir en la semántica de uno u otro termino se encuentra en
    la actitud.

    Creo que la forma correcta de abordar esta profesión es intentando usar el
    método y herramientas del ingeniero adoptando la actitud del artesano. No
    debemos olvidar que por mucho que haya avanzado la ingeniería, un violín
    fabricado en serie aún con los mayores estándares de calidad esta lejos de
    alcanzar la excelencia de un Stradivarius, del mismo modo que ni la mejor
    maquina del mundo podrá jamas plasmar sobre un lienzo la genialidad de Dali o
    Picasso. Quizás algún dia los humanos quedemos obsoletos y podamos dedicarnos a
    la vida contemplativa mientras la tecnología traza a nuestro alrededor un mundo
    mejor con calidad ‘artística’. Mientras tanto no está de más no desmerecer los
    méritos que una persona con arte, dedicación, cariño, pasión y experiencia puede
    llegar a alcanzar en cualquier trabajo.

    Recuerdo vivamente una conversación entre dos ingenieros de caminos, un
    ingeniero civil y un jefe de equipo sobre una estructura (diseñada por uno de
    ellos). El jefe de equipo, próximo a la jubilación y habiendo repartido la
    mayoría de su vida entra los oficios de soldador y montador, localizo sobre el
    plano y a primera vista un error importante que podría llevar a fracaso el
    montaje de esa sección. Recuerdo con que respeto y atención los tres ingenieros
    escuchaban las explicaciones del veterano, porque sabían perfectamente que a la
    hora de la verdad, lo que cuenta es la experiencia empírica y directa y que no
    siempre lo que se vierte en el plano se puede traducir a la realidad. Semanas
    después se confirmo que varias décadas de experiencia real le daban la razón al
    hábil ‘artesano’. Del mismo modo que recuerdo y no gratamente la soberbia con
    que algunos imberbes ‘ingenieros’ informáticos trazaban uno y otro plan
    descabellado, siendo incapaces de aplicar el sentido común y la deducción mas
    elemental a problemas básicos.

    Disclaimer: Soy FP II de Sistemas y no me considero a mi mismo más que un eterno
    aprendiz de esta profesión. Todo esto va tan rápido que cuando ya eres experto
    en algo esta a punto de quedar obsoleto. Como digo en mi perfil de twitter, a
    TDD human being.

    Comment by joe di castro | 10 October, 2013 | Reply

  2. Ni ingeniería ni artesanía, ¡¡¡es un ARTE!!! 🙂

    Comment by Andrés Viedma | 10 October, 2013 | Reply

  3. Creo que hay otra forma de entender lo que comentas y que es precisamente la visión de quienes reclaman la “artesanía”. Sin entrar en etimología, la artesanía *no* es arte sino una técnica en su sentido más estricto.

    La oposición/crítica a ingeniería viene a decir que en esta profesión no se hacen churros. Si vas a una fábrica de montaje de amortiguadores, da igual lo que tú pidas o lo que necesites, tendrás amortiguadores; del mismo modo, ha habido mucho tiempo de proyectos “yet another” que ponían de relieve la herramienta o solución que ya tenía la empresa de servicios, en lugar de las necesidades del negocio. Como dicen por aquí, alguien tenía un martillo y solo veía clavos.

    Y entonces comienzan a aparecer profesionales que quieren hacer las cosas mejor; que no quieren automatizar incluso las decisiones de negocio; que no dan por hecho que un CMS+ERP son la solución única, independientemente de que tengas un e-commerce, una intranet o una web de contenidos. Aquí se manifiesta la parte importante de la artesanía: usar la técnica para algo que puede ser nuevo, que no siempre es igual.

    Si tomamos esta visión, y creo que es más apropiada al sentido original, tú mismo eres un artesano. Y de los buenos 😉

    Comment by Yamila Moreno | 11 October, 2013 | Reply

  4. Yamila, estando de acuerdo en el fondo de lo que dices, no me parece correcta tu asociación. La gente que trabaja en fabricas de montaje son operarios, no ingenieros. No creo que la solución a la política de “hacer churros” sea denostar la ingeniería, sino todo lo contrario.

    Comment by Pablo Alba | 11 October, 2013 | Reply

  5. Estoy de acuerdo Pablo lo que comentas respecto a ciertos procesos que habéis conseguido automatizar, pero no deja de ser la “cascara”, la superficie, del proceso de creación de un software, evidentemente hay ingeniería en el proceso de copiar 1000 veces un CD con un software dentro, pero las decenas de miles de decisiones que han dado lugar a ese software dentro de ese CD es lo que está, todavía, a años luz de ser una tarea “automatizable”, es en ese sentido, en la parte creativa del software, en lo que se centra el concepto de “artesano” en el contexto del software, no tanto como un desprecio a la automatización, en absoluto, esto no quita que como ingenieros intentemos que dicho proceso sea lo más “fácilmente repetible y predecible” posible, de ahí la creación de componentes reutilizables que precisamente tratan de evitar la eterna re-programación de ciertas tareas, pero el resultado a su vez del uso de dichos componentes es elevar el carácter creativo del software a un nivel superior de abstracción, como si fuera parte de una carrera sin fin.

    Por ello esa eterna lucha, esa eterna tensión que se da en todo *ingeniero software* y a la vez *artesano*, entre la aspiración ingenieril de predecibilidad, determinismo y repetitividad y el aspecto brutalmente creativo (y por tanto artesanal) en la creación de software… es lo que hace que esta profesión sea FASCINANTE, aunque generalmente lo que la rodea no suele ser tan fascinante y no suele captar esa “fascinación”, quizás es porque hay muy muy pocas empresas fundadas y lideradas por programadores.

    En resumen, yo también me considero un ingeniero, pero también un artesano, ambos aspectos los considero tan *jodidamente* complementarios que ni me planteo elegir entre ambos.

    Comment by jmarranz | 17 November, 2013 | Reply


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: