Necesitas un héroe: el director del proyecto

Publicado: 2022-03-11

Este artículo es para ti, el emprendedor valiente con una idea de aplicación en tu corazón y un poco de dinero en efectivo en el banco. Los diagramas que ha garabateado en servilletas de cóctel perturbarán al mundo entero, y ya han enviado camiones volquete llenos de dinero a su casa. Para asegurarse de que lleguen a tiempo, aquí hay algunos consejos simples para que su ciclo de producción funcione sin problemas.

Por qué necesita un gerente de proyecto en primer lugar

“Los programas de computadora son las cosas más complejas que hacen los humanos”, dice Douglas Crockford. Puede que no hayas oído ese nombre antes, pero es bastante famoso para ser un programador. Actualmente es un arquitecto de software sénior en PayPal y ha sido pionero en todo tipo de tecnología genial que está más allá del alcance de este artículo. Es alguien que sabe mucho sobre cómo trabajar en grandes proyectos.

En cuanto a mí, he estado programando durante 13 años, e incluso ahora, en algún momento, cada proyecto me lleva a un territorio desconocido. Hay tantas tecnologías diferentes por ahí, y se están ideando nuevas técnicas a un ritmo tan alarmante que nunca siento que estoy completamente al tanto de lo que está pasando. Si bien cada proyecto tiene sus desafíos únicos, hay algunas constantes:

  • El proyecto tiene presión de tiempo.
  • El presupuesto es más pequeño de lo que me gustaría.
  • Soy más caro de lo que el cliente quisiera.
  • No escucho tan perfectamente como le gustaría al cliente.
  • El cliente no explica las cosas tan perfectamente como me gustaría.

Claramente, necesitamos una niñera. Alguien tiene que intervenir para establecer las reglas básicas, hacer que todos sean honestos y asegurarse de que no olvidemos nada importante. Alguien tiene que facilitar la comunicación entre todas las partes.

Este alguien, este héroe, es el director del proyecto.

Un gerente de proyecto facilita la comunicación entre todas las partes interesadas y los equipos.

Un gerente de proyecto facilita la comunicación entre todas las partes interesadas y los equipos.

Toptal no ofrecía contratos con gerentes de proyecto cuando comencé a escribir este artículo, pero ahora lo hacen. ¡Sinergia! Solo puedo imaginar que los poderes fácticos leyeron el siguiente consejo y se dieron cuenta de que estaban perdiendo una gran oportunidad.

Por qué un programador no es un buen gestor de proyectos

Dejando de lado la certificación del Project Management Institute, lo más importante que un gerente de proyecto puede aportar es la experiencia. Como resultado, muchos programadores serían administradores de proyectos bastante decentes; tenemos más experiencia con proyectos técnicos que nadie y nuestras mentes analíticas son expertas en catalogar información y establecer objetivos concretos.

Dios sabe, nos está pagando lo suficiente, por lo que parece razonable esperar que podamos manejarnos solos en lugar de obligarlo a pagar por el tiempo de otra persona también, ¿verdad?

Bueno, para empezar, nos estás pagando por codificar.

Cuando salimos de nuestro aturdimiento de programación para tomar decisiones sobre qué priorizar, o para discutir sobre cuánto se va a hacer realmente esta semana, el código no se está escribiendo. Luego, toma al menos 10 minutos volver a "la zona", especialmente si estamos estresados ​​​​por la conversación que acabamos de tener, lo cual es probable si estamos discutiendo la prioridad de las funciones. Boo hoo, lo sé, pero se trata de hacer el uso más eficiente de recursos costosos.

Lo más importante, realmente no podemos ver el bosque por los árboles. Si no quita nada más de este artículo, comprenda esto: cuando paso todo el día mirando algunos errores específicos, mi cerebro pierde la noción del panorama general.

Mi cerebro me recompensa cuando soluciono esos errores, y asumo que he hecho grandes cosas y ahora puedo jugar videojuegos. Cuando alguien me recuerda que la página de inicio todavía está rota, es una completa sorpresa porque pasé el día llenando mi cerebro con un conocimiento muy detallado de una parte muy pequeña del proyecto general y me olvidé del resto. Así es como funciona mi cerebro, y muchos otros programadores tienen una estructura psicológica similar.

