¿Cómo responde a: "Desde la actualización ..." preguntas de los clientes? [cerrado]

19

Desde la actualización, la gente sigue llamando y diciendo "Desde la actualización X, Y y Z son lentos, malos y fallan"

Esto ha sucedido desde el comienzo de las actualizaciones.

¿Qué espera la gente? Gamma viene después de la beta, y las pruebas de gamma siempre convierten a nuestros usuarios en The Incredible Hulks ...

Tal vez nunca haya escuchado esto de un cliente, tal vez esté en la universidad o un desarrollador de FLOSS que pueda echarle la culpa a más de 5 o 6 personas, tal vez pruebe su código, tal vez no esté en esa situación interesante donde los clientes realmente lo llaman solicitando la hora exacta del día en que lanzará el parche de hoy (me encantaría hacerle eso a Microsoft) o tal vez sea un triste hijo de galleta como yo que acaba de enviar un nuevo actualizar y me fui a casa y temo volver a trabajar mañana.

De todos modos, serás más inteligente que yo de todos modos. ¿Cómo encuadras las críticas enmarcadas en "Debes ser un mal programador porque estás empeorando tu software"?

Peter Turner
fuente
1
Siempre me pasa cada vez que lanzamos un sprint a PROD
Gopi
1
Tener un perfil ligero que esté siempre activo puede ayudar (como parte de una estrategia más amplia). "Eso es gracioso; los datos muestran que la página se está generando un 5% más rápido ahora. ¿Qué parte se siente exactamente lenta? Tal vez podamos hacer algo al respecto ..."
1
La pregunta es realmente si X, Y y Z son realmente peores antes, o si hay algún otro factor más allá de su control en el trabajo.
Gerry
"¿Debes ser un mal programador porque estás empeorando tu software"? ... po9ssibly ... en algunas áreas ... .. por error en el transcurso de lo que es mucho mejor en las siguientes áreas ...
MAWG dice Restablecer Mónica

Respuestas:

16

Si esto le sucede cada vez que despliega, podría haber una falla grave en su proceso de desarrollo. Sospecharía un par de cosas que están causando los problemas.

  1. ¿Se desarrolla contra una base de datos que es del mismo tamaño (aproximadamente) que la producción? De lo contrario, siempre tendrá estos problemas porque las consultas que están bien con pequeños conjuntos de datos a menudo son perros con grandes.
  2. ¿Carga prueba en QA? Lo que funciona bien con las pruebas de un usuario es muy diferente de cómo responderán las cosas con 1000 usuarios que intentan hacer las cosas al mismo tiempo.
  3. ¿Asume que la percepción del usuario es incorrecta y los trata como si fueran estúpidos por quejarse? Si es así, entonces su actitud está causando más quejas y no disminuyendo.
  4. ¿Estás haciendo un buen trabajo de prueba? ¿Las características de la prueba de regresión no cambian para ver si se ven afectadas por el cambio? ¿Te importa cuánto tardan las cosas en llegar a golpear?
  5. ¿Prestan atención a cuándo es un buen momento para los usuarios cuando implementan o implementan alegremente un cambio en el sistema contable el día en que se ejecuta la nómina y se preguntan por qué los usuarios están enojados con la desaceleración?
  6. ¿Tiene diferencias ambientales entre dev y prod. A veces, esas molestas diferencias en los sistemas operativos o las versiones de la base de datos también causarán problemas como este. A menudo es una buena idea tener un entorno de puesta en escena que sea exactamente similar a la producción, algunos equipos con el mismo sistema operativo, la misma base de datos con datos que estén lo más cerca posible de los datos de producción. Esto se usa para probar su implementación. Ejecútelo primero en este servidor y haga que algunos usuarios o evaluadores lo visiten y realicen algunas pruebas.
  7. ¿Qué tan bueno es su proceso de implementación? ¿Suele perder pasos? ¿Puede ser ejecutado por alguien que no sea el desarrollador porque está claro qué código va en la rama que está implementando? Mejoramos mucho la implementación del código cuando obtuvimos un equipo de administración de configuración y nadie tenía los derechos para sentarnos con Prod y cuidarlo haciendo cambios "oopsie". Automatizar su compilación puede ayudar enormemente. Nadie debería adivinar lo que debe ir a la producción, ya que debería haber pasado al control de calidad y la puesta en escena primero, y cualquier problema de implementación funcionó. La modificación de la base de datos de secuencias de comandos también es clave. Deben estar en scripts y en control de fuente, por lo que el proceso de compilación puede recogerlos sin que alguien tenga que recordar, oh sí, necesitamos cambiar la longitud en la Columna B a 241 de 50.
