Lo que es bueno y lo que es malo. La carrera del desarrollador a través de los ojos de su líder

¿Cuál es la diferencia entre el aspecto de la carrera del desarrollador y su líder?


La vida está llena de contradicciones. Incluso la luz no puede determinar quién es: una partícula o una onda.
En el mundo del desarrollo de software, las contradicciones entre los actores son un automóvil y un carrito pequeño. Veamos un par: un desarrollador y un gerente de desarrollo (puede ser un gerente de proyecto, gerente técnico, líder de equipo). Como resultado, estos dos a menudo miran las cosas de manera diferente y generalmente tienden en direcciones diferentes.



Lo que quiere el desarrollador


Todos quieren algo diferente. Pero como no podemos prescindir de las generalizaciones, tomamos un desarrollador de nivel medio esférico en el vacío. Es moderadamente vago, moderadamente curioso, y generalmente le gusta su profesión. Solo tendría un marco de tiempo más suave, mejores procesos, tareas más interesantes.

¿Cómo quiere desarrollarse? Pero así:

  • Aprende nuevas tecnologías
  • Resuelve problemas más interesantes.
  • Participa en nuevos proyectos
  • Menos actividades no relacionadas con el desarrollo
  • Toma decisiones tú mismo

Al mismo tiempo, su gerente quiere:


  • Para que el desarrollador conozca bien las tecnologías utilizadas
  • Para que el desarrollador se adapte bien a las tareas: con la calidad adecuada y a tiempo
  • Que el desarrollador fue responsable y siempre completó lo que emprendió
  • Para que el desarrollador dé evaluaciones adecuadas a las tareas
  • Para que el desarrollador comprenda las necesidades de la empresa y el producto en su conjunto
  • Para que el desarrollador informe problemas de manera oportuna

¿Quieres saber cómo comprometer? Bienvenido a cat.

Entonces lo que tenemos. Hay una contradicción completa en los intereses.

El desarrollador quiere aprender cosas nuevas y el gerente quiere que pueda usar bien las herramientas familiares.

El desarrollador quiere resolver problemas interesantes, y el gerente tiene una bolsa de tareas ordinarias que alguien debería hacer.

El desarrollador quiere participar en nuevos proyectos, y el gerente necesita a alguien para apoyar los existentes.

El desarrollador no quiere hacer nada más que el desarrollo, y el administrador necesita que el código esté documentado, el proceso de desarrollo sea transparente y manejable, para cumplir con los planes, emitir lanzamientos, etc. Para hacer esto, pide evaluaciones, realiza stand-ups, retrospectivas y lo obliga a planificar sus actividades.

El desarrollador quiere tomar decisiones por su cuenta (sabe cómo hacerlo bien), y el gerente exige que se le informe sobre los problemas identificados para poder controlar la decisión.

No es sorprendente que muchos gerentes de desarrollo tengan una mala reputación entre sus desarrolladores: no te permiten hacer lo que quieres, sino que te obligan a hacer lo que te enferma.

Causas


La razón en mi opinión es muy simple. El desarrollador y su líder tienen objetivos diferentes.

El objetivo del desarrollador es tener más demanda en el mercado laboral.

El objetivo del líder es entregar el proyecto a tiempo.

Y, sin embargo, a pesar de estas diferencias radicales, es posible lograr un compromiso que se adapte a ambas partes.

Tratemos de entender con más detalle.

Desarrollador


Aprende nuevas tecnologías


Es realmente interesante e inspirador. En la etapa inicial de convertirse en especialista, es útil tener una visión amplia de la industria y comprender cuáles son las oportunidades de desarrollo. Sin embargo, con el tiempo, la cantidad debería convertirse en calidad.

No sé sobre usted, pero a menudo desconfío del currículum de un desarrollador (con 2-4 años de experiencia), que enumera docenas de idiomas, marcos y bibliotecas. Esto puede ser una señal de que una persona estaba haciendo un poco de todo, pero no sabe nada profundamente (aunque hay excepciones). Es preferible conocer a una persona que no sabe mucho, pero que sabe con certeza. Y esto requiere una experiencia práctica significativa en la aplicación de la tecnología. Luego habrá una comprensión de sus sutilezas y límites de aplicación, y esto es extremadamente importante.

Por lo tanto, es importante y necesario estudiar nuevas tecnologías, pero es altamente deseable que la práctica real esté detrás de esto. Incluso si está desarrollando un proyecto favorito, asegúrese de que la tecnología no se use para mostrar, sino que realmente resuelva el problema comercial.

Resuelve problemas más interesantes.


