Cómo ser el mejor equipo de TI como persona soltera

Aquí hay algunas cosas que hice y algunas cosas que desearía haber hecho en mi proyecto actual. Solo fui yo durante los primeros tres años, pero hemos agregado algunas personas más en los últimos meses y no está yendo tan bien como esperaba.

  • Utilice el control de versiones, preferiblemente git o mercurial
  • Escribir pruebas unitarias. Siempre me he burlado de ellos porque solo prueban los casos en los que has pensado, y probablemente ya pensaste en ellos cuando escribiste el código que estás probando, pero una vez que tu proyecto crece y agregas personas al equipo, tú desearía que lo hubieras hecho.
  • Tenga servidores de desarrollo, prueba y producción separados para que pueda hacer que la gente vea sus cosas en la prueba mientras rompe cosas en el desarrollo. Use un sistema de etiquetado o ramificación en su control de versiones para que siempre pueda volver al código que se ejecuta en cada servidor. Si surge un problema en la producción mientras está trabajando en una nueva característica de whizz-bang en desarrollo, desea poder dejar de lado la nueva característica y corregirla en la versión de producción.
  • La implementación del código en dev debe ser automática tan pronto como se registre. La implementación para probar y la producción debe ser automática o con un solo clic.
  • Asegúrese de que su jefe y otras partes interesadas realmente miren el sitio en la prueba antes de implementarlo en producción. Trate de involucrar a algunas de las personas que realmente usarán el sitio en las pruebas de usabilidad. Escúchelos, pero no los deje diseñar la cosa: si Henry Ford hubiera escuchado al público en general, habría diseñado un caballo más rápido.
  • Asegúrese de que su código tenga una clara división de responsabilidad: no mezcle el control de acceso en medio de la lógica comercial y la interfaz de usuario.
  • Use un marco web como el programa de arranque de Twitter. A veces estarás luchando con eso, pero te quitará una gran parte de la carga de tener una interfaz de usuario constante de tus manos.
  • Use un marco JS como Angular. Estoy usando el antiguo y simple CoffeeScript declarativo y lo lamento.
  • Use un buen marco de back-end. He estado usando Django y tiene sus defectos: si tuviera que hacerlo nuevamente, probablemente usaría un matraz o algo más ligero. Asegúrese de que sea compatible o, al menos, no le impida hacer AJAX y trabajo asincrónico de back-end.
  • Trate de lograr que las partes interesadas acuerden no admitir ninguna versión de IE anterior a 10. IE 8 es una pesadilla, especialmente en un sitio de intranet porque actúa como IE 7 sin ninguna buena razón.
  • También pídales que acuerden un tamaño de monitor objetivo. Mi jefe sigue queriendo meter más y más cosas en una sola línea y tengo que demostrarle que podría funcionar en su iMac 5k, no cabe en un monitor estándar de 1280 × 1024 con fuentes de sistema predeterminadas.

Creo que Paul tiene algunos puntos excelentes, y trataré de no repetirlos.

Comenzaría con la idea de ser sistemático y planificar el proyecto por adelantado.

No sé si está trabajando en un entorno ágil o en cascada, pero en cualquier caso planifique lo que hace y documente lo que hace. Suponga que alguien más tendrá que trabajar a partir de su documentación.

Comience con los requisitos. Definen lo que vas a construir. Deben ser acordados por sus partes interesadas, la administración y los usuarios. Pero donde faltan la mayoría de los requisitos es en ser lo suficientemente específicos.

Una buena regla general es que un requisito debe ser comprobable. Entonces, por ejemplo, no es suficiente documentar un requisito de que el software debe ser rápido y fácil de usar.

¿Qué significa ayunar? ¿Cuánto tiempo deben tomar los procesos principales? ¿Existe un programa existente que pueda comparar?

¿Qué significa fácil de usar para el usuario? ¿Menos pantallas? ¿Un redactor de informes ad hoc?

Así que creo que tienes la idea.

Debería poder probar todos los requisitos y crear múltiples casos de prueba para cada uno. Si ha identificado áreas de riesgo, asegúrese de haberse enfocado en esas áreas para realizar pruebas más extensas.

Planificación. La mayoría de los proyectos de TI llegan tarde. No llegan tarde porque las personas de TI son flojas, llegan tarde porque las personas no pueden estimar adecuadamente.

Por ejemplo, ¿cuántas horas debe codificar un programador en una semana? Bueno, ¿en cuántas reuniones, formales e informales son? ¿Cuánto tiempo se gasta informalmente trabajando con otros en lugar de codificar? En mi experiencia, 20 horas a la semana es optimista.

También necesita planificar bloqueos, vacaciones, enfermedades y otras situaciones.

¿Cómo mejorar en la estimación? Sea pesimista (ver arriba) y aprenda de sus errores. Haga un seguimiento de su trabajo real en relación con su plan y luego, al final del proyecto, intente determinar por qué hay una diferencia. Y luego, la próxima vez que construya una estimación, tenga en cuenta las cosas que ha aprendido.

Documentación. Consulte con los usuarios lo que necesitan, no lo que se produjo antes. A menudo, más es menos, un documento de inicio rápido laminado de una página suele ser suficiente para la mayoría de los usuarios.

Eso es un comienzo.