¿Cómo manejo un puesto de desarrollador individual como desarrollador junior en una empresa nueva?

He estado trabajando como desarrollador web junior (autodidacta) en una empresa de nueva creación durante seis meses hasta ahora. Actualmente tengo 19 años y este es mi primer empleo. He estado programando desde hace cinco años en mi tiempo libre mientras desarrollo por pasión.

Sin embargo, estoy teniendo dificultades para mantenerme al día con mi puesto actual debido a la falta de mano de obra y experiencia. Mi único colega, tutor y jefe a la vez no es precisamente desarrollador. Es más un diseñador web , solo se ocupa de UX y hojas de estilo del sitio web. Apenas sabe nada de nuestro lenguaje del lado del servidor que usamos y sabe muy poco en términos de Javascript.

Actualmente estamos trabajando en nuestro sitio web interno y las cosas han ido bastante bien, excepto por las formas inusuales de manejar el ciclo de vida del producto. El problema es que la gerencia subestima el tiempo que se necesita para completar una determinada tarea de manera decente .

Por ejemplo, me dieron la tarea de completar dos sitios web en veintiún días y es realmente una tarea muy difícil dado el hecho de que acabamos de lanzar en producción nuestro nuevo sitio web interno y estamos constantemente detectando errores relacionados con él.

Lo que más " odio " es que necesito ocuparme tanto del desarrollo de back-end como del front-end (es decir, Javascript), para lo cual realmente no tengo tiempo. Nuestro código Javascript actual es realmente... malo y por mucho que me gustaría estudiar más sobre Javascript, sería realmente perjudicial para mi equilibrio entre el trabajo y la vida personal (ya que no puedo estudiar en horas de trabajo).

Me siento como un segundo desarrollador que solo se ocupa del desarrollo front-end, o incluso mejor, un desarrollador web completo beneficiaría MUCHO a nuestro equipo. Sin embargo, la alta dirección debido a problemas económicos no puede permitirse un nuevo desarrollador por ahora .

Esta posición es una gran responsabilidad para con la empresa, ya que es una situación de romper o hacer para nosotros (debido a un próximo proyecto) y no quiero arruinarlo, sin embargo, estoy luchando mucho.

Actualización (28/04/16)

A quien desee conocer las actualizaciones sobre la situación explicada en la pregunta: poco a poco las cosas empezaron a mejorar. La empresa está creciendo más en el país y hemos contratado a un segundo desarrollador que se ocupa del desarrollo front-end (actualmente de una aplicación que se usa internamente y la base de código front-end de lo que será el nuevo sitio web de la empresa).

Sigo siendo el más ocupado del equipo, ya que el modelo comercial está cambiando rápidamente y el back-end actual debe mantenerse actualizado.

Solo quería que todos lo supieran, especialmente a aquellos que tenían malas esperanzas al principio.