Creo que todos están familiarizados con el concepto de "rutina". Nadie quiere hacer lo mismo todo el tiempo. Sin embargo, hay un detalle muy importante. Es injusto querer nuevas tareas interesantes si apenas manejas las viejas y poco interesantes. Cualquier habilidad tiene pasos, y no puedes saltar sobre ellos; tarde o temprano dará lugar a una caída dolorosa.

En general, todo es como en un juego de computadora. Para pasar a un nuevo nivel, debes pasar bien los anteriores. Antes de exigirle tareas interesantes al gerente, aprenda a resolver los problemas actuales de manera rápida y eficiente, entonces será obvio que merece más.

Participa en nuevos proyectos


Obviamente. Muchas personas están entusiasmadas en apoyar el proyecto de manera regular. Corregir errores propios y de sus camaradas mientras desarrollan algo nuevo es una pena.

Pero después de todo, es con el apoyo que a menudo se adquiere una comprensión de las necesidades del negocio, lo cual es vital para cualquier proyecto. El desarrollador aprende a mirar su software a través de los ojos del usuario, y esta es una de las habilidades más valiosas para el programador. Además, aparece la capacidad de comprender el código existente, refactorizarlo cuidadosamente, sin romper todo el sistema. Estas habilidades serán útiles no solo para el apoyo, sino también al desarrollar un nuevo proyecto: no repita errores pasados, mantenga la base del código en condiciones decentes y lidie con deudas técnicas.

No te niegues a apoyar los proyectos que desarrollaste; esta es una experiencia invaluable que puede acelerar significativamente tu carrera.

Menos actividades no relacionadas con el desarrollo


Hay muchos desarrolladores que consideran escribir documentación, planificar reuniones, retrospectivas, comunicarse con el cliente como una pérdida de tiempo. ¿Lo principal es escribir código? Que todo estaba ordenado, hermoso, consistente con las pautas.

No. Lo principal es que el software hace lo que se requiere de él: resolver problemas comerciales. Además, es altamente deseable que el desarrollo cumpla con los plazos y presupuestos. Si no, es completamente posible que nuestro código ideal nunca funcione.

Debe tener claro que para cualquier desarrollo complejo, necesita un plan, sincronización regular de los participantes del proyecto (incluido el cliente), documentación de calidad y otras cosas que no son escritura de código.

Si desea ser un participante importante y útil en el proyecto, debe comprender los procesos que ocurren en el proyecto e intentar seguirlos. Esta es otra experiencia útil que todos deberían tener.

Supervisor


Conozca las tecnologías utilizadas para
hacer frente a las tareas establecidas: con la calidad adecuada y a tiempo


Un líder necesita personas en las que confiar. Si la tarea está configurada, debe resolverse. No importa si el desarrollador estaba interesado en hacer esto o si era una rutina dolorosa para él. Esto sucede si "resuelve problemas a medida que están disponibles" y "vive en el presente". Pero para resolver la contradicción, uno debe actuar de manera diferente. Al enseñar constantemente a los desarrolladores cosas nuevas y transmitirles la experiencia de resolver problemas existentes, aumentamos su nivel. Obteniendo conocimiento adicional, experiencia y amplitud mental, resolverán los problemas existentes mucho más rápido y posiblemente ofrecerán una mejora en el proceso. Dichos cambios, iniciados "desde abajo", son valiosos no solo por su resultado directo, sino que también son excelentes motivadores para que los desarrolladores busquen y ofrezcan otros nuevos.

Al asignar tiempo para que las personas aprendan nuevas tecnologías de manera independiente o para entrenarlas, puede obtener un equipo altamente productivo y motivado.

Sé responsable y siempre completa lo que tomó


Creo que todos estarán de acuerdo en que la programación profesional se trata principalmente de lograr resultados. Para tener éxito, todos los participantes del proyecto deben completar sus tareas. Como resultado, no importa cuán genial sea técnicamente un desarrollador, si no puede completar una sola tarea y tira todo a la mitad. La verdad universal planteada por los grandes programadores es que el problema debe resolverse de la manera más simple posible. Quizás esta sea generalmente la cualidad más importante del desarrollador: poder resolver problemas sin dificultades innecesarias. Complicar es fácil, simplificar es difícil.

No tengo miedo de decir que son esas personas las más valoradas en proyectos reales. Tanto el líder como los socios del proyecto saben que puede contar con una persona que no fallará.

La educación en personas con actitudes profesionales precisamente tales es una de las tareas importantes de un líder. El mecanismo más importante en este asunto es la promoción de resultados. Como resultado, obtienes no solo un equipo de desarrollo, sino un equipo de personas con ideas afines, cada uno de los cuales está interesado en lograr un objetivo común.

Dar evaluaciones adecuadas a las tareas.


