¿Cómo sugerir mejoras del proyecto en un entorno rígido / de mente estrecha?

Instrucciones:

Soy un nuevo empleado en una pequeña empresa que tiene mucho talento, pero parece haber sobrevivido con procesos ad-hoc simplemente porque en su mayoría han tenido proyectos pequeños y clientes habituales que son amigos de los ejecutivos de la empresa.

Algunos antecedentes:

Recientemente comencé un nuevo trabajo en una empresa de software personalizada (por contrato) de 20 personas. El primer proyecto que me asignaron todavía está en progreso y no va bien (hice esta pregunta antes de registrarme aquí). No sé si tuve mala suerte y comencé con el proyecto 1 en 100 que está mal administrado. Lo que temo es que tropezar con requisitos poco claros, expectativas poco realistas y sin puertas de peaje establecidas para dependencias difíciles proporcionadas por el cliente es estándar.

Y no me importa cuál sea la norma. Todo lo que realmente quiero es asegurarme de no terminar en un proyecto como este en el futuro y lo único que puedo pensar es ayudar a mi empresa a implementar las herramientas y los procesos para lograrlo.

Entonces, acabamos de dar inicio a nuestro proyecto más grande en la historia de la compañía. Es 4 veces más grande en términos de costo que nuestro proyecto anterior más grande. Acabamos de recibir una llamada esta mañana en la que el presidente dijo que todos en la empresa estarían involucrados en el proyecto de alguna manera (en comparación con los 1 o 2 desarrolladores estándar y un PM a tiempo parcial por proyecto).

Esta parece una oportunidad perfecta para ayudar a mi empresa. Tengo algunas ideas, pero como mencioné, no tengo experiencia en PM. Tampoco deseo obtener experiencia en PM, pero haré lo que sea necesario para mejorar mi empresa.

Esto es lo que he encontrado hasta ahora:

  1. Implementar el control de fuente : actualmente ningún proyecto o desarrollador usa SC, excepto yo. Tengo un servidor SC ejecutándose en mi caja de desarrollo personal que uso para rastrear cambios, crear ramas para probar nuevas funciones, etc.

  2. Publique un wiki : hace unas semanas descubrí que otro desarrollador había pasado un día tratando de hacer funcionar una tecnología en particular que yo mismo acababa de poner en marcha. Habría ahorrado unas pocas horas como mínimo si hubiera podido ir a una base de conocimiento central donde podría haber registrado mi experiencia.

  3. Use algún tipo de herramienta de PM : el CEO acaba de registrarse para obtener una cuenta de Basecamp. Lo uso para realizar un seguimiento de las listas de tareas pendientes (traducidas de la hoja de cálculo de Excel de requisitos funcionales). Nadie más en la empresa, excepto el PM de mi proyecto, lo usa.

  4. Implementar un rastreador de errores: el rastreador de errores para mi proyecto actual es un archivo de texto en el servidor en el que se registran las solicitudes de comentarios. Eso y largas cadenas de correo electrónico de nuestro cliente que a menudo comienzan con "Tal y tal no me funciona".

  5. Sea un cruzado : he intentado predicar los beneficios de todas estas herramientas y técnicas, pero me he encontrado con una actitud de "No le dedique demasiado tiempo. Solo trabaje en la codificación".

Como puede ver, la mayoría de mis ideas involucran algún tipo de herramienta o tecnología nueva (nueva para mi empresa de todos modos). ¿Cómo puedo señalar fallas en los procesos de mi empresa sin parecer un sabelotodo? Llevo solo unos meses aquí y solo quiero que mis proyectos, mi equipo y mi empresa sean increíbles. Me encanta lo que estoy haciendo en mi nuevo trabajo. No me encanta cómo lo hacemos.