Salte del barco lo antes posible. Una startup que se basa únicamente en el resultado de un desarrollador sin experiencia está condenada al fracaso. Incluso si recibe "iluminación divina" y obtiene más de 20 años de experiencia de la noche a la mañana, lo más probable es que su jefe también esté tomando otras medidas vitales.
@SJuan76 Es más fácil decirlo que hacerlo. Debo admitir también que el ambiente de trabajo en comparación con otras empresas de mi país es excelente, y también hay que decir que para tener 19 años he tenido mucha suerte de encontrar un trabajo así. Si abandonara el barco , me encontraría sin trabajo durante bastante tiempo en mi país .
Saltar del barco significa "buscar otro trabajo". Si la alternativa es el paro, es mejor quedarse aunque solo sea por la experiencia. Pero las perspectivas de la startup tal y como la describes son malas (y, en general, el 90% de las startups están condenadas) lo suficiente como para hacer una búsqueda intensiva, como si ya estuvieras en el paro (es cuestión de tiempo, y no debido). por tu culpa).
Además de lo que dijo SJuan76, nunca recomendaría un puesto que implique ser el único desarrollador como tu primer trabajo como desarrollador. Estará mucho mejor en un rol en el que pueda aprender de otros desarrolladores más experimentados.
"No puedo estudiar en horas de trabajo": una de las cosas que descubrirá a medida que adquiera experiencia es que "estudiar" (o, a veces, investigar) durante las horas de trabajo suele ser una de las cosas más importantes que puede hacer. Es mucho, mucho mejor para ti dedicar un poco de tiempo ahora a adquirir conocimientos que utilizarás durante años. Dará como resultado un mejor producto y, en última instancia, aumentará su velocidad de desarrollo.
@ChrisHayes Me encantaría poder hacerlo, pero como mencioné en la pregunta, el cronograma tiene plazos muy estrictos y ¡simplemente no tengo tiempo para estudiar y trabajar al mismo tiempo!
@GiamPy Estudiar cosas relacionadas con su profesión en su tiempo libre que le parezcan interesantes puede tener beneficios. Puede generar nuevas oportunidades en su empresa actual, pero también en nuevas empresas. Trate de separar lo que requiere su trabajo y lo que es interesante y hecho por su propia iniciativa al definir los límites de su vida laboral.
Estoy en una situación muy similar. Principalmente autodidacta, trabajo para una pequeña empresa de ingeniería eléctrica como uno de los dos desarrolladores. El otro es ese tipo de persona que evitas, pase lo que pase. Así que prácticamente, estoy solo. "Sobreviví" de alguna manera durante 2 años, y fue horrible. Sal de ahí, busca un trabajo donde tengas otros desarrolladores a tu alrededor para aprender de ellos. Ser 100% responsable del software sin años de experiencia lo pondrá bajo mucho estrés, no lo hará aprender más rápido y, en general, es perjudicial para todas las partes.

Respuestas (4)

En primer lugar, debe ser consciente de que si tiene dificultades debido a la falta de recursos , ¡ no es culpa suya ! Eres un desarrollador junior con experiencia y capacidad muy limitadas. Suena muy parecido a que su empleador está tratando de hacer demasiado a bajo precio y espera que usted tome el relevo de su no querer desembolsar el dinero para un equipo de desarrollo adecuado.

Lo que PUEDE hacer es decirles a los dueños de negocios que siente que no puede cumplir con los plazos previstos debido a la cantidad de trabajo que le piden que haga.

Entonces pueden:

  • Priorice las tareas que tienen (reduzca el alcance) o extienda los plazos para reflejar de manera más realista la cantidad de esfuerzo; o
  • Agregue recursos más experimentados para compartir la carga del desarrollo y el diseño.

Además, debe implementar un ciclo de estimación que refleje con precisión la cantidad de tiempo para lograr las tareas. Una metodología Agile es una buena manera de administrar un proyecto de este tipo, donde tiene ciclos de desarrollo cortos que puede medir su rendimiento y cuánto tiempo realmente toma las cosas.

Si su empleador no está dispuesto a hacer ninguna de estas cosas, entonces debe alejarse de lo que es una situación completamente insostenible. No es su responsabilidad hacer realidad los sueños del propietario de la empresa si sus sueños no son realistas y lo presionan mucho más de lo que deberían.

Buen consejo. Iba a sugerir una edición that they are requiring you do do.pero es demasiado pequeña

Es posible que tenga una oportunidad interesante aquí, en realidad, aunque puede ser difícil percibir esta oportunidad a través de la presión que siente. ¿Por qué?

  1. Usted está en una posición de verdadera responsabilidad, en esencia sirviendo como desarrollador principal.
  2. Puede que tengas más influencia de lo que parece.
  3. Reconoces tus límites actuales y sabes que tienes más que aprender.

Estos factores se suman para que las próximas tres semanas sean una gran experiencia del mundo real que puede usar tanto en este trabajo como en las entrevistas para futuros trabajos.