HLGEM
fuente
Puntos positivos: 1. Sí, 2. A veces, 3. Pase, 4. N / A, 5. No si podemos evitarlo. Tengo una pregunta para ti, pero podría pensarlo y publicarlo más tarde.
Peter Turner el
6. A veces, pero esos son errores legítimos generalmente causados ​​por algo en una actualización anterior que no se ha ejecutado.
Peter Turner el
7. Sí, ese es un gran problema: nadie utiliza el archivo MAKE que escribí a menos que sea absolutamente necesario y esta es la causa del 60% de nuestros problemas. (PD: Marcaré esto como correcto si lo formatea mejor)
Peter Turner
Esta es una gran respuesta a "¿Qué debo mirar para evitar que una versión rompa el UX?" pero no estoy seguro de por qué @PeterTurner aceptó ya que esto no responde a la pregunta real.
Lilienthal
13

¿Cómo encuadras las críticas enmarcadas en "Debes ser un mal programador porque estás empeorando tu software"?

Pero tal crítica está mayormente justificada. Un nuevo lanzamiento no debería ser peor que el anterior, pero como sabemos, en realidad a menudo lo es, y es nuestra culpa porque lo hicimos.

Cometer errores es humano, y no convierte a nadie en un "mal programador", así que no tome las críticas personalmente (de todos modos, nunca tomaría en serio ninguna crítica profesional de un no colega). Simplemente agradezca al cliente por informar el problema y corríjalo lo antes posible. Es tu trabajo como buen programador.

Joonas Pulakka
fuente
9

Bueno, en el trabajo no interactuamos mucho directamente con los clientes, así que tendré que responder a esto desde el trabajo personal del proyecto. Estoy escribiendo un motor de juego que la gente puede usar para construir sus propios juegos. Todavía está en pre-alfa, pero tengo algunos usuarios interesados ​​y, a veces, tengo errores.

Cuando recibo un informe como este de un usuario, trato de usar el toque personal. No quise introducir errores, y quiero que tengan una buena experiencia con mi motor, así que necesito hacerles creer eso. Primero, obtenga un identificador de mensajería instantánea para que podamos hablar. Le preguntaré al usuario sobre su proyecto e intentaré obtener una copia del mismo. Esto hace que la reproducción sea mucho más fácil. Pregúnteles qué estaban haciendo cuando ocurrió la falla. Mientras tanto, tengo el motor abierto en el depurador y me estoy enfocando en el problema mientras hablamos.

Si es una excepción, generalmente es bastante simple. Reproduzca el problema y el depurador lo toma y lo lleva directamente a la ubicación del error con un seguimiento completo de la pila, y es obvio lo que está sucediendo. Si se trata de un rendimiento lento o un comportamiento incorrecto, puede tardar un poco más. Pero en la mayoría de los casos puedo tener una solución lista dentro de los primeros 20 minutos, como máximo. Lo cierro y se lo envío para que lo prueben. "Está bien, creo que lo tengo. ¿Ver si esto funciona a tu final?"

La respuesta es casi universalmente una mezcla de asombro y gratitud, porque la mayoría de los desarrolladores (léase: compañías de software) simplemente no solucionan errores y vuelven a lanzarlos tan rápido. Y luego, si está realmente solucionado, he convertido a un crítico potencial en fanático. Es una muy buena técnica; Solo deseo que más desarrolladores lo adopten.

Mason Wheeler
fuente
1
Sí, están asombrados. Trabajo con muchas enfermeras que inician sesión en nuestro foro PHPBB y usan el emoticón 'La cabeza de Bang contra la pared', luego termino pensando que somos cosas muy interesantes una vez que transferimos una DLL o ejecutamos una consulta SQL y su sistema está funcionando de nuevo y ni siquiera tuvieron que cerrar sesión.
Peter Turner, el
6

Yo personalmente tomo el problema positivamente. Interactúo todo el tiempo con muchos clientes, y sigo codificando también.

Cuando descargan una nueva versión y me dicen algo así, siempre digo algo como esto:

Gracias por informarme de ese error. Tal vez se haya presentado junto con todas las nuevas características que agregamos. Lo arreglaremos lo antes posible.

De hecho, el cliente es tu verdadero jefe. Si la experiencia contigo es mala, también es mala para ti.

Incluso si él no tiene razón, usted como parte de la empresa, debe aprovechar esta oportunidad para:

  • aprenda de él, recolectando posibles mejoras que podría hacer al producto.
  • Convierte a un cliente descontento en uno feliz, tan feliz que hablará de ti (incluido tu jefe)
  • estar orgulloso de lo que estás haciendo

fuente
1
¿"convertir que un cliente descontento en uno descontento"? No me gustaría hacer eso.
Lie Ryan
4

Detalles, Detalles, Detalles. Les pregunto qué estaban haciendo y cuándo, sean específicos. Podría ser algo o podría ser que el video de Justin Beaber se acaba de lanzar en youtube. Los archivos de registro son tus amigos en ambos casos.

