Image for post
Image for post
Imagen de Dreamstime

Recientemente, en una discusión en la red “social”, un compañero lanzaba una queja amarga: “no se ve la clase por ningún sitio”. Creo que no nos queda otra que darle la razón, si bien es cierto que aquello que llamamos conciencia de clase no suele abundar tampoco en otros sectores.

Con este artículo tengo dos objetivos; en primer lugar, ofrecer alguna explicación (breve) desde el materialismo a la falta de sensibilidad de clase. …


El software libre en la economía capitalista

Pau trabaja en remoto para una empresa que desarrolla software de control logístico. Además, participa activamente en comunidades de desarrollo y mantiene distintos componentes de software libre. Uno de esos componentes, una biblioteca para representar gráficas y datos estadísticos en aplicaciones web, ha cosechado cientos de estrellas en Github y recientemente ha sido adoptado por su propia empresa, proporcionándole con ello una buena dosis de satisfacción personal.

Tras terminar su jornada, Pau no apaga el ordenador. Hace un par de semanas alguien con nombre de usuario Mattias abrió una “issue” en su componente por un problema de compatibilidad con navegadores. Pau empezaba a sentir cierta ansiedad porque no le gusta dejar de lado su proyecto demasiado tiempo. Está a cargo del mantenimiento y siente que es su responsabilidad responder a las “issues” y “pull requests” tan pronto como sea posible. Aunque le cueste reconocerlo, en el fondo percibe que le va en ello, aunque sea un poco, su propia reputación profesional. Reconoce que, a día de hoy, “tu perfil de Github es tu mejor currículum”, pero si contribuye al software libre es sobre todo porque siente que está ofreciendo algo a la sociedad. …


O de cómo aprovechar mejor los code reviews

Preámbulo, definición del contexto y advertencias

En los últimos tiempos, con mis compañeros y compañeras de trabajo, he insistido bastante en la necesidad de profundizar en el modo en que nos revisamos el código unos a otros. Si bien en el pasado no era algo a lo que concedía gran importancia, tras visitar bastantes equipos he creído reconocer una constante en la mayoría de ellos: la revisión de código es, en el mejor de los casos, un trance por lo general poco agradable para revisor y revisado que se lleva a cabo como un mal necesario en el camino del código a producción. …


(Este es un ejercicio puramente descriptivo. Las interpretaciones, conclusiones y reflexiones posteriores, si es que derivan, han de correr a cargo del lector).

Hace unos años había en mi misma calle un copistero. El copistero consumía una mercancía (paquetes de folios de papel, anillas, tapas) y usaba maquinaria (copiadoras, plotters) para producir una mercancía distinta (encuadernaciones). En el proceso, mediante la aplicación de su tiempo de trabajo, había transformado una mercancía en otra más valiosa. Había valorizado, en fin, la mercancía.

Como profesionales de software, en cambio, no transformamos mercancía alguna. Es por eso que la analogía con el artesano me resulta cada vez más artificiosa. Podría interpretarse, en un ejercicio de imaginación, que ensamblamos materias primas digitales (módulos, frameworks, bibliotecas) para producir bienes elaborados (aplicaciones de software), pero lo cierto es que ni lo uno ni lo otro, en su plano de existencia etérea, son en realidad propiedad nuestra. Por lo general, no somos nosotros los compradores de esas materias primas (que tampoco se consumen por el camino) ni es el producto lo que vendemos a nuestros pagadores. Nuestra relación con los lenguajes, frameworks y bibliotecas que utilizamos no difiere de la de cualquier otro trabajador con los medios de producción correspondientes a su actividad productiva. …


El 5 de febrero de 2024 el Congreso de los Diputados aprobó la Ley de Renta Básica. La ley suponía unos ingresos garantizados de 800 euros que podían ser complementados según el tamaño de la unidad familiar. Fue aprobada por mayoría absoluta, con el apoyo de extremo a extremo del arco parlamentario.