Ahora: la mayoría de los gerentes, según mi experiencia, entienden que su momento llega con compensaciones. En otras palabras, si dedica tiempo a una tarea, no dedica ese tiempo a otra tarea. Parece caracterizar su carga de trabajo actual como:

  1. Soporte de producción ("acabamos de lanzar en producción nuestro nuevo sitio web interno y estamos constantemente detectando errores relacionados con él"); y
  2. Creación de dos sitios web en un período de tiempo rápido ("Me han dado la tarea de completar dos sitios web en veintiún días")

¿Hay tareas adicionales en su carga de trabajo? Haz una lista rápida. Para esta respuesta, supondré que la lista anterior representa su carga de trabajo completa.

Dado que dedicar tiempo a una tarea le quita tiempo a otras tareas, es importante para la empresa que las prioridades comerciales más importantes se entreguen lo más rápido posible . En un sentido abstracto, la tarea con el mayor valor comercial (mayor beneficio, beneficio regulatorio, ahorro de costos, etc.) y el menor costo (entrega en un período de tiempo más corto, compra lista para usar versus desarrollo interno, etc.) ) es la tarea que debe realizarse primero. Por lo general, como creo que es el caso aquí, el valor frente al costo no está del todo claro. Afortunadamente, no tiene que clasificar todas sus tareas de esta manera, ya que las prioridades comerciales cambian todo el tiempo. Solo clasifique los primeros.

En un sentido más práctico, recomendaría:

Organiza tus pensamientos y tareas.

Mira tu lista de tareas. ¿Hay tareas (como defectos de menor prioridad en el sitio web interno) que se pueden retrasar hasta después del lanzamiento de los dos sitios web? ¿Hay partes de las tareas que se pueden reutilizar, especialmente entre los dos sitios web? ¿Existen bibliotecas (gratuitas o de pago) que puedan resolver partes de su problema por usted? No dedique mucho tiempo a este esfuerzo, pero incluso unos minutos para organizar esta lista lo ayudarán a tener una conversación con las partes interesadas del negocio.

Obtenga un acuerdo sobre las prioridades comerciales para sus tareas

Ahora que tiene una lista, averigüe qué tareas de su carga de trabajo tienen el mayor valor comercial desde la perspectiva de su administración. Esto significa pedirle a su gerente, y a cualquier otra persona que su gerente crea que debería estar involucrada, que decida qué tareas en su carga de trabajo tienen prioridad sobre las demás. En su situación, las dos preguntas que probablemente plantearía son:

  1. ¿Qué problemas de soporte de producción tienen mayor prioridad que los dos sitios web y qué problemas de soporte de producción pueden esperar? Ayuda si puede ayudar a identificar soluciones temporales para problemas menores. También ayuda si tiene a alguien más en el negocio que pueda clasificar los problemas de soporte de producción según su gravedad para que no tenga que hacerlo usted mismo.
  2. De los dos sitios web, ¿cuál es más importante? Sí, sí, ambos son importantes. Pero, finge que solo se puede hacer uno. ¿Cuál sería?

A partir de estas preguntas, llegue a un acuerdo sobre qué trabajo debe realizarse primero . Si los problemas de soporte de producción son los más importantes, se resuelven primero. Si algunos problemas de soporte de producción pueden esperar hasta que un sitio web o ambos sitios web estén terminados, trabaje primero en los sitios web.

Importante: "acuerdo" no significa "grabado en piedra". Las prioridades comerciales pueden cambiar y cambian todo el tiempo. Siempre que reconozca y las partes interesadas de la empresa reconozcan que los cambios tienen un costo, si su gerente (u otro "jefe") cambia sus prioridades y usted ha informado a la empresa sobre el costo, entonces sus prioridades habrán cambiado.

Mantenga el negocio actualizado al menos diariamente sobre su progreso