La programación y la gestión de proyectos pueden ser mentalidades completamente diferentes.

El director del proyecto se asegura de que no se pierda el panorama general.
Pío

Por qué un cliente no es un buen gestor de proyectos

Bueno, entonces, si los programadores no queremos asumir la responsabilidad de hacer que las cosas de gestión de proyectos se hagan, entonces debe recaer en usted, el cliente. Es tu dinero. Es tu visión. En última instancia, eres responsable de todo el asunto, de todos modos.

Tú, sin embargo, también tienes mucho en tu plato.

Muchos clientes son meros mortales con trabajos diarios como el resto de nosotros, y se sabe que algunos incluso sufren de postergación u olvido. Aunque esto no necesariamente lo describe a usted, específicamente, tenga en cuenta la idea de tener un Recordador profesional cerca para que pueda volver al importante trabajo de mantener vivo todo el proyecto.

Si ha trabajado o supervisado un proyecto técnico de alcance similar, puede ser un buen administrador para su proyecto. Si no lo ha hecho, no subestime el valor de alguien que pueda predecir los problemas que pueden surgir. Las estimaciones de tiempo siempre son solo estimaciones, y los errores tienden a aparecer en los momentos menos oportunos. Vale la pena el costo de otro empleado (aunque solo sea a tiempo parcial) para tener a alguien cerca que sepa qué partes del proceso necesitan, o es probable que necesiten, la mayor atención.

Tome la garantía de calidad (QA), por ejemplo. Un control de calidad adecuado es esencial para obtener lo que desea de cualquier proyecto, y nunca recibe la atención que merece. Un buen gerente de proyecto aprovechará al máximo los recursos limitados de control de calidad y también garantizará la calidad de sus programadores por usted. A veces, nos salimos de nuestras profundidades y, a veces, cometemos errores. Necesita una persona técnicamente competente en una función de supervisión para determinar si su programador solo está teniendo un mal día o si, de hecho, no encaja bien en el proyecto. Evitar los problemas de personal a tiempo podría significar la diferencia entre la vida y la muerte para su proyecto.

Por último, incluso usted, el cliente, a veces necesita un pequeño cheque y/o saldo. Eso es difícil para mí de escribir ya que nosotros, los programadores de computadoras, no somos muy conocidos por nuestra naturaleza franca. Baste decir que he trabajado en muchos proyectos en los que el cliente insistía en que todo era la máxima prioridad y absolutamente todo lo que había que hacer. Si bien no tengo dudas de que esto era absolutamente cierto, estos clientes, lamentablemente, no tenían control sobre la cantidad de horas en un día. No terminaron con el resultado positivo que deseaban y/o merecían, y creo que este resultado podría haberse evitado si el cliente le hubiera confiado a un gerente de proyecto la autoridad para evaluar la carga de trabajo y, con tacto, pero con firmeza, mantener las cosas bajo control. . Es difícil hacer las llamadas de juicio desapasionadas que requieren la mayoría de los proyectos técnicos cuando es su idea y su dinero lo que está en juego y a la computadora no le importa si usted o yo lloramos o le gritamos. (Sé que esto es cierto porque lo he intentado muchas veces).

Una lista incompleta de técnicas para administrar un proyecto técnico

Ya sea que haya decidido ignorar las mil palabras anteriores y administrar su proyecto usted mismo, o si va a contratar a alguien pero quiere tener más conocimientos sobre el proceso, esta lista lo ayudará. Nunca he sido (oficialmente) un gerente de proyecto, por lo que no puedo decir qué herramientas usaría cualquier gerente de proyecto, pero he tenido mucho éxito con todas estas técnicas:

Hitos

Al comenzar un nuevo proyecto, la mayoría de las personas saben intuitivamente que es importante dividir el proyecto en partes un poco más manejables, con cada parte que va desde un par de semanas hasta un par de meses de trabajo. Al comienzo del proyecto, es bueno tener una reunión inicial para establecer estos hitos. Está bien ser un poco impreciso sobre cómo se comunicará con ellos, lo más importante es seguir controlando después de cada hito para beneficiarse de una mejor comprensión del proyecto por parte de todos, y para asegurarse de que los hitos del proyecto siguen siendo ( aproximadamente) del mismo tamaño que se creía inicialmente.

