Charla presentada originalmente en WordCamp Buenos Aires 2015.
Todos los desarrolladores alguna vez estuvieron muy entusiasmados por empezar un nuevo proyecto determinado. Les parecía muy emocionante, y les representaba un desafío que estaban ansiosos por encarar. Pero a muchos les pasó algo que también es bastante común: a medida que el proyecto avanzaba (o no avanzaba) se encontraron con que se sentían cada vez más desmotivados, con que perdían las ganas, y con que ese proyecto que tanto les interesaba al principio se terminó convirtiendo en una carga. El trabajo se extendió, imprevisiblemente, por meses, incluso por años. Hasta que un día decidieron abandonarlo, o lo terminaron con una calidad que no los conformó. O sí los conformó, pero ya estaban tan alejados emocionalmente que perdieron esa satisfacción que da un trabajo bien hecho.
Este post va a tener como punto central una pregunta: ¿hasta qué punto nosotros mismos, como desarrolladores, somos responsables de que nos pase esto?
Un poco de historia personal
En el 2008 empecé una carrera universitaria, en simultáneo con mi primer trabajo importante en programación. Hace alrededor de un año abandoné esa carrera, mientras mayo de este año me encontró co-organizando y dando una charla en el evento más grande que haya tenido nuestra comunidad local en años. Yo veo estos dos hechos como diferentes caras de la misma moneda.
Podría pasar mucho tiempo hablando de mis idas y vueltas con la carrera, de mis postergaciones, mis excusas, mis sesiones de terapia sobre el tema, pero el punto importante es que, en algún determinado momento, mucho antes de dejarla, ya me había dejado de interesar, de apasionar. Y gran parte de ese interés y esa pasión se habían ido hacia mi trabajo.
Por alguna razón, con el desarrollo web me fue bien. Para 2010 ya trabajaba en un lugar mejor que en donde había empezado, dirigía mi sector, y hasta me llamaban para dar clases y capacitaciones. Pero no podía evitar sentirme un poco un outsider, un fraude. Mi trabajo me llevaba a rodearme de gente con estudios formales en desarrollo, e incluso a estar a cargo de algunas de esas personas. Yo nunca había estudiado nada relacionado con desarrollo, no había hecho un solo curso. Todo lo que sabía lo había aprendido a medida que lo necesitaba usar para algún proyecto, o buscándolo por curiosidad. Es una forma totalmente válida de aprender cosas, pero aún así me sentía en desventaja.
Por esto mismo, cada tanto sentía que necesitaba poner el freno y pararme a ordenar un poco lo que ya sabía, a aprender sobre esos puntos que se me escapaban en medio del apuro por terminar algo, o a tratar de entender relaciones entre varios conocimientos dispersos. Me pasaba noches enteras en vela tratando de aprender algunas cosas de las que había escuchado hablar y no entendía, o tratando de encontrar la mejor manera de aplicar lo que ya sabía. Cada vez que hacía esto, sentía que podía volver a trabajar con un conjunto de habilidades reforzadas. Si pasaba mucho tiempo sin hacerlo, sentía que me estancaba, que mis proyectos se demoraban, que bajaba la calidad de mi trabajo, y todo esto me hacía sentir más abrumado, muy poco preparado, un completo fiasco.
Todos nos creamos una imagen de nosotros mismos frente a todo lo demás. A partir de esta sensación de inseguridad, de este deseo de ser competente, y ante la falta de conocimiento y de preparación, me creé para mí mismo la imagen de alguien comprometido y reflexivo, y me puse a trabajar a partir de ahí para que el resto llegara a su debido tiempo. No sé si esto es algo admirable, ni siquiera sé si es realmente así como se me ve, pero es la manera que elegí para encarar mi trabajo.
Es un error creer que uno es el único al que le pasa algo. Con el tiempo me encontré con muchos colegas que se sentían parecido, incluso teniendo esa preparación que a mí me faltaba. Entonces, si no se trata tanto de una cuestión de conocimientos formales, algún otro tipo de conocimiento nos debe estar faltando para no sentirnos disconformes con lo que somos y con lo que hacemos. Hay algo que se nos escapa. Hay algo que nos separa del éxito al que aspiramos, de nuestros objetivos. Yo creo que es algo que no se aprende en ningún lado, sino que más bien se incorpora a través de la práctica.
Mucho de lo que aprendemos en algún punto nos puede servir de algo, lo podemos reutilizar. Lo que estaba estudiando, y que es algo que todavía me apasiona, es filosofía. Creo que la filosofía tiene una relación muy cercana con el mundo del desarrollo, y con la programación en particular. Y acá vamos a tratar de retomar una noción filosófica muy antigua para intentar aplicarla a nuestro trabajo diario.
El método socrático
Sócrates murió en el año 399 a.C., condenado por “pervertir” a los jóvenes de Atenas con sus ideas innovadoras. Lo que sabemos de él nos llegó a través de testimonios de algunos de sus contemporáneos, como su alumno Platón, quien lo usó como personaje principal en la mayoría de sus obras.
A través de estas obras, Platón muestra cómo Sócrates habla con diferentes “autoridades” respetadas acerca de algún tema puntual: políticos, jueces, generales, artistas, etc. Sócrates les hace preguntas para profundizar en el tema del que ellos saben, hasta llegar al punto en el que la supuesta autoridad ya no sabe qué responder. A partir de ahí, se ponen a buscar juntos la respuesta. Este método de investigación, el método socrático, sienta las bases primordiales de la investigación social y científica tal como la conocemos hoy en día. Pero lo que yo considero interesante del método es que también es aplicable a nuestro mundo interior.
El título del post es engañoso a propósito. No se trata de psicología en el sentido más formal que tiene hoy, sino en el sentido originario de las palabras que componen el término psicología:
- ψυχή (psyché): Originalmente, soplo, hálito o aliento que exhala el ser humano al morir. Más tarde, alma, espíritu, mente.
- λóγος (lógos): Palabra, discurso, razonamiento, argumento.
Esto tiene que ver con un principio fundamental del método socrático: si bien es posible acceder a ciertos conocimientos más o menos avanzados, para eso antes tengo que conocerme a mí mismo. ¿Por qué? Porque porque yo mismo, a la vez que deseo algo, soy también una herramienta para obtener eso que deseo.
Si lo que sigue parece sacado de un libro de autoayuda, es porque ese es un poco el objetivo. La palabra autoayuda se aplicó de manera genérica a tantos productos comerciales con tan poco contenido útil que perdimos gran parte de su significado. Gracias al marketing y una cierta élite intelectual, casi cualquier persona con dos dedos de frente desprecia el género de autoayuda, simplemente porque está catalogado así y no por lo que realmente dice. Creo que vale la pena rescatar este significado de autoayuda como algo que nos sirve para mejorarnos a nosotros mismos, sin que esto implique estar comprando humo.
Problemas
En base a mi experiencia en desarrollo, y comparándola con las experiencias de varios colegas del área, todos ellos programadores o gente que trabaja muy cerca de programadores, agrupé una serie de problemas que considero bastante importantes en cinco categorías: Inteligencia, Relaciones, Justificaciones, Resultados y Soluciones. No es una lista exhaustiva, e incluso tuve que dejar algunos ítems afuera en beneficio de la brevedad, pero creo que sirve para tener un buen pantallazo general de nuestras falencias y cómo tratarlas.
Inteligencia y soberbia: Yo C++ que vos
Hay un mito acerca de los programadores. Se dice que, para ser un programadores, tenemos que ser muy inteligentes, estar en pésima forma física, ser muy malos para las relaciones personales, y tener más de 30 años y seguir viviendo con nuestros padres.
Estas cosas no son malas de por sí, y algunos podemos coincidir con esa descripción (porque los estereotipos existen por algo), pero no nos representa como grupo ni como individuos. No habla de cómo es cada uno en su vida cotidiana. Cualquier programador diría que esta descripción es errónea. Pero seguramente pocos cuestionen la inteligencia que se nos adjudica. Esa parte del mito sí elegimos creerla. ¿Quién quiere admitir que no es tan inteligente?
En nuestro tiempo la inteligencia tiene un lugar que no merece. Se muestra a los exitosos como seres súper inteligentes, que nunca se equivocaron. El exitismo deja el proceso de lado, como si no importase. La inteligencia no es mas importante que la voluntad, que ser expeditivo, que ser constante.
Santiago Bragagnolo
La realidad es que los programadores no son necesariamente más inteligentes que la gente de otras áreas. Quizás tengamos una habilidad un poco mayor al promedio para resolver procesos lógicos, pero eso es esperable, porque estamos entrenados para eso. La resolución lógica no es lo único que hace a la inteligencia, ahí están en juego muchos otros factores. Diseñar, planear, vender, difundir, son cosas tan complejas como lo que hacemos nosotros, y la media de los programadores comete tantas estupideces y toma tantas pésimas decisiones en su desempeño diario como cualquier otro mortal.
Mantener esta actitud de creernos superiores es peligrosa. Nos cerramos a nuestros colegas, incluso a otros programadores. No es difícil entender por qué pasa esto: una de las maneras más sencillas de validarse a uno mismo es desmerecer lo que hace otro. Si alguien hace algo que consideramos de calidad inferior, o con una herramienta distinta, para nosotros es objeto de burla o de crítica. Porque es tan incapaz que no puede hacer las cosas bien (como nosotros) o porque su solución al problema es distinta de la nuestra. Creemos que lo que hacemos es mejor que lo que hacen los demás, porque necesitamos esa validación que nos demuestre que no somos un fraude, que estamos a la altura de lo que el mito pretende de nosotros. No le prestamos mucha atención al hecho de que los métodos y los errores de otros pueden ser oportunidades para aprender algo.
Como desarrollador es interesante poder aprender no solo de nuestros errores, sino también de los de los demás.
Esta es una de las partes más difíciles del proceso de autoconocimiento. Todos tendemos a querer que las cosas nunca cambien, a rechazar todo lo que rompe con nuestra concepción del mundo y nos saca de nuestra zona de comfort. Nuestras ideas, nuestras creencias, lo que pasa en nuestro mundo interior, al igual que lo que hacemos en el mundo exterior, son hábitos, son costumbres. Y los hábitos y costumbres son difíciles de cambiar. Por eso aceptar nuestros errores nos cuesta tanto como cambiar de marca de papel higiénico.
Lo interesante de los modelos mentales es que a partir del momento en que tenemos uno definido, el universo nos brinda suficiente evidencia de que esa es la forma en que funciona. Reconocemos y tenemos en cuenta la evidencia positiva, y creamos excusas cuando la evidencia no se corresponde con nuestro modelo.
Confiar demasiado en lo que creemos saber nos vuelve descuidados. Evitamos seguir reglas que nos digan cómo hacer algo en base a nuestras preconcepciones de cómo hay que hacerlo. Creemos que estamos haciendo las cosas bien porque las estudiamos, sabemos un montón de datos y conocemos los lenguajes que usamos. Descartamos y subestimamos herramientas porque suponemos que sabemos resolver algo por nuestra cuenta, por más que nos lleve más trabajo. No salimos de lo que ya sabemos, de nuestra zona de comfort, y la falta de novedad nos vuelve poco creativos y limita nuestra capacidad de resolver problemas. Después nos extrañamos, como si fuera culpa de otro, de que perdimos el entusiasmo por proyectos en los que inicialmente habíamos puesto un montón de energía.
Este descuido nos hace poco solidarios. No nos preocupamos por qué tan comprensible y mantenible es nuestro código. No pensamos de qué manera otros pueden llegar a interactuar con lo que escribimos. No se nos cruza por la cabeza hacerlo accesible a principiantes. Pero nos creemos mejores que quienes no son capaces de entenderlo o integrarlo, cuando no estamos haciendo un trabajo necesariamente mejor que el suyo. Lo único que nos salva de considerarnos unos idiotas a nosotros mismos es que conocemos los pormenores de nuestro trabajo: sabemos por qué hicimos algo de la manera en que la hicimos; pero al no saber acerca del contexto en el que trabaja otro programador, optamos por la opción fácil y lo tildamos de idiota.
En lugar de ridiculizar al que no sabe, si sabemos tanto, deberíamos enseñarle a hacer las cosas de una manera más eficiente, más acorde a las prácticas recomendadas de la herramienta que usemos. Algo que hace a WordPress único en su tipo es que cuenta con una comunidad enorme de gente con esta actitud solidaria y proactiva. Gente que intenta ayudar al resto de la comunidad por medio de difusión de buenas prácticas, soporte en foros, colaboración en el Codex, y un ambiente de buena voluntad generalizado en el que, normalmente, trabajar es muy placentero. No voy a presentarlo como algo que es todo color de rosas, pero los factores menos agradables no impiden que la comunidad se siga desarrollando en una relativa armonía. Acá tenemos algo que es invaluable, y que generalmente no advertimos: la posibilidad de aprender, ayudar, enseñar, dar y recibir ayuda sin importar el nivel de experiencia ni el perfil que tengamos, y es un ambiente sumamente propicio para desarrollar nuestras habilidades.
Este hombre cree que sabe algo, mientras que no sabe nada. Pero yo, que igualmente no sé nada, tampoco creo saber algo.
Platón, Apología de Sócrates
Algunos de ustedes quizás conozcan a Sócrates como el que dijo “solo sé que no se nada”, pero esto es una mala interpretación de varios diálogos. Lo que si habría dicho es que no es posible saber nada con absoluta certeza, por más seguro que uno esté de lo que cree saber. Entonces, este proceso por el que necesitamos pasar no se trata tanto de admitir que somos unos ignorantes, o de creer que no sabemos ni aprendimos nada. Aprendemos, sabemos un montón de cosas, pero eso no significa que tengamos la verdad absoluta sobre nada, y que necesitamos un cierto cuestionamiento sobre lo que hacemos para aprender a identificar en qué estamos fallando y corregirnos.
Relaciones y distancia: El problema son los otros
Lo que hacemos nos encanta, y estamos horas con eso, y hablando de eso, y juntándonos con gente que hace también eso. Está genial, siempre y cuando cuidemos las relaciones con profesionales de otro tipo, y especialmente con usuarios finales, que son para quienes trabajamos, y muchas veces ni siquiera nos preocupamos por entenderlos.
A veces nos relacionamos de formas negativas con la gente que trabaja con nosotros. Esto se traduce en un cierto maltrato, a veces más explícito, a veces menos, hacia los que hacen otro tipo de trabajo. Otras veces nos alejamos de los demás y elegimos no relacionarnos con ellos, nos desconectamos. Con frecuencia nos creemos incomprendidos, sin siquiera cuestionarnos qué estamos haciendo para que el resto nos comprenda.
Con el tiempo desarrollamos una jerga técnica demasiado complicada de entender para quienes se dedican a otra cosa. Esto acorta nuestra comunicación con la gente con la que tenemos que trabajar, nos rehusamos a entenderlos, y nos damos el lujo de hacerlos sentir mal porque “no están a nuestra altura”. No vemos las cosas desde su perspectiva, y perdemos la capacidad de abstracción de la experiencia del usuario en favor de la implementación que nos resulta más cómoda a nosotros. Al igual que nos pasa con otros programadores, no sabemos cómo trabajan a diario nuestros colegas de otras áreas, cómo interactúan con sus aplicaciones, qué necesitan para hacer su trabajo más eficiente. Terminamos creando productos que son técnicamente funcionales al 100%, pero complicados de usar y difíciles de entender. Y si alguien encuentra complicado usar lo que desarrollamos, el problema es suyo, no nuestro. El problema son siempre los otros.
Se da un gran problema cuando eso que hay que programar pasa solamente por los programadores, con una influencia externa reducida. La influencia externa es uno de los pilares de la innovación, y si no está presente en un proyecto, tarde o temprano ese proyecto se estanca.
Por limitaciones o por encasillamiento, a veces se limita el diseño o la innovación en un proyecto. Por ende, el problema también deriva en programadores que no intentan investigar más allá, salir de su lugar cómodo y buscar nuevas maneras de hacer y resolver las cosas. Podría resumirse en la no creatividad, cuando en realidad el trabajo de un programador es tan creativo y creacional como el del diseñador.
A nivel macro, esto también impacta en WordPress como herramienta. Es algo muy positivo que haya tantos programadores comprometidos en el desarrollo de la plataforma, pero la cantidad de influencia desde otras áreas se termina viendo opacada por tantos programadores, y no se está escuchando gran parte del feedback que nos llega de otras áreas. Esto hace que los programadores tengan demasiada influencia en el desarrollo de la plataforma, y que se favorezcan las herramientas orientadas a otros programadores en detrimento de la interfaz y la experiencia del usuario. No estoy diciendo que no haya habido mejoras notables en los últimos tiempos, pero podría haber habido muchas más. Y tampoco es malo que haya cada vez más herramientas para programar, pero no por eso se debería descuidar la experiencia.
Para Sócrates, la manera de afrontar este problema de estar tan ensimismado es el diálogo con otras personas. Que el otro funcione como un espejo de lo que somos y nos devuelva una imagen que quizás no es la que esperamos, pero que podamos tener la suficiente entereza para aceptar esa imagen, aunque no coincida con nuestras expectativas, y no dejarnos avasallar por esa realidad. Esto fue justamente lo que no pudieron soportar los que lo condenaron. No es sencillo, porque a veces nos perdemos en las palabras muy rápido, nos ensimismamos en las discusiones y las prolongamos más de lo debido, hasta que pierden el sentido. Necesitamos no llegar a ese punto; lo ideal sería llegar a un punto en común a partir del cual se pueda seguir trabajando, aunque todavía exista lugar para el cuestionamiento. Si algo no quería Sócrates, eso era que la historia de la filosofía se convirtiera en una sucesión de eternas discusiones que nunca llegaran a nada. Se suponía que la filosofía debía llegar a construir algo, y eso no ha pasado con la gran mayoría de los filósofos, quienes nunca salieron de atrás de su escritorio. De la filosofía han salido sistemas políticos, revoluciones, movimientos artísticos, muchas cosas. Pero eso lo generó una minoría que supo salir del lugar común de la discusión por la discusión misma. En el mundo del desarrollo no estamos en un lugar muy distinto. Por supuesto que se lograron muchas cosas, pero se podría haber logrado mucho más con el potencial que hay disponible.
Justificaciones y excusas: Era joven y necesitaba el dinero
Estamos llenos de excusas. En general las damos por haber estimado mal algún plazo, o por los malos resultados de un trabajo. Algunas ejemplos de estas excusas son: “tenía poco tiempo”, “lo hice solo por la plata”, “no me gustaba el proyecto”, “el cliente pagaba poco”, “había pocas directivas”, “había muchas directivas”, “los requisitos no estaban claros”, “lo diseñó otro”, “el programador anterior usó un patrón horrible”, “no me gustaba el framework”, “no me gustaba el lenguaje”, etc. Probablemente muchos de nosotros hayamos recurrido a más de una de esas excusas en diferentes oportunidades.
El problema no es tanto la excusa en sí misma. En nuestra vida cotidiana damos montones de excusas todo el tiempo para muchas cosas. No haber regado las plantas, no haber sacado a pasear al perro, olvidarse de comprar la leche. Si nos volvemos completamente autocríticos con nosotros mismos, toda nuestra realidad se desmorona. Necesitamos las excusas para no cuestionarnos innecesariamente todos nuestros errores. Nadie puede vivir bien si se cuestiona todo lo que hace. El problema empieza cuando damos excusas sistemáticamente sobre las mismas cosas. El tema es que la barrera entre la excusa y la justificación válida suele ser muy difusa. ¿Cómo reconocemos las excusas? ¿Cómo cambiamos las excusas por la realidad?
Pero respecto a nosotros, conforme a nuestro principio, […] es preciso morir aquí o sufrir cuantos males vengan antes que obrar injustamente.
Platón, Critón
El proceso de cambio es difícil, y es normal que no nos guste. Requiere reconocer nuestras falencias, nuestras miserias, hacernos cargo de que nuestros actos tienen consecuencias. Lidiar con nuestras propias derrotas personales. Sócrates fue condenado por ir en contra de las costumbres atenienses, y hay pocas cosas tan difíciles de cambiar como las costumbres. Él ya las había cambiado para sí mismo, pero una gran mayoría no estaba dispuesta a hacerlo. Tuvo la posibilidad de escapar, pero sabía que la condena era un posible resultado de sus actos, y decidió afrontarla porque era parte de un conjunto de reglas que él ya había aceptado de antemano. Llevar este idealismo a la programación sería un poco absurdo, pero sí quisiera que esto sirva como una invitación a intentar aprender a sobrellevar esas pequeñas derrotas con la frente en alto, y no con negación, culpa o vergüenza.
Necesitamos preguntarnos si las estimaciones que damos, o los proyectos que encaramos, no son más expresiones de deseo que algo que estemos seguros de poder cumplir en tiempo y forma. A lo mejor nos encantaría terminar algo para determinada fecha y con un cierto estándar de calidad, nos emocionamos con la idea de tenerlo hecho, y dejamos de considerar varias eventualidades que pueden llegar a surgir. O nos creemos tan buenos en lo nuestro que creemos que no va a haber problema en hacerlo, pero más adelante nos encontramos con que tenemos que inventarnos una excusa para no sentirnos unos fracasados.
Todos hicimos malas estimaciones en algún momento, ya sea por nuestra cuenta u obligados por alguien, y por más que mejoremos, no vamos a estar exentos de hacerlas en el futuro. Si en un momento dado no supimos cómo resolver algo, está todo bien: no llegamos a este punto sabiendo todo. El punto actual es el resultado de montones de errores, y vamos a seguir cometiendo muchísimos a medida que mejoremos. Una vez que tenemos esto asumido, la realidad termina siendo más simple de lo que parece al momento de buscar excusas. Ya no necesitamos buscar razones para perdonarnos a nosotros mismo aquello que no le perdonamos a los demás. De hecho, ya ni siquiera nos hace falta juzgar tan duramente a los demás. En lugar de sentirnos unos incomprendidos, una vez que nos comprendemos más a nosotros mismos también podemos educar mejor a quienes intentan imponernos plazos y requisitos inalcanzables, defender mejor nuestras razones.
Resultados y conformismo: A mí me anda
Muchas veces, cuando creamos soluciones para salir del paso y que solamente funcionan para nuestro caso particular, nos estamos excusando por no querer ir un poco más allá, aprender más, dar algo más de nosotros, pero no por el otro o para el otro, sino para nosotros mismos y por la calidad que va a tener nuestro trabajo en el futuro. Corremos el riesgo de convertirnos en máquinas de resolver problemas puntuales, totalmente carentes de especialización, e incapaces de manejar otras plataformas o lenguajes distintos de los que ya conocemos muy por encima.
En este caso, estamos en una situación paralela a esos interlocutores de Sócrates que, al ser interrogados con una profundidad cada vez mayor, llegan a un punto en el que no saben qué más responder, porque todo lo que creían saber parece insuficiente para responder a un problema complejo acerca de eso en lo que se supone que son expertos. Es elección nuestra profundizar en busca de respuestas, aunque eso requiera cuestionar todo lo que sabemos, o seguir inmersos en la duda.
El hecho de que WordPress sea sencillo de usar no implica que haya que atarlo con alambre.
WordPress ofrece una vía de entrada al desarrollador tan sencilla que requiere muy poco conocimiento previo de programación para extenderlo. Esto es, al mismo tiempo, bueno y malo: no significa que solamente tengamos que ocuparnos de que las cosas que hacemos funcionen, que haya que ignorar las buenas prácticas o la coherencia interna. Si bien WordPress nos saca de encima el trabajo pesado de infraestructura, también nos deja hacerlo si lo necesitamos, y seguramente necesitemos hacerlo en algún punto en el que construyamos algo medianamente complejo. Necesitamos profundizar si queremos ofrecer trabajos de mejor calidad, más rápidos, más eficientes, más fáciles de mantener, y que incluso nos lleven menos tiempo de desarrollo. Tenemos muchos “implementadores” en el ecosistema, gente que sabe modificar y crear themes y plugins sencillos, que conoce las bases de la programación en PHP y JavaScript, y con muy buena preparación en HTML y CSS. Y ya son tantos que la competencia dentro de ese perfil es cada vez mayor, y cada vez se los busca menos. Cada vez se requiere un conocimiento no necesariamente mayor, pero sí más profundo, más especializado, más intensivo que abarcativo. Y la mayoría de los implementadores cuenta con los recursos, pero por alguna razón no profundizan en la plataforma, y por lo mismo no se especializan ni crecen. Sería muy bueno ver a varios implementadores con un deseo genuino de convertirse en programadores avanzados, no solamente orientados a WordPress, sino en un sentido general.
Soluciones e ideales: Lo irreal de lo definitivo
Los sectores de marketing de las empresas de informática vienen taladrando en las cabezas de todos la palabra “solución” desde hace tanto tiempo y con tanta intensidad que para muchos de nosotros ya suena a algo vacío y que se dice para tratar de convencer a alguien de comprar algo que no necesita. La solución se vende como definitiva, y cuando aparece una mejor, resulta que es todavía más definitiva que la otra.
En este contexto el término “solución” tiene una connotación un tanto inmoral, o cuando menos engañosa. Los programadores creemos estar más allá de ese discurso de marketing, porque trabajamos en paralelo a esa área, creemos conocer cómo opera, y creemos saber que la solución ideal no existe, que solo hay soluciones relativas. Sin embargo, muchas veces terminamos comprando este discurso, aunque no nos demos cuenta.
Es muy común, cuando dominamos una herramienta, querer usarla para todo. Abundan implementaciones de WordPress para crear patrones MVC, sistemas de deployment complejos, de backup, de versionado, e incluso paneles de control para servidores. Algunas tienen más aceptación y éxito que otras, pero hay una enorme porción de la comunidad que nunca se puso a pensar si algo así es realmente una buena idea. WordPress no fue pensado para resolver ciertos problemas porque justamente no existe forma óptima de resolverlos a través de WordPress, la solución tiene que darse en otro nivel. Decir que un método es mejor que otro simplemente porque lo usamos o nos gusta más es negarnos a analizar de manera práctica un problema concreto. No todo puede solucionarse usando los mismos procesos.
Hace un tiempo me prestaron un taladro, y después de colgar un par de repisas quería hacerle agujeros hasta a la heladera. La emoción por el juguete nuevo es comprensible, pero pensar que una única herramienta que resuelve un conjunto de problemas específicos también va a poder resolver cualquier otra cosa que yo quiera que resuelva, eso ya es absurdo. Mi herramienta favorita no me va a solucionar todos mis problemas solamente porque es mi favorita. Nada me impide usar el taladro para poner clavos, pero probablemente un martillo sea más eficiente.
Es difícil decir que una manera es la mejor forma de hacer algo en programación. El criterio tiene bastante importancia para poder hacer las cosas de la mejor manera posible, y llevarlas a la realidad al mismo tiempo.
Necesitamos reforzar mucho más esta idea de que no existe una solución definitiva entre nuestros colegas, jefes y clientes; dejar de lado la distinción entre mejor y peor, bueno y malo, y adoptar una perspectiva en la que co-existen conjuntos de soluciones más o menos adecuadas para problemas determinados, de entre las cuales necesitamos elegir las que se integren con mayor naturalidad al contexto en el que estamos trabajando.
Un gran ejemplo de esto es WordPress mismo como plataforma. Muchos ven como un defecto imperdonable el hecho de que WordPress aplique y permita aplicar varios enfoques distintos para la resolución de problemas. Algunas cosas se resuelven usando OOP, otras con funciones, y otras con programación lisa y llanamente estructurada. No hay un único método o patrón de resolución dictado por una inteligencia magnánima para extender o modificar funcionalidad, sino que se permite al programador aplicar el método que le resulte más cómodo a la hora de hacer lo que planea hacer. Y si bien esto puede ser una puerta de entrada a las malas prácticas, también aporta a que el programador novato se introduzca rápidamente en un framework con pocas restricciones, a partir de lo cual puede (o no) ir mejorando su trabajo. Esta flexibilidad es una de las mayores fortalezas de WordPress, es un voto de confianza en que el programador puede encontrar la mejor solución por su propia cuenta, pero también el reconocimiento de que no todos los problemas pueden ser tratados de la misma manera.
De esto se desprende algo que puede ser tan fascinante como terrorífico: la realización del ideal puro no existe. Sócrates, a través de sus interrogatorios, intentaba llegar a una definición general que se pudiera aplicar a todos los casos particulares, pero tenía bien presente que, en el mundo real, ninguno de los casos particulares iba a cuadrar de manera exacta con la definición general. Sin embargo, no por eso se debía dejar de mirar a la definición general como punto de referencia. Casi toda la filosofía que vino después de él se trató de las infinitas posibilidades que hay para entender y tratar esta relación entre la definición y lo definido. Lo que muchos tienen claro es que, por más que la perfección no exista, aún deberíamos seguir apuntando a lo más similar a esa perfección que podamos, y acercarnos cada vez más cuando se presente la posibilidad.
Conclusiones
Para terminar quisiera aventurar una respuesta a la pregunta inicial: ¿hasta qué punto nosotros mismos somos responsables de que nos pase esto? Mi respuesta es: hasta el punto en el que dejamos que nos pase. Es totalmente tautológico, críptico, pero creo que la respuesta definitiva es distinta para cada uno. Hay que aprender a reconocer la particularidad de cada iteración a partir de ese autoconocimiento que vamos desarrollando.
Necesitamos romper muchas ataduras que nosotros mismos nos creamos. Para ser mejores, pero no con respecto a los demás, sino con respecto a nosotros mismos. Creo que, de alguna manera, podemos aplicar todo esto a nuestra vida en general, no solo a nuestro trabajo. Esta charla apunta a programadores porque es el sector que mejor conozco, pero creo que esto es aplicable también a otras áreas. Los diseñadores, los analistas, los project managers, seguramente también pueden encontrar puntos en común con todo esto. No se trata de estigmatizar al programador con todos estos problemas, sino de superar lo que venimos haciendo a partir de la exploración personal, y eso está al alcance de cualquiera. La manera que encontremos para hacerlo depende de cada uno, no hay una solución definitiva para esto.
Hay una falsa concepción de WordPress como una herramienta limitada, insegura y mal construida, y eso es algo en lo que todos tenemos que trabajar más para cambiar, porque los que tuvimos oportunidad de evaluar y comparar varios sistemas diferentes en profundidad sabemos que este no tiene nada para envidiarle a los demás. No me refiero a cambiar esa concepción para mostrar que somos mejores que otros, ni que estamos a la altura de alguien más, porque acá no estamos compitiendo con nadie. Hablo de cambiar esta concepción para que se sume más gente a este proyecto, para que esta comunidad crezca, y para que eventos como este sean algo cada vez más común, para hacer cosas que nos reporten un beneficio a todos en conjunto.
Si algo bueno tiene esta comunidad es que está llena de gente común, como cualquiera de nosotros. Y el orgullo que esas personas sienten por eso es lo que las hace particulares. Yo realmente disfruto mucho de estar trabajando todos los días entre toda esta gente. Por eso esto es más un conjunto de reflexiones sobre cosas que nos pasan a muchos que un discurso de un tipo que pretende decirle a los demás lo que tienen que hacer con su vida. No es mi intención hablar desde una posición de superioridad. Por eso también quería compartir un poco de mi historia.
No me considero el mejor poniendo en práctica todo esto; de hecho lucho contra todos estos problemas a diario. La mente del ser humano es paradójica y, en los últimos años, mientras trataba de ser tan honesto conmigo mismo en lo que respecta al trabajo, no lo estaba siendo con lo relacionado a mi carrera académica. Como pasa con muchos proyectos abandonados, la forma en que manejé mi carrera en filosofía no fue algo sobre lo que haya reflexionado lo suficiente en el momento en que tendría que haberlo hecho, cuando todavía me importaba. Necesitamos aferrarnos a las cosas antes de que dejen de importarnos.
Creo que somos un puñado de nenes con tanto miedo a vivir y sufrir que jugamos a ser grandes. Y lo que es peor, nos olvidamos de que estamos jugando.
– Santiago Bragagnolo
La sabiduría no se da de golpe, y la experiencia no es solo producto de los años. Cuando estaba en la secundaria yo era un adolescente bastante tímido y retraído, muy inseguro. Una idea que me tranquilizaba era que un día iba a ser un adulto y que ya no me iba a sentir así, como si mágicamente todo lo que me hacía dudar de mí mismo fuera a desaparecer. Hoy tengo 30 años, y todavía espero que eso pase algún día. Como muchos otros, estoy tratando de convivir día a día con mis inseguridades, con costumbres que intento cambiar, en lugar de dejar que simplemente me paralicen.
Espero que mi experiencia pueda ser útil.
Me ayudado bastante, me alegro el dia…
Estupenda reseña.
A tomar nota!
Gracias por tu experiencia amigo, por algo llegue a este lugar y me sentia frustrado por muchas dudas acerca de wordpress ya que nunca he usado y es algo nuevo para mi, bendiciones…