Esto no necesita tomar mucho tiempo. Un correo electrónico rápido debería ser suficiente. Plantee cualquier problema nuevo que alguien más podría ayudarlo a resolver razonablemente.

Si está esperando que le respondan una pregunta, trabaje en su próxima prioridad

De esa manera, seguirás progresando.

No se exija más allá de su nivel de productividad

Tiene un trabajo que requiere que piense, o al menos eso esperamos. No le hace ningún bien a nadie seguir trabajando cuando está demasiado cansado para continuar. Descansa un poco y vuelve al día siguiente, descansado y listo para trabajar.

Estás en una situación difícil. Puede o no hacer todo lo que la empresa quiere. Pero, es casi seguro que el negocio está mejor si entregas algo utilizable. Si puede hacer su primer sitio web en poco menos de la mitad del tiempo asignado, o al menos las partes utilizables más importantes de ese primer sitio web, está en una excelente posición para reevaluar la situación con el negocio.

Buena suerte para ti. Muchos de nosotros hemos estado en situaciones como esta, y si bien no puede y no debe trabajar constantemente en modo de crisis, sepa que puede sobrevivir a esta terrible experiencia y tal vez demostrar más valor a este empleador, o uno más razonable en el futuro.

tienes dos opciones

Opción 1: Mejorar la organización

  • Presente la gestión ágil de proyectos e intente optimizar la entrega de proyectos.

Opción 2: unirse a una organización más establecida

Si usted es el único Desarrollador, corre el riesgo de lo siguiente:

  • Pobre desarrollo profesional y desarrollo de malos hábitos ya que no hay nadie que lo guíe.
  • Dado que es una empresa nueva, es probable que gane por debajo de la tasa de mercado. Muchas empresas emergentes intentan contratar a graduados o antes, ya que son baratos. Combine esto con el punto 1 y le resultará difícil obtener roles de desarrollo bien pagados.
  • Presión extrema (usted es el único desarrollador después de todo)
  • siendo superados por aquellos que han trabajado con desarrolladores senior en organizaciones donde hay mucha más estructura en términos de un equipo multifuncional a su disposición. Es posible que esto no le afecte ahora, pero lo afectará cuando avance y esté trabajando en una organización que tiene procesos. Ya que lo evaluarán para tratar de comprender cómo puede trabajar en equipo.

1) La gestión del tiempo para uno mismo es clave. Ser capaz de evaluar desapasionadamente si tiene espacio en su horario para acomodar las solicitudes de trabajo extra es una gran habilidad para desarrollar.

Ser capaz de rechazar esas solicitudes diplomáticamente es una habilidad laboral clave: "Sí, me encantaría hacer eso por ti. Desafortunadamente, eso significaría dejar de trabajar en... ¿Qué quieres priorizar?".

Realmente ayuda separar lo importante de lo no importante y lo urgente de lo no urgente.

                      Non-Urgent      |     Urgent
                    ____________________________________
        Important   |    Do This      |    Do this 1st! |
       -------------------------------------------------|
      Unimportant   |  Don't bother   |  Weigh against  |
                    | unless you have |  "Important and | 
                    |   spare time    |   Non-urgent"   |
                    |___________________________________|

2) Trabaja en tus conocimientos teóricos de desarrollo de software. Ser autodidacta es genial, pero puede dejar lagunas en tu conocimiento profesional que no podrás detectar. ("No sabes qué es lo que no sabes").

Obtener una buena base teórica te acelerará tanto en las carreras cortas como en las largas.

Recomiendo aprender Smalltalk como una excelente manera de obtener una comprensión profunda del desarrollo OO. Una vez que aprendí Smalltalk, y su modelo de objetos y su enfoque similar al láser en el envío de mensajes a los objetos, los otros lenguajes: Ruby, Java, C#, Objective C y JavaScript fueron mucho más fáciles de aprender, mejorar y desarrollar con .