Estimaciones de tiempo

Nosotros, los programadores, detestamos absolutamente las estimaciones porque sabemos que estarán equivocadas y sabemos que se usarán en nuestra contra. Está bien que estén equivocados porque, por definición, se basan en un puñado de incógnitas. También está bien que se usen en nuestra contra porque nuestros trabajos son bastante cómodos y no duele que nos golpeen el látigo de vez en cuando.

Así que no dude en solicitar presupuestos cada vez que comience el trabajo en un nuevo hito. Debería esperar una línea o dos para cada función principal junto con una estimación aproximada de cuánto tiempo llevará esa función. Por lo general, hago una estimación optimista y luego la doblo. La mayoría de las veces, este tiempo extra representa trampas invisibles.

Historias del usuario

Las historias de usuario son breves descripciones de una sola pieza de funcionalidad dentro de la aplicación. Son útiles como registro de características importantes y deben ser del tamaño de un bocado, capaces de caber en una ficha y, a menudo, acompañados de un pequeño dibujo. Más importante aún, sirven como un puente entre lo que quiere el cliente y lo que el programador tiene que decirle a la computadora. Son lo suficientemente simples para que usted, el cliente, los elimine en un par de minutos, pero lo suficientemente detallados para que nosotros, los programadores, podamos hincarles el diente.

Para obtener información rápida sobre historias de usuarios, encontré estos tutoriales de Mountain Goat Software y Roman Pichler de alta calidad y breves. Para obtener más información sobre toda la filosofía de la gestión ágil de proyectos, pruebe esta publicación de blog de Toptal La introducción definitiva a la gestión ágil de proyectos de Paul Barnes.

Composiciones (Mockups)

Este no es un artículo sobre por qué necesita un diseñador porque siento que la mayoría de los clientes ya lo entienden, pero vale la pena repetirlo porque verá enormes ganancias de productividad si presenta un diseño concreto y bien considerado frente a sus programadores. Cada vez que tenemos que tomar una decisión de diseño, tenemos que salir de "la zona", y cada vez que tenemos que regresar y cambiar algo porque no recibimos el borrador final, bueno, tú haces los cálculos... No me quejo, porque el diseño es divertido, pero en mi experiencia, esta es la fuente número 1 de horas extra facturables evitables.

La mayoría de los diseñadores proporcionan composiciones, también conocidas como composiciones, en Adobe Photoshop, Adobe Illustrator o Sketch. Si lo está haciendo usted mismo, puede usar una de las innumerables herramientas en línea como Balsamiq o InVision. La composición no tiene que tener los mismos colores y estilos que el producto terminado (ya que estos se pueden cambiar fácilmente más adelante), pero tómese un tiempo adicional para asegurarse de que todos los elementos de la interfaz de usuario estén presentes y se tengan en cuenta.

Relacionado: Contrata al 3 % de los mejores diseñadores independientes de UX.

Reuniones de pie

A veces, las reuniones largas son inevitables, pero realmente no desea sobrecargar a sus programadores o tomar más tiempo del necesario. He tenido clientes que parecían esperar que recordara todo lo que se dijo durante una reunión de dos horas y media; estaban muy decepcionados. Una reunión de pie generalmente se limita a 15 minutos, y es costumbre permanecer de pie durante todo el tiempo. Se supone que el aspecto de pie garantiza que todos participen, así como también para que la reunión sea corta.

Durante las reuniones de pie, todos dan vueltas en círculo para proporcionar un breve informe de estado, manteniendo a todos los miembros del equipo actualizados sobre el progreso de los demás. Puede encontrar más información sobre stand-ups en ExtremeProgramming.Org. Si todos trabajan de forma remota y no quieren que todos estén en Skype todos los días, pueden probar una herramienta divertida como 15Five como alternativa a los stand-ups. 15Five permite que los miembros del equipo brinden su opinión cuando sea conveniente para ellos, y les generará preguntas de encuesta para obtener respuestas más detalladas.

Sistema de venta de entradas