Muchos desarrolladores probablemente pensaron: por qué me exigen constantemente estimaciones, cómo lo haré, lo haré, de todos modos, antes de terminar, no aparecerá nada. Las clasificaciones parecen un mecanismo de control humillante. Sin embargo, mira esto a través de los ojos de un líder.

Como ya escribí, para que el proyecto tenga éxito, el gerente debe tener un plan. Hay felices excepciones, pero en el caso general, sin un plan, el desarrollo se convierte en un caos. Incluso si el plan no se implementa por calendario, aún se beneficia: el gerente ve dónde está el problema y puede reorganizarlo para resolverlo. Para hacer un plan, el líder necesita evaluaciones. Incluso si el desarrollador subestimó o sobreestimó la tarea, para el gerente esto es solo una excusa para introducir un factor de corrección. Por lo tanto, teniendo estimaciones de los desarrolladores y factores de corrección históricamente confirmados, el líder puede construir un plan cercano a la realidad.

Los desarrolladores a menudo subestiman la necesidad de planificar porque se centran en el desarrollo. Pero como sabemos, un proyecto exitoso no es solo desarrollo. Requiere pruebas, documentación, emisión al cliente, organización de UAT, etc. El equipo debe actuar en concierto, la planificación y el seguimiento del plan proporcionan dicha coherencia.

Dado que el éxito del proyecto también es el éxito de cada participante, para lograr su propio éxito, el desarrollador debe poder evaluar adecuadamente las tareas.

Es el líder quien debe dar a los desarrolladores una comprensión de todos los procesos que ocurren fuera del desarrollo. Explica el significado de cada acción y decisión, la importancia de la planificación, la comunicación. La conciencia es la clave del éxito.

Comprender las necesidades de la empresa y el producto en su conjunto.


Muy a menudo, los desarrolladores se centran en escribir código, ignorando el problema comercial que resuelven. Desafortunadamente, esto es característico no solo para principiantes, sino también para especialistas bien establecidos y titulados.

Como ya escribí, considero que la solución a los problemas empresariales es la tarea principal de la programación. Por lo tanto, de forma natural, solo uno que pueda resolver estos problemas de manera efectiva puede considerarse un buen programador. Para hacer esto, es vital entender claramente lo que está sucediendo en el negocio que automatizamos.

Por lo tanto, el deseo del gerente de que el desarrollador comprenda las necesidades del negocio y considere cada tarea principalmente desde este punto de vista (qué tarea comercial resolvemos y por qué) es más que un deseo natural. Solo de esta manera puede un desarrollador lograr un verdadero dominio. Entonces, los intereses reales del líder y desarrollador coinciden aquí.

Como en el párrafo anterior, el deber del líder es explicar clara y claramente al desarrollador qué necesita el negocio y por qué. Además, es necesario transmitir una verdad simple: se aprecia al que puede profundizar en el área temática y resolver un problema específico, y no al que simplemente escribe un código hermoso.

Informar problemas de manera oportuna


Para garantizar el éxito del proyecto, es vital que el gerente reciba información oportuna sobre los problemas para completar las tareas. El desarrollador, por el contrario, a menudo prefiere lidiar completamente con el problema e informarlo solo cuando hayan pasado todos los plazos razonables. Debe decirse que el deseo de comprender independientemente el problema siempre es encomiable. Sin embargo, para el beneficio del proyecto, es necesario informar al jefe de los problemas que pueden aumentar el tiempo para resolver el problema, para que pueda tener esto en cuenta en el plan.

La habilidad más importante del desarrollador es la capacidad de comunicarse de manera oportuna y abierta con otros participantes del proyecto. Informar oportunamente un problema es una parte importante de la comunicación.
En este caso, el líder no debe apresurarse de inmediato para resolver el problema. Es más sabio darle tiempo al desarrollador para que lo resuelva por sí mismo, tome las decisiones necesarias y presente el resultado. Esto le dará confianza en sus habilidades, el hábito de confiar en sí mismo y, al mismo tiempo, se aliviará del temor de informar problemas de manera oportuna.

Resumir. ¿Cómo combinar los intereses del desarrollador y su líder?


Al desarrollador


  • El éxito de un proyecto es el éxito de cada uno de sus participantes. Cada proyecto exitoso es un paso adelante en su carrera. En cualquier entrevista, ganará muchos más puntos si ha completado con éxito proyectos a sus espaldas.
  • Resolver problemas de negocios es el objetivo principal del desarrollo. Si el proyecto falla, no importa cuán buena sea la arquitectura y cuán hermoso sea el código.
  • – : , , , – .
  • , . , . . , .
  • – , , , , , , - .


  • , . , . .
  • , .
  • , .
  • .
  • .
  • .

All Articles