¿Puedes contarnos más sobre el equipo? Es decir, ¿cuántos desarrolladores front-end, del lado del servidor y back-end?
La mayoría de los desarrolladores hacen de todo. Nuestras aplicaciones se realizan por contrato, por lo que generalmente no se espera mucho trabajo de diseño. En mi proyecto actual, estoy haciendo front-end JS, servicios .NET en el back-end, instalación y configuración del servidor, etc. La mayoría de los proyectos tienen un desarrollador principal que buscará ayuda cuando la necesiten de los otros desarrolladores. Un proyecto generalmente tiene el 80-90% de su trabajo completado por una sola persona. Afortunadamente tengo algo de aceptación (a partir de ayer) para comenzar a incluir más de un desarrollador por proyecto.

Respuestas (7)

Definitivamente se encuentra en una posición difícil, y lo aplaudo por tratar de mejorar las cosas para su grupo. Una cosa que te sugiero es que no trates de abordar todo a la vez. Mire los problemas específicos que enfrenta, decida cuáles abordar primero (tal vez en función de lo fácil que es convencer al resto del equipo, tal vez en función de cuáles puede obtener estadísticas). Una vez que tenga algunos éxitos, le ayudará a presentar su caso para cambios futuros.

No menciona si su equipo está en una sola ubicación o distribuido. La mayoría de mis sugerencias a continuación están dirigidas a grupos ubicados en el mismo lugar, pero puede adaptar muchas de ellas para equipos distribuidos.

