Archivo de la etiqueta: resolución de problemas

Evita frustrar aún más a tus usuarios con tu documentación

Escribir documentación es una de las habilidades más importantes de un desarrollador.

JustSimply.dev:

Si alguien ha llegado a buscar algo que has escrito en Google, significa que está atascado. Estar atascado puede ser frustrante y molesto. Así que trata de no hacer que se sienta peor diciéndole lo fácil que debería ser encontrar lo que busca. Esto puede obstaculizar su capacidad para aprender lo que quieres que aprenda.

Es probable que tengas la tentación de que al escribir documentación sobre tus proyectos, quieras usar palabras como “sencillo”, “fácil”, “simplemente”, “nada más”.

Se entiende. Lo que quieres es contarle a tu usuario lo mucho que estás haciendo por él o ella, resaltando lo poco que tienen que hacer para resolver su problema ahora que va a utilizar tu solución.

Desafortunadamente, con lo que tu lector se va a quedar es con un sentimiento de frustración e insuficiencia, pues en lo que ha estado atorado todo este tiempo, resulta ser “fácil” de resolver.

Tenemos que ser más cuidadosos y compasivos al momento de escribir documentación. Si alguien la está consultando, es porque quiere aprender algo más. Lo menos que podemos hacer es procurar que las personas que nos leen no se queden con la idea de que, dhu, lo que estás buscando es OBVIO.

Analogías, principios básicos y modelos mentales para resolver problemas

Aprende a buscar analogías y modelos mentales que te ayuden a razonar mejor las soluciones que propones.

Regresa a los principios básicos de cómo se resuelven diferentes tipos de problemas, y extrapola sobre eso para tu caso de uso particular. Por ejemplo, si necesitas crear un sistema para que usuarios suban y validen documentos, analiza cómo lo resolvieron en 1989 con el protocolo HTTP. Construye sobre ese principio.

La gran mayoría de problemas que te va a tocar resolver en tu carrera no son nuevos. Y muchas de las dificultades técnicas con las que te vas a enfrentar vendrán de tu propia renuencia a levantar la cabeza para buscar soluciones externas, y de tu tendencia de reinventar la rueda cada vez.

Estás construyendo sobre los hombros de gigantes. Aprovéchalo.

Las 4 fases del conocimiento: aprende a identificar en cuál estás

La semana pasada participé en un taller donde aprendimos el valor de escuchar sin intentar resolverle los problemas a otras personas. En la explicación que dio el facilitador, compartió un concepto que me voló la cabeza: las fases del conocimiento.

Durante el taller, usó esta idea para recalcar la importancia de mantenerse receptivo ante los sentimientos de los otros.

No lo había escuchado nunca, pero se me hizo una forma extremadamente práctica de entender cómo es que el conocimiento se vuelve parte de nuestra vida. Y hoy te quiero compartir ese concepto para que lo utilices cada que quieras aprender algo nuevo.

El conocimiento puede existir en 4 fases dentro de nosotros: Punto Ciego, Aprendizaje, Aplicación y Encarnación.

Las fases del conocimiento: Punto Ciego, Aprendizaje, Aplicación y Encarnación

Cada una de estas 4 fases se vive de manera consciente o inconsciente.

  1. Punto Ciego: Inconsciente. No sabes lo que no sabes. Asumes y supones, pero no te cuestionas por qué de las cosas. Simplemente, aceptas la realidad tal cual. Caes en dogmas y vas por la vida sin preocuparte por los efectos de tus acciones en el mundo que te rodea.
  2. Aprendizaje: Consciente. Por alguna razón, te diste cuenta de tu punto ciego y estás buscando, de manera consciente, expandir tu conocimiento. Estás estudiando, investigando, encontrando maneras de desbloquearte. Haces preguntas, investigas y te vuelves más receptivo a nuevas ideas.
  3. Aplicación: Consciente. Estás cristalizando tus aprendizajes de la fase pasada. Tomas lo que estudiaste, lo que aprendiste, y lo aplicas para terminar de asimilar el conocimiento. La aplicación de lo que has aprendido, a su vez, genera más preguntas. En esta fase es donde descubres tu propia versión de la verdad.
  4. Encarnación: Inconsciente. Lograste dominar tu craft y ahora puedes ejecutarla sin pensar — logras aplicar tu conocimiento de manera inconsciente. En esta fase es donde el conocimiento se vuelve sabiduría. Vuelves a no saber por qué sabes lo que sabes.