Era una decisión anunciada. El paro sistémico y las cada vez más precarias condiciones laborales estaban creando un clima social irrespirable. El capital, muy concentrado en unas pocas grandes empresas, deslocalizaba más y más centros de producción en otros países con mano de obra barata y precarizaba los empleos en el estado español. El gobierno de corte conservador decidió seguir la estela de otros países europeos e implementar la renta. Para ello fue necesario un gran esfuerzo social y el sacrificio de todos los actores. Desde los sindicatos, que tuvieron que aplicarse a fondo para silenciar a los trasnochados más recalcitrantes, hasta las empresas que aceptaron asumir una mayor tasa impositiva para asegurar la sostenibilidad de la renta. …


In which a humble team splits a new feature in a couple of subsystems to be developed independently and in parallel, increasing the team’s efficiency and reducing waste.

A bit of background

(Time is gold, you can safely jump to next section)

We in Agroptima are divided in two teams: backend and frontend. In the past, probably under the influence of the multi-disciplinary “craftsmen" philosophy, we have felt a bit ashamed of being divided by technologies. We have shyly tried other ways of organizing teams, but in the end we have accepted that the traditional front/back division works great for us.

As many other companies, when we start a feature, we backenders and frontenders talk to get to an agreement for the API. That lets us develop the feature in parallel later on. …


I recently reviewed a piece of code such as the following.

class AntimatterCondenser(object):
def __init__(self):
self.__needs_to_send_report = False
def condense(self, container):
self.__purify(container)
self.__heat(container)
# ... some other actions
if self.__needs_to_send_report:
self.__send_report()
def __purify(self, container):
# ... do stuff
if contamination_found:
self.__needs_to_send_report = True
def __heat(self, container):
# ... do stuff
if too_much_heat_reached:
self.__needs_to_send_report = True
def __send_report(self):
# ...

Let me explain what it’s about. Imagine we are working on a device that condenses antimatter (it’s obviously not the real case I reviewed). We introduce a container full of antimatter and the device makes transformations so that the volume of the antimatter is reduced. There is a risk, though. …


> TL;DR. Don’t use Rails concerns.

Introduction

If you are an experienced Rails developer, you won’t need explanations about what a concern is. For those who are new to the framework, here is a short explanation:

The Concern is a tool provided by the ActiveSupport lib for including modules in classes, creating mixins.

module Emailable
include ActiveSupport::Concern
def deliver(email)
# send email here...
end
end
class Document
include Emailable
def archive
@archived = true
deliver({to: 'me@mydomain.com', subject: 'Document archived', body: @content})
end
end

Sounds great, right? Any class including our Emailable concern would be able to send emails. …


En los últimos años he tenido la oportunidad de colaborar en más de una veintena de proyectos, todos ellos enmarcados en lo que llamamos startups. Esas colaboraciones han sido desde distintos roles; consultor, desarrollador freelance o programador asalariado. Y en todas ellas había un denominador común: un CEO y un CTO.

En este post expongo por qué la figura del CTO me parece no sólo innecesaria, sino contraproducente para la mayoría de startups. También propongo una alternativa como forma de organización, que vendría a ser una suerte de liderazgo distribuido.

¿Para qué sirve un CTO?

El CTO está a cargo de dirigir el área de tecnología. “Dirigir” es un verbo fácil de pronunciar pero difícil de ejecutar, de modo que el estilo de dirección depende en gran medida de las responsabilidades que el propio CTO se otorgue a sí mismo. Un CTO puede orientarse hacia aspectos más organizativos o más técnicos, en función de sus gustos e inquietudes. …


Image for post
Image for post

Cuando he visto el tweet que encabeza este post, no sé si el impacto ha sido mayor por la crudeza de la imagen o por el texto que la acompaña. Dos realidades dolorosamente distantes se superponen en un tweet. De una parte, la urgente necesidad de un programador por que se revise su trabajo. De otra, la de una anciana posiblemente inválida a juzgar por la muleta que sobresale de sus faldas, sentada en el suelo y con la mano extendida pidiendo limosna. …

Carles Climent

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store