Si bien cualquiera puede mantener un sistema de notas adhesivas y Google Docs (con las tareas de todos resaltadas en diferentes colores), en realidad no es necesario; mucha gente ha intentado resolver este problema por ti. Basecamp y Trello son famosos por su facilidad de uso, mientras que Pivotal intenta encapsular toda la filosofía "ágil" en un paquete muy ingenioso. Sea cual sea su elección, un buen sistema de venta de entradas le permitirá, como mínimo,:

  • Crear tareas
  • Asignar prioridad y fecha de vencimiento
  • Vincular tareas y subtareas
  • Asigne diferentes resoluciones como "completado" o "prueba fallida"
  • Mostrar todas las tareas asignadas a un determinado usuario

Cuando un gerente de proyecto le muestre 40 tickets rojos brillantes de alta prioridad que vencen el mismo día, realmente comprenderá el valor de esta vista panorámica del proyecto.

Los clientes no siempre tienen la perspectiva adecuada para gestionar sus propios proyectos.

Puede utilizar herramientas como Trello, Basecamp o Wrike para realizar un seguimiento del progreso a través de los proyectos.

Fuente de control

Es posible que ni siquiera mire el código en el sistema de control de versiones de su proyecto, pero el control de código fuente (o control de versiones) es una de las herramientas más importantes a nuestra disposición, el mejor sistema de respaldo imaginable.

La mayoría de los proyectos modernos usan Git, aunque a veces te encontrarás con Subversion (SVN) cuando trabajes en proyectos que han existido por un tiempo. Github le permite alojar repositorios públicos ilimitados de forma gratuita (además, contiene la mayoría de los proyectos de código abierto del mundo), mientras que Bitbucket le permite alojar repositorios privados ilimitados y, por lo tanto, es la opción preferida para proyectos comerciales.

Cualquiera que sea el sistema de control de versiones que elija, almacena nuestro código de forma remota en caso de que algo suceda, además de rastrear cada vez que "comprometemos" el código mientras nos obliga a escribir un pequeño mensaje que describe en qué estábamos trabajando. Esto evita que los diferentes desarrolladores sobrescriban el código de los demás, nos permite ver todos los cambios que se realizaron durante un período de tiempo determinado y nos permite crear nuevas ramas de código para almacenar funciones que no se activarán de inmediato. Incluso tiene un comando llamado "culpa" que muestra quién fue el responsable de una determinada línea de código y cuándo se cometió.

El control de fuente es el mejor.

Desarrollo basado en pruebas

Esta es una práctica relativamente costosa, lo que significa que no se emplea con frecuencia en proyectos donde el presupuesto se limita a un par de trabajadores independientes. Así que usted, como emprendedor de inicio, no debería sentirse tan mal por no hacer esto, pero debo colgar la idea frente a usted porque proporciona la mejor defensa contra los errores. Básicamente, sus programadores pasan horas valiosas adicionales escribiendo pruebas (pequeños bloques de código) que aseguran que ciertas partes de la aplicación se comporten de manera específica, predecible y repetible. Por ejemplo, podría escribir una prueba afirmando que cuando se hace clic en el botón "iniciar sesión", se abre una ventana emergente con un campo de nombre de usuario.

La belleza de las pruebas es que una vez que las he escrito, puedo ejecutarlas todas con un solo comando. Si tengo 200 pruebas escritas, puedo ejecutarlas después de lanzar una nueva versión de la aplicación para asegurarme de que no se hayan introducido errores en ninguna de esas 200 funciones. No es perfecto, pero es lo más cerca que podemos estar de garantizar aplicaciones libres de errores (bug-lite, al menos).

Envolver

Eso es todo lo que sé sobre gestión de proyectos. No estoy seguro de cuánto de esto pasaría en el Project Management Institute, pero es todo lo que aprendí trabajando en proyectos web en el transcurso de la última década. Por supuesto, le recomiendo que contrate a alguien para obtener el beneficio de su experiencia, pero espero que encuentre útil esta información, incluso si eso no es algo que pueda hacer. Serás la máxima autoridad en este proyecto, por lo que cuanto más entiendas sobre su funcionamiento interno, más probabilidades tendrás de llevarlo a la victoria.