Algunas reflexiones en la carrera de un arquitecto de software

¿Qué lleva a un desarrollador a convertirse en arquitecto de software? Si quieres desempeñarte en la carrera tecnológica, estos sencillos fragmentos de sabiduría popular, confirmados por la experiencia personal, pueden ser de ayuda. Se paciente, nunca dejes de aprender, confía en tu equipo y apégate a la simplicidad lo más que puedas.

La paciencia no es obsoleta: await function();

Si tienes menos de cuarenta años, entonces es probable que las computadoras no te hayan cambiado la vida, porque siempre estuvieron presentes desde tu infancia. En ese caso, compartes con mi generación la preferencia por lo inmediato que la tecnología digital estimula. Si lo dudas, pregúntate cuántos segundos pasan antes de que revises tu conexión si una página no carga en un abrir y cerrar de ojos. Esto es paradójico, porque la paciencia de la mente del desarrollador es la responsable de la velocidad de carga instantánea, así como del diseño de esa página que te interesa y de la lógica e infraestructura que la sostienen.

Los desarrolladores de esas sorprendentes tecnologías pasaron años estudiando lenguajes de programación y cómo ensamblarlos unos con otros. Del mismo modo en que un estudiante de un idioma extranjero pasa meses, o incluso años, cometiendo errores de pronunciación o gramática, hasta que se vuelve fluido, un desarrollador tiene que ser paciente (¡incluso necio!) si quiere ver resultados.

Pero no se trata de sentarse a esperar que llegue la iluminación digital, sino a salir a buscarla con trabajo. El esfuerzo constante debe equilibrar esa paciencia. Personalmente, desde los 16 años me supe interesado en la programación y las matemáticas, pero pasaron años de periodos de estudio formal e informal, intercalados con etapas de trabajo, para finalmente entrar de lleno en la industria. La trayectoria no fue siempre una línea recta ascendente, pero mi objetivo estuvo relativamente claro.

Es cierto que a la ecuación de la paciencia y al esfuerzo hay que añadirle una variable más. Unos lo llamarían suerte; yo diría que más bien tiene que ver con mantener los ojos abiertos a las oportunidades. Esto implica, al menos en las primeras etapas de la construcción de una carrera, estar abierto a lo que uno puede y podría interesarse en hacer. Se habla de TI, desarrollo o programación, y quienes no estén inmersos en ello, podrían tener una vaga idea de que se trata de “algo de computadoras”. Pero sabemos que no es así; la tecnología es un universo vasto. Un artículo de Indeed identifica al menos 21 tipos distintos de carreras a explorar, incluyendo desarrollador web, ingeniero de redes, científico de datos y analista de sistemas, entre otros. 1 ¿Cuál es la tuya?

Aprendizaje continuo (y responsable): while x < y { x ++};

Cuando hablo de esfuerzo en este proceso de formación, naturalmente me refiero al aprendizaje, y eso ocurre por medio de la constancia. Piensa en tu cerebro como en un músculo; con una sola sesión de gimnasio no se pone más fuerte, y si después de varias sesiones dejas de ir, lo ganado se pierde. Que sea tu lema no dejar que pase un día sin que aprendas algo.

Es cierto que podemos sacar mucho de escuelas y universidades. Yo mismo pasé (de manera parcial o concluyendo los programas de estudio) por instituciones como UT Tecámac, ESIME Zacatenco y UNAM. Pero no desestimes el valor de ser autodidacta. Te confieso que haber pasado horas solo frente a la computadora, investigando, experimentando e intentando solucionar problemas (a veces con una dosis de frustración), me enseñó más que la academia; aunque reconozco que puede no ser el mejor estilo de aprendizaje para todos. Si tienes dudas acerca de lo que te funciona mejor, te recomiendo que eches un vistazo al artículo Self-Taught Coder Vs. College Programmer: 10 Differences (El programador autodidacta contra el programador de universidad: 10 diferencias.) 2