También pido fechas cuando lo notaron. A veces, especialmente en las tiendas empresariales, los usuarios no saben cuándo sale un lanzamiento, solo saben que algo lleva mucho tiempo completar y ahora se están quejando.

La sombra del trabajo. No puedo enfatizar esto lo suficiente. Si tienes la suerte de tener usuarios cerca, solo míralos trabajar desde el tiempo. A menudo encuentro que ignoran problemas evidentes y nunca los denuncian. A menudo solo se quejarán cuando sepan que algo es nuevo o que inicialmente noten un problema.

Bill Leeper
fuente
3

El primer paso es que debes tener una mentalidad de que esto (la actualización rompe otras cosas) no es normal. Su actualización no debe interrumpir o ralentizar otras partes de la aplicación. No está bien, no es de esperar, y no es culpa del usuario cuando se queja de ello. Debería hacer tantas pruebas como sea posible para tratar de evitarlo. Cuando sucede, tienes un problema urgente.

El paso 2 es que debes saber lo que hiciste. Es posible que su sistema de control de fuente pueda ayudarlo, o algún tipo de sistema de seguimiento del trabajo, pero debe poder decir en el momento en que reciba una de estas quejas "ok, agregué una columna a esta tabla, cambié esta cuadrícula para calcular los nuevos impuestos, agregaron esos dos nuevos informes ... "y así sucesivamente.

El paso 3 es que debe tener experiencia para encontrar problemas de rendimiento y fallas rápidamente, de modo que sepa qué tipo de cosas pueden causarlos y pueda resolver el problema de inmediato. Esta cosa se ha implementado y debe encontrar el problema rápidamente y obtener un parche. Cambiar un informe no puede ralentizar una parte de la aplicación que no usa el informe. Ahora está en modo de emergencia y tiene que averiguar dónde está el error y qué hacer al respecto, sin romper otra parte de la aplicación en el proceso.

El paso 4 es para cada una de estas miserias, debe aprender una lección que probará la próxima vez. Te convertirás en "ese tipo" que se opone a ciertas construcciones porque "será horrible cuando haya 10,000 registros".

Un poco más en el frente "esto es normal". Ejecuto (entre todas las otras cosas que tenemos en marcha) un proyecto ágil para un cliente externo. Hemos estado haciendo lanzamientos aproximadamente cada 6 semanas durante dos o tres años. Y sí, el lanzamiento está programado para el minuto. Acabamos de hacer uno a las 8 de la mañana de ayer. Y aproximadamente cada 4to o 5to lanzamiento (una o dos veces al año, en otras palabras) algo se rompe en vivo, y saltamos a la acción y lo hacemos lo más rápido posible. A pesar de que probamos y probamos y probamos antes del lanzamiento. Luego les contamos lo que pasó. "Hubo un pequeño error en el despliegue de junio que dejó este campo en blanco, pero nunca nos dimos cuenta porque no estábamos usando el valor en ese momento. Luego, en este despliegue cuando comenzamos a usar el campo, los que estaban en blanco causaron ese mensaje de error que viste. He corregido el error para que no pueda quedar en blanco, poner valores en los registros incorrectos y confirmar que ya no explota. Nuestras disculpas. "O" Ese cambio de emergencia que pidió, solo dos días antes del lanzamiento, tuvo consecuencias que no pensamos y que no probamos. ¿Recuerda por qué nos resistimos a los cambios de emergencia? "Puede que no sea un mal programador por empeorar la actualización, pero seguramente hice algo malo. Y necesito corregirlo. Puede que no sea un mal programador por empeorar la actualización, pero seguramente hice algo malo. Y necesito corregirlo. Puede que no sea un mal programador por empeorar la actualización, pero seguramente hice algo malo. Y necesito corregirlo.

Kate Gregory
fuente
0

Solo para cubrir otro aspecto:

Mantenemos una lista de clientes que reclaman esto cuando resultó que no era así. Si bien el software es defectuoso, a menudo muy defectuoso, muchos de nuestros clientes reclamarán "comenzó con la actualización" para obtener atención inmediata, sin darse cuenta de que esto termina perdiendo el tiempo de todos, ya que recorreremos los deltas para la función indicada buscando el problema. Si el cliente dice la verdad, esto tiende a encontrarlo rápidamente. Si el cliente está en la lista falsa demasiadas veces, no nos molestamos ya que no nos gusta perder el tiempo.

No puedo imaginar qué tipo de mentalidad se requiere para pensar que decirnos una mentira aceleraría el proceso. Estas personas son o trabajan con médicos y deben saber muy bien lo que sucede cuando las personas mienten a los médicos. Se aplica el mismo principio.

Joshua
fuente
1
Aspecto verdadero, excepto que creo que no mienten. Simplemente lo notan después de la actualización (por cualquier razón psicológica), y luego sacan conclusiones : los usuarios son realmente maestros cuando se trata de esto :-)
Martin Ba