Reflexiones finales

¿Hay vida después del diseño? No lo sé, pero si la hay, parece que no sigue ningún patrón. – Delirios de final de semestre.

Diseña la mejor versión de ti.

No me agrada el titulo de reflexión final. A fin de cuentas, en nuestra vida deberíamos realizar una constante evaluación de nuestros progresos. Somos ( o deberíamos ) ser una constante refactorización de nosotros. Somos un producto por iteraciones, donde nosotros decidimos el tiempo invertido por sprint. No es el final. Ni siquiera de la materia.

En mi vida, suelo ponerme pequeños sprints, sobre las cosas que quiero mejorar en mi. ¿Quiero retomar mi condición física? ¿Quiero masterizar una habilidad? ¿Quiero retomar una actividad?

Fuente: https://sometimesiwriterandomstuff.home.blog/wp-content/uploads/2019/11/3d693-1aesreeihcllrmbfvw_v5lq.png

Creo que esta materia es una de los pocos unicornios académicos que puedo llevar más allá del salón de clases y aplicarla constantemente en mi vida cotidiana. Como mencioné al principio del semestre, la inteligencia consiste en la resolución de problemas y el diseño de soluciones pertinentes a esos problemas.

Por lo que podamos afirmar que exista teoría formal para el diseño de productos y metodologías para resolver problemas se me hace fascinante. Literalmente estamos trasladando conocimiento que nos enseña como exponenciar nuestra capacidad para generar soluciones. El diseño enseña a ser inteligentes, el diseño es la formalización del sentido común.

Diseña tu estilo de vida

De las cosas más importantes que he aprendido hasta ahora es a tener las pautas necesarias para un estilo de vida más sano como desarrollador y como persona. A fin de cuentas, tanta lógica aplicada al desarrollo de la teoría de diseño debería poder ser trasladada a otros productos, incluso a personas. Scott Hanselman nos mostró que una vida optimizada, en donde aprovechemos nuestros tiempos de forma productiva no tiene que ser un constante sufrimiento. Todo con medida. He aprendido que en realidad todo trabajo y proyecto, por más grande que sea podemos separarlo en pequeñas tareas. El arte de saber en que pequeños pedazos podemos separar esas actividades, viene a partir del sentido común, teoría de diseño y la experiencia.

Por otro lado, aprendí de Kent, que jamás estamos a destiempo para experimentar y realizar cosas nuevas. Siempre tener un poco de dolor por la incertidumbre es necesario, a fin de cuentas es lo que nos mantiene vivos. Además, compartir experiencias, ideas y experiencias es lo que nutre los pensamientos, aquellas ideas locas, aquellas ideas disruptivas y que generan incomodidad, son necesarias. Compartir y no tener miedo de desarrollar, una filosofía de vida que, al aplicarla me ha dado más y más satisfacciónes ( y miedos, y dudas, y emoción y un poquito de estrés y adrenalina) a nivel profesional.

Finalmente, puedo decir que, la filosofía que vivimos en la comunidad de desarrolladores, nos invita a reflexionar sobre nuestra condición humana. Somos humanos, con capacidades finitas. Necesitamos tiempos para descansar, recrearnos. Debemos aprender a decir que no.

La mejor enseñanza que he obtenido de la carrera

Hay dos ideas que me ha enseñado la carrera y que en este curso han tomado una importancia primordial en el paradigma con el que afrento la vida:

Divide y vencerás

Cajas dentro de cajas

El conocimiento es transferible y transformable

Si lo sabes dibujar ( modelar ) ya tienes medio problema resuelto

Lecciones de CS que me han cambiado la vida.


Divide y vencerás. De la primera idea he hablado anteriormente, puesto que no quiero redundar solo diré que, como demostré en el post de unit cases, con rigor matemático podemos afirmar que la separación de una tarea en segmentos más pequeños y consistentes genera un desarrollo y análisis más eficiente del problema.

Lo que nos lleva a hablar de la segunda idea. Cajas dentro de cajas. Todo sistema puede ser representado en entidades más pequeñas, que posean características propias y comportamientos definidos. Esta definición es recursiva y tiene un límite en una escala «atómica». Por lo tanto, el comprender que todo procedimiento, sistema, entidad u objeto puede ser seccionado y evaluado por sus componentes individuales ( y la interacción entre estos) me lleva al resultado automático de generar procesos para generar soluciones claras y entendibles.

El conocimiento es transferible y transformable. La clave radica en encontrar patrones. Al reconocer patrones podemos generar analogías y resolver problemas con viejas soluciones a viejos problemas. De forma inversa, el aprender patrones nos ayuda a encontrarlos más fácilmente en nuestro entorno y por lo tanto a identificar más problemas solucionables.

Si lo sabes dibujar ( modelar ) ya tienes medio problema resuelto. Esta lección viene de mi formación en física. Sin embargo, al aplicar el punto 3 ( analogías) lo puedo considerar como aprendizaje util para CS. El dibujar modelar nuestros sistemas, su estructura y sus comportamientos nos da la imagen completa de este.

Al conocer nuestro sistema, lo podemos dividir.

Al poderlo dividir podemos identificar entidades discretas a las cuales podemos analizar por separado.

Al identificarlas por separado, es más fácil observar comportamientos más simples, que se adecúen a algún patrón que conozcamos. Por lo tanto, su implementación ( y comprensión ) se vuelve más sencilla.

Al comprender la pequeña entidad, es más fácil analizar su comportamiento y corregirlo.

Al comprenderlo mejor y ser más simple per se, podemos entenderlo con mayor facilidad, a pesar de no poseer contexto, puesto que no se requiere el contexto. El objeto se vuelve abstracto.

El proceso de diseño, desarrollo, testeo y verificación, acaba de ser descrito en un par de parrafos, utilizando las ideas 4 fundamentales presentadas anteriormente.

En esto se resume el diseño. O como diría Linus Torvalds, is kind of a good taste in programming.

Deja un comentario

Diseña un sitio como este con WordPress.com
Comenzar