Sin embargo, el ímpetu de aprender a diario debe también estar equilibrado. En este caso, por la responsabilidad de lo que tienes enfrente. Si aún no te desempeñas en el terreno laboral, te recomiendo que enfoques tu estudio en lo que será útil, y en dominar un área de conocimiento antes de pasar a la siguiente. Por otro lado, si ya tienes trabajo, lo responsable es ofrecerle una solución al cliente, y prepararte para el tipo de retos a los que se van a enfrentar nuevos clientes. Por ejemplo, Machine Learning es un tema “sexy” actualmente, pero a menos que tengas necesidad de aplicarlo en el futuro próximo, no te aconsejo que le inviertas mucho tiempo y energía. De lo contrario, para cuando llegue el momento en que realmente lo necesites, ya habrás olvidado dos terceras partes y tendrás que aprenderlo de nuevo.

Aquí es pertinente el dicho de que el que mucho abarca, poco aprieta. Recuerda que no es necesario saberlo todo. Así sepas bastante de un tema en particular, puedes estar seguro de que alguien más lo conoce mejor, y es posible que esté en tu equipo de trabajo y te pueda ayudar con ello. Es cierto que hay algunos que nos impresionan con su conocimiento enciclopédico, ¿pero cuántos años les tomó llegar a ese punto? ¿Cuántos llevas tú en esta carrera?

Confía en tu equipo: if (x === true){return x};

Cuando los soldados van a la guerra ponen el cuidado de sus vidas en sus compañeros de batallón. Afortunadamente, nosotros no nos jugamos la vida con una carrera tecnológica; pero a menudo el trabajo es complicado y la presión intensa, y puede sentirse como una guerra. Entonces, de manera similar a los soldados, es importante que confiemos en los miembros de nuestro equipo.

Esto continúa siendo cierto cuando alcanzas una posición de liderazgo. Tengo la fortuna de encontrarme ahí en este momento, y no me gusta perseguir a la gente para que se desempeñe, sino confiar en ella y dejarla autodirigirse. A fin de cuentas, yo participé en el proceso de reclutamiento y evaluación, por lo que conozco de lo que los miembros de mi equipo son capaces. Si hay algo en lo que puedo ejercer influencia positiva sobre ellos, procuro que sea por medio del ejemplo y de involucrarme como programador activo y no exclusivamente como arquitecto.

Te preguntarás, ¿pero qué pasa si alguien no funciona dentro del equipo? Y tienes razón en que no existe una garantía contra esto. Empecemos por responder que “no funcionar” no es lo mismo que cometer errores, de los cuales nadie está exento. Tropezar siempre es permitido, siempre y cuando se esté dispuesto a aprender y levantarse. O dicho de otro modo: siempre vamos a vivir con bugs, y un arquitecto (incluido un servidor) tiene que resolver los propios y ajenos igual que cualquier otro desarrollador.

Se trata de una cuestión distinta cuando un miembro del equipo comete un fallo mayor, y con esto me refiero a un error que es producto de la irresponsabilidad o la falta de compromiso. Aun así, yo creo en escuchar y hablar con honestidad y tranquilidad, y dar tres oportunidades. Pienso que no más, porque no debemos olvidar que tenemos que dar prioridad a los intereses del cliente.

Finalmente, mantenlo simple: let x = 1;

Si estás leyendo esto, seguramente habrás escuchado del principio “K.I.S.S.” en programación, traducido por sus siglas en inglés, ya sea como “Mantenlo súper simple”, o de forma menos gentil “¡Mantenlo simple, estúpido!”; como uno prefiera. Puedes encontrar toneladas de artículos y blogs comentando el concepto. Para encapsularlo, me gusta esta frase del blog de Kwerenachi Utosu: “En el concepto de KISS, no queremos ni menos ni más, simplemente queremos tanto como sea requerido.” 3

Bien, tengo una noticia para ti. Es cierto. Nuestro trabajo es ya bastante complejo por sí solo, así que ayudémonos a nosotros mismos, y a nuestros clientes, buscando soluciones lo más simples posibles para problemas complejos. A este axioma podemos añadir que es mejor trabajar inteligentemente que trabajar duro. Recuerda, a nadie le dieron una medalla por sudar en exceso, sino por llegar entre los primeros lugares. Cuando se trata de un problema concreto (un proyecto o producto), eso se logra normalmente siguiendo la línea lo más recta posible. Por supuesto, no siempre podemos alcanzar el ideal de la sencillez de la línea recta, pero sin duda deberíamos aspirar a ello.

¿Y tú qué opinas? ¿No son estas reflexiones realmente dignas de K.I.S.S.?

Photo by ThisIsEngineering