Aquí hay algunas sugerencias (sin ningún orden en particular):

  • Asegúrate de hablar con el resto del equipo en situaciones individuales. Quizás otras personas estén viendo los mismos problemas o tengan el mismo dolor. Trate de obtener una imagen más grande de todo.

  • No tenga miedo de mejorar sus propias prácticas, incluso si el equipo no va a seguir una de sus sugerencias. Considere implementarlo para su propia parte del trabajo, a menos que se le indique que no lo haga. Sin embargo, definitivamente hable de eso con el PM (no lo haga a escondidas). Parece que ya está haciendo esto con el control de fuente, pero no tenga miedo de implementar otras cosas también.

  • Hablando de otras herramientas/prácticas a considerar:

    • revisiones de diseño (incluso las revisiones informales por encima del hombro son mejores que nada)
    • revisiones de código
    • pruebas unitarias automatizadas
    • servidor de compilación automatizado
  • Adapte la práctica de desarrollar pequeñas unidades de funcionalidad a la vez. Asegúrese de que puede verificar el código de trabajo diariamente (más o menos). Asegúrate de estar siempre avanzando, incluso si es solo un pequeño paso. Hable con el PM sobre la aplicación de esto también en todo el equipo.

  • Una vez que haya llegado al punto en el que el código está "siempre" en un estado de funcionamiento, sugiera a su PM que su equipo adapte un horario regular para reunirse con el cliente para mostrar el progreso.

    • Estas revisiones pueden ayudar a garantizar que su equipo esté creando la solución adecuada. Es mucho mejor descubrir que una semana o dos han ido por el camino equivocado, que descubrir que 6 meses han ido en la dirección equivocada.
    • Es probable que el cliente se sienta más cómodo con su estado, ya que habrá visto visualmente dónde se encuentra.
    • Estas reuniones pueden ser un buen momento para discutir prioridades (qué abordar a continuación), así como cualquier problema que haya surgido o riesgos que puedan materializarse en el futuro.
  • Recordatorios visuales y controles de proceso.

    • ¿Todos en el equipo saben cuáles son los objetivos principales del proyecto? No me refiero a "terminar este producto para la fecha X", sino más bien a "asegúrate de que los usuarios califiquen nuestro producto con 4 estrellas o más". Asegúrese de que el equipo comprenda estos objetivos y colóquelos en el área del proyecto. O simplemente en la pared de su cubo/oficina si no hay un área de equipo.
    • ¿Todos en el equipo tienen la misma visión del proceso de desarrollo? Considere implementar un tablero de seguimiento de elementos de trabajo que muestre el proceso de desarrollo de su equipo. Si bien probablemente sugeriría un tablero kanban (y el proceso que ayuda a impulsar), esto podría ser simplemente un reflejo de dónde están las cosas actualmente y qué cosas están por venir. Si bien una versión electrónica de esto es mejor que nada, tenerlo visible para todo el equipo en una pizarra grande parece tener más impacto en mi experiencia.
      • Una vez que tenga esto en su lugar, comience a tener reuniones diarias cortas (15 minutos o menos) con otros miembros del equipo frente a la pizarra. Concentre la conversación en las áreas en las que las personas necesitan ayuda o en los problemas que ven surgir.
      • si el equipo no está preparado para eso o si no hay un área para una versión de equipo de esto, al menos considere poner uno para las cosas que se le han asignado, y dedique unos minutos cada día a revisarlo
  • métodos adicionales de comunicación del equipo: algunos de estos tienen propósitos superpuestos, puede mezclar y combinar para adaptarse a su equipo

    • wiki
      • tienes esto
      • asegúrese de animar a otros a agregarle
      • si recibe información que es útil para el equipo (piense en el tráfico de correo electrónico que dice cómo hacer algo), comience a copiarlo en la wiki
    • lista de distribución de correo electrónico
      • bueno para enviar información que todo el equipo necesita
      • necesita a alguien responsable de agregar nuevos miembros al equipo de manera oportuna
      • si es importante guardar la información para más tarde, alguien debe ingresarla en el wiki
    • servidor de chat interno
      • excelente manera de lanzar preguntas rápidas sin preocuparse de que la información confidencial salga de la empresa
      • como arriba, alguien puede necesitar copiar la información a la wiki
    • servidor de preguntas y respuestas
      • básicamente, una versión interna de Stack Exchange
      • las respuestas podrían terminar haciendo referencia a la wiki
      • Es posible que las respuestas deban copiarse en wiki.
  • Inicie un club de lectura: concéntrese en libros que se apliquen a los problemas que su equipo realmente ve. Con suerte, las personas que han estado en su empresa por más tiempo terminarán hablando sobre cómo pueden ver que el libro se aplica a lo que han experimentado en el pasado, lo que los hace pensar más en ello y le brinda más información sobre la situación. . En mi mente, algunas sugerencias para temas de libros incluirían:

    • implementar el cambio dentro de las empresas (Fearless Change)
    • Metodologías ágiles y lean (demasiadas para nombrarlas)
    • prácticas de desarrollo (Programador Pragmático, Código Completo, El Código del Desarrollador).
tenemos menos de 20 empleados ubicados en 5 ubicaciones diferentes, por lo que definitivamente somos una organización remota. Hablar con el equipo uno a uno es una gran sugerencia. Solo necesito asegurarme de que no suene como si me estuviera quejando de las cosas. Necesito un co-conspirador o dos. No es que estemos haciendo nada malo, pero salir y decir "¡Estoy comenzando una cruzada de mejora de procesos!" no funcionaría bien, por lo que debe tener sentido en el contexto de que solo yo y otro desarrollador lo hagamos, incluso si nunca funciona en toda la organización. Eso me justifica sea cual sea el resultado.

Todas estas son excelentes ideas. Lo que debe tener cuidado es cómo los presenta. No, por ejemplo,

¡No puedo creer que los IDIOTAS no estén controlando la fuente!

(Estoy exagerando para el efecto aquí)

sino más bien:

He leído acerca de algunas organizaciones que han implementado el control de código fuente y realmente han podido ahorrar tiempo y dinero...

(Hablar de tiempo y dinero hará que los oídos de tu jefe se animen).

¡Buena suerte!