Si tienes la suficiente astucia, te darás cuenta de que este no es un proceso lineal, sino cíclico. Cuando logras encarnar el conocimiento, en tu mente se libera espacio para poder ponerle atención a otros aspectos de tu vida. Es ahí donde descubrirás más puntos ciegos, y podrás comenzar el camino de nuevo.

Esta forma de pensar también encaja perfectamente con el efecto Dunning-Kruger (el inverso del síndrome del impostor): “mientras menos sabes, más crees que sabes.” Te hice una gráfica.

La próxima vez que rechaces una idea, pregúntate:

  • ¿Es este mi punto ciego?
  • ¿Hay algo más que pueda aprender de este tema?
  • ¿Podré aplicar lo que aprenda de esto?

Cosas que no te enseñaron en la escuela, pero debes saber para trabajar en la industria del software

A continuación te comparto cosas que no te enseñaron en la escuela, pero que debes de saber si quieres trabajar en la industria del software.

  1. Tú te pones tus propias metas. En la escuela tenías la comodidad de llevar un “plan de estudios”. Sabías lo que seguía en cada paso. Acá afuera nadie va a entregarte un plan de estudios para tu carrera profesional. Tienes que definirlo por ti misma.
  2. No tienes que pedir permisos. ¿Quieres aplicar para un trabajo? ¿Te urge cambiar de tecnología? ¿Te gustaría ganar en dólares y vivir en LATAM? ¿Tu sueño es trabajar para un unicornio? ¿Lo que quieres es pasar más tiempo con tu familia? Date. Nadie te detiene.
  3. Debes de tomar decisiones por tu cuenta. En la escuela te condicionaban a aprender una metodología preestablecida. Salirte del protocolo era castigado. En la vida real tienes que aprender a tomar decisiones y a hacerte responsables de sus consecuencias. Nada más.
  4. Puedes irte en cualquier momento. Tenía un profe que se quejaba de los alumnos diciendo “es que ustedes creen que las cosas van a ser como ustedes quieran”. ¿Y por qué no? Si estás en un trabajo o situación que no te favorece, ¿para qué te quedas? No te pongas la camiseta.
  5. Se espera que sepas colaborar, no que te sepas todos los lenguajes de programación del mundo. Saber más lenguajes de programación solo significa que sabes más lenguajes de programación. Aprende a resolver problemas colaborando — técnicos, de negocio, de usuario.
  6. Saber hacer la pregunta correcta es más importante que ser una enciclopedia de conocimiento. Expandiendo en el punto anterior un poco. “No es la respuesta de StackOverflow, es que sepas lo que tienes que Googlear para encontrarla.”
  7. Programar es un medio para resolver problemas, no un fin. Sí, yo sé que es bien divertido programar. Te aconsejaría que no te clavaras únicamente en eso. Puedes programar toda la vida y no resolver ningún tipo de problema. Y te van a pagar por resolver problemas.
  8. Una solución que es correcta el día de hoy, mañana puede ser considerada ineficiente. Yo creo que en software no hay soluciones “exactas”, sino soluciones “ideales para la situación actual, con el conocimiento que tenemos”.
  9. Existen lenguajes más aptos para resolver ciertos tipos de problemas. Hay desde “lenguaje especializado” que es complicado de aprender, pero te dará soluciones compactas, a “lenguaje genérico” que es fácil de aprender, pero será lejos del ideal para resolver todo.
  10. Mientras más “escalas” de posición, se trata menos del código y más de las personas. Las habilidades más valiosas de alguien considerado “Sr.” son las sociales y de liderazgo. Gente que programe “bien” hay un montón.
  11. Necesitas una red de apoyo. Sí o sí. Rodéate de gente que te quiera ver crecer y que comparta tus principios y valores.
  12. Aprende a valorar tu trabajo. Costo ≠ Valor.  No cobres por el esfuerzo físico que lleva hacer una tarea. Cobra por el valor del problema que estás resolviendo.

Originalmente compartí este hilo en Twitter, donde también puedes seguirme.