Como NO parecer un Junior cuando te asignan una tarea (incluso siendo Junior)
Tags: pensar, resolver, javascript, logica
Published: 2021-06-20 01:31:27

---
title: Como NO parecer un Junior cuando te asignan una tarea (incluso siendo Junior)
published: true
description: Introducción al pensamiento programático para resolver problemas lógicos de software.
tags: pensar, resolver, javascript, logica
cover_image: https://i.kym-cdn.com/entries/icons/original/000/037/158/thinkmarkthumbnail.PNG
---

Hola a todos, soy @sauloco Senior Fullstack Developer especialista en Javascript/Typescript que tiene debilidad por VueJS y todo el Jamstack.

He visto muchas veces la siguiente situación (y estado en ambos lados de la misma):

> Project Manager (PM): - Necesito que crees una vista responsive que muestre toda la información de un Pokemon basado en la API de la Pokedex.
> Junior Dev: + Ok, perfecto. (internamente: 😱 * se bloquea por no saber para donde ir *)

Si pensar en esta situación te genera un poquito de ansiedad, no te preocupes, te voy a dar algunos tips y herramientas que te van a servir.

## 1. Haz todas las preguntas que creas necesarias

Con el paso del tiempo cada vez menos preguntas te serán necesarias, pero *siempre*, repito, *siempre* tendrás dudas a la hora de comenzar con una nueva tarea, esto es normal y no depende de cuánta experiencia tengas.

Con el paso del tiempo verás que hay preguntas que se hacen para estar seguros, incluso cuando ya intuyas la respuesta.

## 2. Piensa "programaticamente"

Un PM puede incluir varias palabras en una oración como "responsive", "vista", "API" sin detenerse a pensar en que lo que está pidiendo involucra distintas tareas.

Ten un sistema claro para organizarlas como si fuesen un `script` mental. Una suerte de pseudocódigo propio donde puedas ordenar las tareas secuencialmente para que puedas analizar su complejidad individualmente.

Continuemos el ejemplo con tareas ficticias:

```js
const result = fetch("pokemon api");
// PREGUNTA: necesito credenciales para llamar a dicha API o es publica?
// PREGUNTA: hay más de una version de dicha API? si es así, cuál version de la API debería utilizar?
if (result.error) {
  // PREGUNTA: qué debería hacer si el pedido a la API falla?
  return false;
}

const { data } = result;

const renderResult = render(data);
const responsiveRender = addResponsiveness(renderResult);

const finalResult = display(responsiveRender);

return finalResult;
```

> Que preguntas le harias al PM para las tareas `render`, `addResponsiveness` y `display`? Comentalas abajo como si fuesen tu tarea.

## 3. Establece expectativas y vías de comunicación claras

Muchos equipos ya tienen mecanismos para resolver el *feedback* de una tarea, aprende a utilizarlos o propone una forma que te quede cómoda.

Cuándo vas a tener lista la evaluación de la tarea? 
...en 2 horas? en 4 horas? Mañana? 
No es tan importante cuándo, pero sí asegúrate de acordar un momento para revisar y asesorar a quien este solicitando los requerimientos con toda la información técnica que hayas podido recabar.

> Junior Dev: + Perfecto, con todas las preguntas que te hice creo que en "X horas"/"mañana a X hora" voy a tener el panorama claro de qué se requiere para completar esta tarea.

Con el tiempo, la experiencia y haber hecho la misma tarea varias veces puede que logres hacer esto incluso en el momento, pero siempre deja en claro cuáles son los pasos a seguir y cuáles son tus recomendaciones técnicas.

> Al momento de hacer la devolución técnica
> Junior Dev:  + La API es de acceso público pero requiere credenciales, quién solicitará las mismas?
> La documentación de la version `x.xx.xxx` de la API se puede encontrar en `https://docs.de-la-poke-api.com/x`
> ....
> Comenzare a implementar los pasos 1 y 2 mientras espero las respuestas 3 y 4.

## Resumen
1. **Haz todas las preguntas que creas necesarias**, si crees que no necesitas preguntar nada para generar la solución  es porque todavía no has entendido bien el problema. Comienza a preguntar por ahí.
1. **Piensa "programaticamente"**, no eres un robot, pero puedes pensar como uno. Ordena tus ideas como si fuesen un script mental.
1. **Establece expectativas y vías de comunicación claras**, que sepan cuándo y con qué vas a volver, mantén al PM/cliente lo más involucrado y al tanto posible.