Oye, esa es una buena idea. Incluso si no puedo recopilar las métricas fácilmente para mi propia organización, tal vez pueda encontrar ejemplos de otros que tengan historias de éxito sobre la implementación de las ideas mencionadas aquí. Lo ideal sería que fueran pequeñas empresas y no algo así como Oracle ahorró mil millones de dólares al implementar un wiki.
Correcto: una comparación de manzanas con manzanas es más convincente.

Necesitas métricas por encima de cualquier otra cosa para esta cruzada, y debes elegir tus batallas sabiamente. No hay ningún método o herramienta que pueda resistir el uso indebido, por lo que las mejoras sugeridas son fáciles de "demostrar que están equivocadas" por parte de las personas involucradas, pero no al 100% a bordo. Así que busque algunas victorias fáciles para ganarse la confianza de la gerencia y, lo que es más importante, de los miembros del equipo.

Comience con algo pequeño, en lo que sea fácil realizar mediciones fiables antes/después. Haga un plan para mejorar esta área y manténgase firme; no acepte una versión de su plan que diga "lo haría". Al mantener su primera mejora pequeña y barata, esto debería ser más fácil de digerir para todos.

Si tiene éxito en hacer una mejora medible, creará una oportunidad para que todos los demás crean que el cambio es posible y verá sugerencias que llegan de todos los rincones. No es el único en la empresa que sabe que las cosas podrían mejorar, pero probablemente sea el único que cree que es posible. Este es el cambio más importante que tu actitud proactiva puede provocar :)

Has captado la esencia del problema. No es un problema de tecnología o de gestión. Es un problema de mentalidad. Entonces, ¿cómo capturo métricas en una empresa que no tiene ninguna herramienta para rastrear estas métricas? Tenemos una aplicación de seguimiento de tiempo. Todos los proyectos anteriores, tanto en curso como completados, están ahí, pero sin el contrato de cada proyecto, no puedo ver si superaron o no las expectativas. Parece que este tipo de mejora de procesos generará ganancias a largo plazo. Pero poder decir "Ahorramos 160 horas en este proyecto gracias al nuevo sistema XYZ" no parece posible.
Me alegro de que lo veas de esa manera :) Por lo tanto, 160 horas ahorradas en un proyecto no es lo que deberías aspirar para empezar, ese es un hito para más adelante. Debería estar buscando 10 horas ahorradas cada mes para una inversión de 1 hora. Es difícil darle un consejo específico sobre cuál debería ser exactamente su primera mejora, sin saber más sobre su entorno. En primer lugar, ¿está tratando de vender estos conceptos a la gerencia, a los miembros del equipo oa ambos?
En última instancia, necesito vender estos a la gerencia. Sin embargo, muchos empleados han estado en la empresa durante mucho tiempo y tienen el respeto de la gerencia que lo acompaña. Uno de los problemas es que todos están tan ocupados que no tienen el ancho de banda para aprender una nueva herramienta o proceso y mucho menos ser un campeón. Necesito algo con un factor "genial" para vendérselo a mis colegas técnicos. Una herramienta nunca es una solución en sí misma, así que necesito ser creativo y crear algunos procesos en torno a una herramienta y comenzar a usar ese proceso yo mismo para mejorar mi propia productividad. Entonces puedo decir "¡Mira! Esto funcionó"
Entiendo tu aparente catch22. Pero sigo pensando que sería recomendable buscar un aliado entre tus compañeros, para tu primer pequeño proyecto. La razón principal es ayudar a identificar el "dolor" correcto a curar, ya que al novato todo le parece horrible, pero el experimentado sabe que ese es el PITA más grande. La razón secundaria para formar un equipo es, por supuesto, ganar algo de peso en las "negociaciones" con la gerencia. Básicamente eres un emprendedor que busca problemas en el mercado para resolver :)
¡Excelente punto sobre ser un emprendedor! Y estoy de acuerdo en encontrar un aliado. Ver mi comentario en la publicación de Kyle

