Estoy trabajando en un proyecto que tiene un horario muy apretado. No tengo mucho tiempo para codificar y probar (aunque trabajo más de 12 horas todos los días, todavía está retrasado), y el resultado es muy frágil. Su código también es muy dilema.
Este programa es utilizado por todas las oficinas de la empresa de nuestro cliente, que se encuentra en muchos países. Regularmente recibo llamadas telefónicas a medianoche sobre errores de nuestro usuario / probador o sobre ellos que no saben cómo usar algunas funciones.
Después de tres años en este proyecto, me siento muy estresado y no puedo dormir bien porque estoy muy preocupado por los errores y las llamadas telefónicas.
Tengo algunas preguntas:
- Durante tres años, todo el código que he escrito es el código de escenario de uso perfecto (por lo que se rompe fácilmente). Está mal diseñado y no tiene pruebas unitarias. Tengo muchos problemas por este hecho. Por lo tanto, quiero saber si es factible escribir código que funcione cuando el proyecto tiene un cronograma muy ajustado.
- ¿Cómo puedo escribir un código mejor en la misma cantidad de tiempo?
- ¿Cómo puedo aclarar mi mente y no preocuparme por el trabajo cuando me voy a dormir?
time-management
Anónimo
fuente
fuente
Respuestas:
Prohibir llamadas telefónicas
Si sus usuarios están en todo el mundo, seguramente no pueden esperar que levante un teléfono cuando sean las 4 AM de la mañana y esté en la cama. Prohibiría las llamadas telefónicas y cambiaría a otros medios de comunicación que puedan servir mejor a este escenario (correo electrónico o algún DB de seguimiento de problemas). Pero incluso en la oficina, haga un horario programado de accesibilidad telefónica. De lo contrario, no puede hacer nada durante el tiempo que esté en la oficina.
Esto te dará un sueño y un descanso valiosos.
Apretada agenda
Si este proyecto ha estado programado durante tres años, alguien debe haber sospechado algo de que las cosas realmente no funcionan. Tal vez sea hora de que alguien les diga algo a los planificadores y especialmente a sus usuarios / clientes y sus gerentes que este es un proyecto de marcha de la muerte. Ha estado en desarrollo durante tres años, se ha retrasado y está lleno de errores. El plan debe reevaluarse por completo, el código existente debe refactorizarse y las nuevas características no deben desarrollarse hasta que se resuelvan numerosos problemas.
Orden del caos
Establezca una metodología de desarrollo que haga que las cosas sean predecibles y soportables para usted. Si eres un desarrollador, atender llamadas telefónicas a medida que entran no te permite hacer ningún trabajo. Cada interrupción te lleva 15 minutos para volver a donde lo dejaste. Las llamadas telefónicas deben estar apagadas . Al menos en tu escritorio porque eres un desarrollador. Si puede redirigir las llamadas telefónicas a otra persona que no lo moleste después de cada llamada, entonces haga eso.
Establecer algún tipo de base de datos de incidentes / errores. Tómese un tiempo cada mañana cuando llegue al trabajo y priorice nuevos incidentes (usted mismo, su equipo o con su cliente / gerente). Intente resolverlos en este orden de prioridad y no intente pensar en llamadas telefónicas.
Y si
¿Qué sucede si no puede apagar su teléfono y no puede decirles a sus usuarios que no pueden llamarlo cuando lo deseen? Si tiene el número de teléfono de su usuario, le sugiero que haga lo contrario: cuando lo llamen, notifíquelo e infórmele que lo volverá a llamar cuando esté resuelto. Luego llámalos cuando estén durmiendo. Si te dicen que están durmiendo, recuerda su respuesta y úsala cuando te llamen a media noche la próxima vez. La gente suele entender mejor su propio idioma.
Si usan el teléfono de la oficina y usted usa un teléfono móvil para que no pueda llamarlos fuera del horario laboral y puedan hacerlo, entonces comience a apagar su teléfono móvil después de salir de la oficina. Has estado allí durante 12 horas y mereces estar fuera del trabajo. Si el teléfono móvil es personal, entonces su empresa debería conseguirle uno nuevo y usted debería informar a sus usuarios / clientes al respecto. Si luego comienzan a llamarlo por su cuenta personal (porque no pueden comunicarse con usted en su empresa, usted tampoco:
La cosa más importante
No desarrolle ninguna funcionalidad nueva hasta que resuelva los problemas existentes. Al menos de alta y media prioridad.
fuente
A menos que sea la única persona en el equipo, en cuyo caso, probablemente esté a más de la mitad del camino hacia el agotamiento, tome turnos con 'el buscapersonas'. Eso debería aligerar la carga por ahora.
Luego, debe comunicar a la gerencia que necesitan programar una fase para pagar la deuda técnica, lo que significa pruebas, limpieza de código, refactorización. Y debe programarse pronto. En general, esto significa que durante un tiempo no hay código nuevo que no sea una refactorización o una prueba. Si no, solo va a empeorar.
Una vez en esa fase, elige las secciones más problemáticas de la base de código, la refactoriza, la limpia y escribe pruebas para probar la mierda. Una vez que las llamadas se detienen, o se pueden manejar sin que los desarrolladores se vuelvan locos, entonces estás listo para otra fase de características (si eso es lo que quieren). En este punto, escribe pruebas con código nuevo y sigue ejecutando las regresiones. En este momento, el software parece que está en camino a una reescritura.
Puntos de venta para su conversación con su jefe:
Sin embargo, seamos honestos. Hasta este momento, su empresa no ha pensado que este sea un problema lo suficientemente grande como para hacer algo al respecto; te vas a quemar Parece que nadie en la gerencia tiene ninguna experiencia de desarrollo real. Empieza a mirar.
fuente
Si bien puede haber algunas técnicas que le permitirán lograr pequeñas ganancias en productividad, un aumento del 5% en la producción de trabajo es peor que inútil en este momento. La verdadera habilidad que te estás perdiendo aquí es simple y fundamental:
Aprende a decir no
Di no a todas las expectativas irracionales que ya sabes que deberías rechazar. Sabes lo que son. Eso es obvio. Si no puede decir que no ahora, encuentre un trabajo donde pueda. Los empleadores inteligentes encontrarán esta habilidad deseable.
fuente
Comience por comprender que su proyecto va a fallar si nada cambia. Este es el paso más importante para hacer lo que necesita hacer. Un desarrollador no puede mantener 12 horas al día de esfuerzo y ser capaz de producir código útil. Llegarás a un punto en el que crearás errores estúpidos y perderás el progreso porque debes comenzar cada día arreglando lo que hiciste el día anterior. Parece que ya estás allí.
Hay dos problemas principales que deben abordarse antes de que pueda tener cordura nuevamente:
Para solucionar su situación, necesita la aceptación de la administración. El problema es que no sienten el dolor y no desea terminar en el hospital con un derrame cerebral para llamar su atención. El primer paso es explicarle a su gerencia dónde se encuentra y la presión bajo la que se encuentra. Si no lo entienden, suba otro nivel de gestión. O posiblemente describa sus condiciones de trabajo al departamento de recursos humanos. Exigirle que trabaje más de 8 horas al día durante períodos prolongados puede ser una violación de la ley, y el departamento de Recursos Humanos lo sabrá con seguridad.
Suponiendo que la gerencia escuche su declaración, desea tomar las siguientes acciones:
Una vez que haya realizado la versión crítica de corrección de errores, es hora de planificar la próxima. Todas las características y correcciones de errores deben priorizarse, y las versiones deben planificarse en torno a un subconjunto de la carga de trabajo pendiente. Descubrirá que a medida que aporta algo de cordura a su vida laboral, sus niveles de estrés disminuirán, su calidad aumentará y, en general, será más eficiente.
fuente
Parece que está sufriendo lo que considero un caso de falsa economía , y cuanto más tiempo se adhiera a las cosas que no funcionan, peor será su problema.
Algunos indicadores clave:
La respuesta corta es sí. La respuesta larga es que es complejo y requerirá un cambio masivo en las percepciones en nombre de la gerencia y posiblemente también del cliente, y un esfuerzo hercúleo de su parte ... pero volveré a todo esto en un momento.
Siendo realistas, no puede si su suposición es que puede hacer cualquier cosa que le ahorre tiempo y aún así obtenga un resultado perfecto. Debe aplicar técnicas que aumenten el tiempo que lleva implementar su código porque necesitaría tiempo para concentrarse en obtener los detalles correctos. Esto lleva tiempo, y es aquí donde sus economías falsas lo están lastimando más. Sin embargo, al hacer las cosas de una mejor manera, mejora la calidad de su código y eso a su vez reducirá la fragilidad de su sistema. Nuevamente, explicaré esto más abajo.
La ansiedad causa falta de sueño, y perder el sueño crea ansiedad. Este es un círculo vicioso si alguna vez hubo uno, y si no se controla probablemente conducirá al gemelo malvado de la ansiedad, la depresión . La pérdida crónica de sueño, que supongo que probablemente se combina con la falta de ejercicio y también con los malos hábitos nutricionales, es probable que provoque fatiga crónica . Todo esto es sintomático de todos los problemas que enfrenta en su lugar de trabajo y los problemas resultantes que probablemente enfrentará en su vida familiar. Aquí es donde radica la mayor evidencia de falsas economías, y es probablemente el problema más serio con el que debe lidiar primero.
Primero debo decir que no soy un profesional médico, y que realmente debe buscar el consejo de su médico antes de actuar sobre cualquier cosa. Sin embargo, señalaré que he vivido las experiencias que ha descrito en su publicación, y sé lo difícil que es lidiar con eso y lo importante que es hacer algo al respecto. He vivido la depresión, la ansiedad, la fatiga crónica, el estrés y todas las otras pequeñas molestias que los acompañan, por lo que te ofreceré algunos consejos basados en estas experiencias:
Ahora que he revisado todas las cosas relacionadas con la medicina, veamos qué puede hacer con su trabajo:
En términos de cosas relacionadas con la programación real:
Lo más importante de todo es que debe gestionar las expectativas, comenzando por las suyas. Solo eres humano y solo puedes hacer mucho en un momento dado. Debe gestionar las expectativas de su jefe y hacer que su jefe (o usted mismo) gestione directamente las expectativas de sus clientes. Esto significa priorizar seriamente el trabajo que haces. Asigne tiempo para nuevas funciones y tiempo para errores, y suponga que sus plazos se perderán. Cuando se trata de la posibilidad de perder fechas de entrega, promete entregar solo un conjunto de características críticas y dejar el resto de las características como "agradables de tener si es posible". En la próxima fecha de entrega, vuelve a pasar por este proceso, aumentando las prioridades de los "agradables" de la entrega anterior, y así sucesivamente. Incorpore esto a su metodología de desarrollo como punto de partida mínimo, y luego revise después de un par de entregas para ver dónde puede ajustar sus procesos para mejorar su eficiencia. Las mayores eficiencias vendrán de sus cambios en el estilo de vida, sin embargo, siempre hay pequeñas cosas que puede hacer para optimizar su trabajo, como reducir los gastos generales relacionados con la documentación y la comunicación entre usted y los usuarios finales.
Sea proactivo en todo esto. Muéstrele a su jefe que ambos pueden trabajar juntos para mejorar realmente las cosas, lo que finalmente se reflejará bien tanto en ustedes como en la empresa en general.
Además, no tome decisiones drásticas ahora. Espere hasta que se haya ocupado de su salud y su carga de trabajo, y vea cómo va por un tiempo. Cuando su mente se aclare y sienta que está en un lugar mejor, será el momento de decidir si vale la pena quedarse o si es hora de seguir adelante. Lo que básicamente estoy diciendo es tratar un problema a la vez y dejar que el resto se estire un poco hasta que necesiten su atención.
fuente
Si su horario es apretado, debe ser compulsivo sobre No repetirse . Identifique los métodos más utilizados y asegúrese de que se reutilicen en gran medida.
Planifique en qué trabajará hoy, anótelo y sígalo. Intente limitar lo que necesita recordar en cualquier momento a siete o menos elementos.
Daría un paso más y evitaría repetir el trabajo de otros. Use las bibliotecas del idioma siempre que sea posible. Utilice bibliotecas de terceros si es posible.
Puede parecer que lleva más tiempo escribir, pero apunta a métodos que solo hagan una cosa. Limito un método para tomar decisiones o hacer cosas. La cohesión de su código debería aumentar mientras que el acoplamiento disminuye. Debería encontrar que la prueba es más fácil. Esto se presta bien a la descomposición progresiva.
Simplifica tanto como sea posible. Use plantillas, listas de verificación y cualquier técnica que le permita evitar pensar en trivialidades.
Deberá evitar las interrupciones. Cada interrupción le costará unos 15 minutos en el horario. Protege tu tiempo.
Si esto es a largo plazo, vete a casa cuando descubras que tu rendimiento comienza a retrasarse. Si trabajas constantemente 12 horas al día, es probable que tu rendimiento sea lo que obtendrías trabajando 8 horas al día. Es posible que no note cuán mal se degrada su rendimiento. Tómese las cuatro horas adicionales para hacer algo de ejercicio y descansar. Vea si puede tomar una siesta a medio día o tomarse unas horas libres después del almuerzo.
fuente
Si fuera usted, hablaría con mi gerente y le explicaría que los plazos que establecen no son realistas. Si sigues trabajando así, pensarán que todo está bien, no se darán cuenta de los problemas que tienes y terminarás agregando más y más código mal escrito a tu sistema todos los días, lo que complicará aún más tu trabajo.
Como alternativa, siempre puedes cambiar a otro trabajo :-)
fuente
Rastrea todo lo que haces
Tómese el tiempo para realizar un seguimiento de todo lo que hace y cuánto tiempo usted y su equipo dedican a ello. Esto terminará siendo lo que traes a la gerencia para mostrarles que necesitas hacer las cosas de manera diferente. Si no tiene los datos fríos sobre lo que está haciendo y cuánto tiempo está dedicando a solucionar los problemas que otros informan, será mucho más difícil convencerlos de que es necesario realizar cambios. Cada hora debe ser rastreada por todos para que esto sea preciso. Esto debe usarse para decir que pasó 80 horas durante las últimas 3 semanas arreglando un sistema que podría haber sido reconstruido desde cero en la misma cantidad de tiempo.
Intenta cambiar las cosas
Utilice el seguimiento que ha reunido y las excelentes sugerencias que otros han hecho para elaborar un plan para mejorar el software. Elija las partes del software que están causando la mayoría de los problemas. Arme el plan que cree que llevará las cosas a un ritmo manejable normal. Dale tiempo para trabajar.
Prepárese para el hecho de que puede ser hora de irse
Si la gerencia no está dispuesta a cambiar las cosas y trabajar con usted, puede ser hora de pensar en seguir adelante. Estoy de acuerdo con los demás en que te estás quemando. Comience a preparar su currículum y cartera. Las cosas pueden mejorar y no tendrá que seguir adelante, pero si la gerencia no acepta hacer cambios, continúe. Su salud mental y física son más importantes que quedarse en un trabajo que le está quitando tanto.
fuente
Por el amor de Dios, ¿dónde está tu jefe de proyecto?
Si no tiene un gerente de proyecto que lo ayude a establecer un tiempo productivo, necesita uno. Necesita una persona dedicada a defender su tiempo de desarrollo, limitar el desplazamiento del alcance, gestionar las expectativas, etc.
Hace un trabajo creativo para ganarse la vida. Si no tiene una barrera entre sus clientes / usuarios y usted, ¿cómo puede enfocarse efectivamente en su desarrollo?
Un buen PM puede ser bueno para muchas cosas ...
1. Para jugar la carta 'Poder superior':
Sus usuarios lo están molestando por nuevas características, pero realmente necesita algo de tiempo para concentrarse en una versión de corrección de errores. ¿Quién dijo que tienes que hablar con los usuarios? ¿Es su responsabilidad escribir los contratos? ¿Es su trabajo gestionar las expectativas del cliente? ¿Tiene el poder de decisión final para dictar los términos del contrato?
¿No? Entonces, ¿por qué eres el único responsable de interactuar con el cliente? El desarrollo es difícil y requiere mucha concentración. Necesita la capacidad de recuperar el tiempo de desarrollo y puede hacerlo con un buen PM y una buena excusa.
Independientemente de lo que haga su PM en comparación con usted, si los clientes comienzan a molestarlo por modificaciones fuera de las especificaciones, solo dígalo.
Es una manera cortés de decir, no doy por vencidos.
Siga eso enfermando al 'Scope Creep Dog' en ellos.
Ahora déjame en paz. La capacidad de un usuario para interactuar directamente con los desarrolladores está permitida como un privilegio que se puede quitar. Si ese no es el caso, su administración le está fallando.
2. Gestión de expectativas 101
¿Quién en su sano juicio piensa que puede trabajar un horario tan loco y manejar el soporte técnico 24/7. Necesita a alguien que lo defienda porque su tiempo es valioso y debe dedicarse a su oficio.
Esto se aplica tanto a los clientes como a la empresa para la que trabaja. Para los clientes, si se sobrepasan, siempre puede preguntar ...
Si no es así, tiene derecho a rechazar las solicitudes. No me malinterpreten, es bueno ir más allá para hacer felices a sus clientes, pero es igualmente importante hacerles saber la diferencia entre lo que se espera y lo que les está dando como un favor.
Para la empresa para la que trabaja, necesita a alguien que transmita el mensaje ...
Es decir, ¿le están pagando 60 mil al año para gastar el 50% de su tiempo en soporte técnico telefónico, que es una posición de pago mucho más baja? Este es un tema peligroso para abordar, por lo que necesita un PM en el que pueda confiar para que sea un buen caso para usted. El argumento que debes hacerle es ...
O bien, ustedes me contrataron y están perdiendo dinero voluntariamente en esa inversión al hacerme pasar la mitad de mi tiempo ocupando un puesto de baja calificación. Lo creas o no, maximizando tu potencial pueden hacer más dinero a largo plazo.
Cuando se trata de negocios, es mucho más fácil lograr que la empresa cambie su posición si puede presentar una situación en la que todos salgan ganando. No tiene que ser un maestro de negociación para que este se mantenga. Por supuesto, si los recursos de la compañía son limitados, esto puede ser contraproducente para usted.
3. Todos pueden usar una animadora a veces
Un buen PM será, naturalmente, una persona-persona. El núcleo de lo que hacen son las relaciones con las personas. Un buen PM tendrá la capacidad de decirle a su cliente lo que no quiere escuchar y aún así hacer que se vayan felices.
También pueden ser una gran fuente de apoyo moral cuando los tiempos se ponen difíciles. Un simple aumento de la moral no debería ser demasiado para un buen PM si lo pides. Necesita a alguien de su lado, o su moral baja y el trabajo se siente abrumador.
Si no tienes a alguien más arriba en la organización que sea responsable de administrar las expectativas, tu administración está fallando y los superiores probablemente ni siquiera se den cuenta de lo mal que está yendo el proyecto.
Esa es la razón principal por la que evito trabajar para corporaciones como la peste. He tenido la suerte de trabajar para empresas más pequeñas donde tengo a alguien más arriba. Puedo hablar honestamente de los problemas con quién tendrá en confianza lo que tengo que decir y tomará medidas si es necesario.
Necesita a alguien de su lado para ayudarlo a mantenerse en línea con los requisitos comerciales y manejar las distracciones. Si no tiene eso y no hay esperanza de encontrarlo en el futuro, buena suerte ...
fuente
Wow wow wow ! ¡Sostén tus caballos vaquero !. Parece que tienes todo el desarrollo mal allí. Te faltan algunos fundamentos de software aquí mientras codificas. Sí, repase sus conceptos básicos ... la vida será mucho más fácil.
Hora de regreso a la escuela ahora
fuente
Me gusta hacer una lista de TODO, ordenarla por orden de necesidad y apegarme a ese orden incondicionalmente, incluso si tengo ganas de postergar algunas tareas.
Se sorprenderá de cuánto tiempo puede ahorrar simplemente reduciendo el tiempo que pasa preguntándose en qué trabajar después.
fuente
En este momento lo que puedes hacer es
Esto significará que al menos lo que hagas a partir de ahora ha sido aprobado por DOS personas con la esperanza de mejorar esos bits de código.
Lo que se puede hacer depende de la gestión. ¡Quizás quieras mostrarles esta pregunta con las respuestas!
fuente
Prohibir las llamadas telefónicas e implementar una estricta regla de "solo los errores van al rastreador de errores". Entonces, su primer movimiento del día es clasificar los errores recién ingresados, limpiar los engaños, priorizar y ponerse a trabajar en la corrección de errores PRIMERO. Y asegúrese de que sus correcciones de errores realmente solucionen el error y no presenten nuevos errores.
¿Cómo haces esa última parte? Al adaptar los casos de prueba a su código existente. Si tienes funciones, prueba que ingresen y generen lo que esperas, y que fallarán bien si les das basura. Utilice algún tipo de prueba de IU automatizada para probar la integración y el rendimiento de forma consecutiva.
En realidad no te vas a levantar de la cama a las 3 de la mañana para resolver problemas de código, ¿verdad? Si es así, te mereces todo lo que obtienes.
fuente
Intenta usar la técnica de pomodoro . Además, tengo 3 reglas personales para saber si estoy escribiendo un código bueno o malo que pueda resultarle útil.
fuente
Usted y los desarrolladores como usted son la única razón por la que puedo pensar para requerir una licencia de desarrollo de software, como médicos y abogados. De esta forma, su licencia puede ser revocada por no seguir las buenas prácticas mínimas de programación básica. No solo protegería a la industria de los incompetentes, sino que también protegerá a los programadores competentes de los gerentes que insisten en que sus programadores no sigan las buenas prácticas.
Para su información, prácticamente todos trabajan en un plazo ajustado. Sin embargo, aquellos desarrolladores que saben lo que están haciendo siguen las mejores prácticas porque hacen el trabajo más rápido a largo plazo. Entonces no tienen que trabajar 12 horas diarias durante 3 años seguidos.
fuente