Eres ambicioso, eso es bueno, yo soy así. Trabajé en una casa de software de nueva creación, luego seguí moviéndome a través de organizaciones más grandes durante el período de tiempo.

Cada vez que quería hacer un cambio mediante la automatización de un proceso. Finalmente, me di cuenta de que la mayoría de las pequeñas empresas que no están trabajando en soluciones empresariales se preocuparán principalmente por el tiempo de comercialización (ganar dinero). Es posible que no existan en el próximo año o seis meses, por lo que generalmente piensan que una mejor calidad y automatización es un lujo que desean, pero que no pueden pagar.

Deberá justificar el gasto a su gerencia, y descubrí que no es fácil de hacer. Por lo general, estarán de acuerdo contigo y dirán que es bueno, pero puede esperar hasta que sea realmente necesario.

Ahora estoy trabajando para una casa de software exitosa (todavía una empresa relativamente pequeña) donde todo está impulsado por la automatización de procesos (Integración Continua). Ahora es parte de nuestra cultura, pero nos tomó un tiempo llegar aquí.

Ahora, con respecto a las herramientas que ha mencionado, sí, creo que son buenas y, en general, puede ponerlas en funcionamiento en unos pocos días. Pero esto es solo la punta de un iceberg, ¿tal vez tiene sentido encontrar un entorno de trabajo con una cultura diferente?

Editar:

Mi respuesta se basa en lo que he experimentado anteriormente. Sugerí cambiar un entorno de trabajo porque anteriormente había intentado automatizar procesos en empresas más pequeñas, pero fracasé porque lo único que les preocupaba era el tiempo de comercialización. Todo lo que querían hacer era sacar el sistema por la puerta y no preocuparse por lo que podría pasar en los siguientes seis meses.

Con respecto a la empresa actual para la que trabajo, un director técnico sabe cómo se supone que debe funcionar la empresa de ingeniería de software. Contrató a las personas adecuadas, nos dividió en departamentos (front-end, back-end, db, lado del servidor, evaluadores, "madurez del proceso", líderes de control de calidad, etc.). Nuestros procesos están impulsados ​​por la integración continua y puedo entrar en detalles de lo que hemos logrado o no hemos logrado. Somos bastante buenos, pero nuestro modelo de madurez de capacidad (http://en.wikipedia.org/wiki/Capability_Maturity_Model) todavía está entre dos y tres, es bueno, pero queda un largo camino por recorrer. En su organización, parece que requerirá un gran esfuerzo pasar del nivel uno al nivel dos. Por eso te he preguntado si te has planteado cambiar de entorno laboral.

He estado luchando con su respuesta todo el día porque simplemente salir y encontrar una cultura diferente fue/es algo que consideré. Creo que el hecho de que hice la pregunta en lugar de seguir adelante demuestra que estoy comprometido con el cambio en mi organización. Sería muy útil para mí si pudiera ampliar esta oración: "Ahora es parte de nuestra cultura, pero nos tomó un tiempo llegar aquí". Incluso si no desempeñó un papel impulsor en "llegar allí", ¿cuáles vio como las barreras más grandes y cómo se superaron en su organización?
Por favor vea la edición

Lo crea o no, la mayoría de las organizaciones, ya sea que se trate de capacidades de PM u otras capacidades comerciales, están bajas en la escala de madurez. Gartner estima que entre el 70% y el 80% de las organizaciones se encuentran en el nivel 1 o 2 de una escala de 5 puntos para BPM. Antes de implementar cualquier cambio, o incluso antes de proponer un cambio, forme un órgano rector/de competencia, un grupo de recursos con ideas afines que incluirá a aquellos con rango, para comenzar la identificación de problemas, la identificación de oportunidades, la investigación, la capacitación, la construcción de un caso para cambio, etc. Este grupo puede convertirse en una organización similar a una PMO o puede disolverse en el futuro, pero es casi esencial para poner las cosas en marcha. Hemos comprobado en nuestra consultoría BPM que esto es casi ley.

Entonces, a pesar de sus ideas, dé un paso atrás y analice la idea de este grupo de competencias de PM.

Entiendo su punto, pero "órgano de gobierno" suena como un término muy pesado en el contexto de una empresa de 20 personas. Creo que el grupo de competencia terminará compuesto por mí y una o dos personas más que se convertirán en el grupo de mejora de procesos de facto a través de pequeños éxitos ligeros que poco a poco ganarán reconocimiento.
Sí estoy de acuerdo. Debe haberse perdido la compañía de 20 personas... Sí, ignore mi enfoque. Tendré que revisar una vez que lo piense un poco.
No te lo perdiste. La pregunta solo decía "pequeña empresa". Edité mi pregunta para incluir esta información.

Puede ser contraproducente entrar en esto con la perspectiva de que la organización que está tratando de cambiar es "rígida" o "de mente estrecha". Esos términos tienen connotaciones negativas que pueden socavar cualquier cambio positivo que esté tratando de hacer.

Recomendaría dar un paso atrás y observar todas las cosas que la empresa hace bien. Por ejemplo, parecen estar haciendo felices a suficientes clientes que pueden crecer, contratar gente y pagar sus salarios (sin mencionar el alquiler y otros gastos).

Comprender lo que hacen bien ayudará a mejorar la entrega de estos cambios y proporcionará una comprensión más profunda de cómo realizar los cambios y qué cambios tendrán más posibilidades de éxito. También lo ayudará a aumentar la cantidad de personas interesadas en hacer cambios, ya que es probable que haya muchas más personas que quieran ayudar a la empresa que personas que quieran "rebelarse".

No quiero sonar demasiado zen al respecto, pero no hay un conjunto de recomendaciones único para todos. El tipo de mejoras que busca realizar provienen de relaciones de confianza y una comprensión respetuosa de la empresa actual.

Alguien editó mi título original, originalmente no usé rígido o estrecho de miras. Un mantra que he usado tanto para motivarme como para aceptar el mundo que me rodea es que la mediocridad está en todas partes y solo un gran esfuerzo te sacará de ella.

Estoy impresionado por su deseo de hacer todo lo posible para ayudar a su empresa. Tengo algunas ideas sobre cómo puedes empezar de a poco, para no ser insistente. Creo que el mayor problema radica en la falta de un proceso comercial utilizado en su empresa. Sugiero centrarse en esto antes de buscar mejorar los problemas en la programación, porque está rodeado de expertos en programación que son capaces de realizar estos cambios por sí mismos. En cambio, la implementación de procesos estandarizados mantendrá al equipo organizado y enfocado. Aquí hay algunas formas en que puede comenzar a construir estos procesos sin ser sincero al respecto:

  • Aproveche esas herramientas de PM . Basecamp es ideal para tareas pendientes. Si está buscando una mejor comunicación, considere aplicaciones como Slack para enviar mensajes. Si desea automatizar sus flujos de trabajo para mejorar la gestión de procesos, considere Tallyfy. Invite a sus compañeros de trabajo a estas aplicaciones, no tardarán más de unos minutos en darse cuenta de lo que se están perdiendo.
  • No hay necesidad de sermonear a sus compañeros de trabajo. Intente acercarse al gerente y mostrarle cuán eficiente se ha vuelto al usar estas aplicaciones o esbozar el proceso comercial. Con suerte, él o ella apreciarán su pasión por el crecimiento del negocio. Sin embargo, si eso no funciona, continúe usando estas herramientas con sus compañeros de trabajo, sin intentar venderles nada descaradamente.

Incluso si solo unas pocas personas siguen tus pasos, en un equipo de solo 20 puedes tener un impacto. Con suerte, a partir de ahí, sus herramientas de gestión de procesos comerciales se extenderán por toda la empresa una vez que los de mente estrecha comiencen a ver resultados.