Fondo
Trabajo como desarrollador en un departamento de desarrollo de software con otros tres desarrolladores y un gerente. Tenemos una aplicación de escritorio que se modifica constantemente en función de las necesidades del cliente.
Problema
Recientemente, uno de nuestros clientes solicitó la modificación de una característica que ya está presente en el producto. Requiere un par de clics más del mouse para hacer el trabajo.
Mi gerente quiere que esta modificación se implemente según la solicitud del cliente.
Expliqué claramente algunas veces que ya tenemos esa función y funciona bien. Además, expliqué el impacto técnico de cambiar la funcionalidad. Mi gerente quiere que proceda con el cambio según las solicitudes del cliente.
Pregunta
¿Cómo debo proceder?
¿Debo explicar la situación de nuevo? ¿O tal vez buscar otro trabajo? ¿O debería decirle a mi gerente que si es tan simple debería ayudar?
ACTUALIZAR
Cada respuesta a esta pregunta me aclaró una cosa: necesito cambiar mi actitud.
Como casi todos señalaron: no soy el gerente, siempre que informe a mi gerente sobre el inconveniente técnico de una solicitud, no debo juzgar. Además, renunciar sería una solución temporal, ya que el problema radica en mi actitud hacia el trabajo y el gerente.
Mi gerente quiere que proceda con el cambio según las solicitudes del cliente.
Pregunta
¿Cómo debo proceder?
Debe proceder con el cambio según las solicitudes del cliente.
Aparentemente el cliente quiere esta modificación. Y aparentemente su gerente está de acuerdo. Parece que está dispuesto a absorber el impacto técnico para hacer feliz al cliente.
No sirve de nada volver a explicarlo, a menos que crea que su gerente no lo entendió a pesar de que se lo explicó claramente (parece que lo entendió pero no está de acuerdo).
Claramente, su gerente es el que decide qué es innecesario aquí, no usted.
Una vez que se cumpla con la solicitud del cliente, es posible que desee encontrar un momento tranquilo para conversar con su gerente. Su objetivo para tal discusión no debe ser convencer a su gerente de que tenía razón. En cambio, su objetivo debe ser preguntarle a su gerente sobre la decisión, para que comprenda mejor el proceso de solicitud de clientes en su empresa. Está claro que hay cosas de los clientes que no entiendes.
¿O tal vez buscar otro trabajo?
Si necesita un trabajo en el que pueda decidir qué recibe o no recibe el cliente, aunque su cliente y su gerente ya lo hayan decidido, entonces debe buscar un nuevo trabajo.
Tal vez debería buscar un puesto de gestión, donde tendría más influencia en cuanto a qué características se entregan y cuáles no. O tal vez debería buscar un rol de gestión de productos o servicios al cliente, donde interactuaría con los clientes más de cerca, impactaría la línea de tiempo de las características del producto y podría ayudar a decidir qué solicitudes de clientes satisfacer o rechazar.
O, como señala correctamente @IsmaelMiguel, trabajar para una empresa de productos, donde las solicitudes de clientes individuales rara vez se solicitan o cumplen. (Por supuesto, aún tendrá que lidiar con las instrucciones de su gerente).
¿O debería decirle a mi gerente que si es tan simple debería ayudar?
Debes ponerte sarcástico con tu jefe solo si realmente no valoras tu trabajo.
Su pregunta se basa en cuestionar la validez y corrección de la solicitud de los usuarios, y la decisión de su gerente de aceptarla y hacer que se tome acción. La solicitud del usuario es válida y la decisión de su administrador es válida.
Este es el trabajo para el que está empleado .
Lo que se le pide es la implementación de un requisito no funcional.
Se le solicita una mejora de la usabilidad, no una expansión de la funcionalidad.
Los requisitos no funcionales de un sistema siguen siendo requisitos .
En este caso, estas correcciones de usabilidad están destinadas a aumentar la productividad del usuario y reducir sus tasas de error.
Las correcciones de usabilidad pueden no ser triviales de implementar. Esto no significa que deban tratarse como preocupaciones de segunda clase. Como desarrollador, estás ahí para crear lo que es importante , no lo que es fácil .
Un libro excelente para ayudar a comprender la usabilidad como una preocupación clave y central de la ingeniería es
"The Design of Everyday Things" de Donald Norman (enlace) .
Un buen ejemplo de un sistema que tiene funciones completas y que necesita un mayor desarrollo de los controles del usuario es el Modelo T de Ford. Como coche, va. Dirige. Para. Lleva pasajeros.
Ahora eche un vistazo a los controles de usuario (enlace) . Ya nadie los hace así, por buenas razones.
Son difíciles (y propensos a errores, es decir, propensos a lesiones) para empezar.
El acelerador es un par de palos en lados opuestos de la columna de dirección, y deben operarse de forma independiente y, a veces, simultáneamente.
Trate de pensar en una solución donde ambas situaciones puedan funcionar.
Si esta funcionalidad ya existe, aparentemente no se ha realizado correctamente en términos de interfaz de usuario. ¿Quizás rediseñar los controles o la navegación? Trate de disminuir la cantidad de clics a través de una forma inteligente de lo que quieren.
Además, ¿renunciar cuando su jefe le dice que haga algo con lo que no está del todo de acuerdo? Te debe gustar mucho buscar trabajo, porque esto es bastante común.
Tu pregunta es un desastre; es una gran contradicción. O ya está en el producto, entonces no hay nada que hacer. O no lo es, y hay problemas técnicos que hay que superar. Pero no ambos. Es imposible que puedas tropezar con dificultades técnicas cuando reinventas la rueda.
Si la característica aún no está en el producto, proceda de la siguiente manera:
Si aún no lo ha hecho, explique todas sus inquietudes por escrito a su gerente. Un correo electrónico debería ser suficiente. Debe contener las inquietudes y las dificultades técnicas que debe superar para resolverlas, y una estimación aproximada del tiempo si es posible. Marque claramente aquellos en los que realmente no tiene idea de cómo resolverlos y solicite su ayuda.
También pregúntele si la característica vale la pena y muéstrele características más importantes que esperan en el backlog. Ahora que le ha proporcionado un marco de tiempo ("5 semanas para todo lo que se resuelve y 4 problemas completamente sin resolver") y posibles usos alternativos de su mano de obra, debería poder tomar una decisión informada.
Si responde "Sí, adelante", implemente todo lo que pueda y comunique todo lo que no pueda resolver. Solicitó la función y le proporcionó un marco de tiempo para resolver los problemas. Todo lo demás está por encima de su nivel salarial.
En primer lugar, se debe comunicar al cliente la existencia de la característica, si no se ha hecho. El hecho de que esté implementado no significa que lo conozcan o que sepan cómo usar la función. Esto debe hacerlo quien sea el contacto principal con el cliente, que podría ser su gerente. Saber acerca de esta característica podría ser todo lo que necesitan. Sin embargo, si encuentran que la implementación no es útil, entonces la forma en que se implementa la función aún deberá cambiarse.
Si el punto de contacto es su gerente y su gerente lo mencionó y el cliente todavía quiere el cambio o su gerente no cree que sea necesario mencionarlo, entonces usted hizo todo lo que podía hacer. Usted presentó el argumento y la persona responsable de tales decisiones ha tomado una decisión. Ahora es el momento de llevar a cabo la decisión.
Sin embargo, parece que hay problemas dentro de su organización. No es raro que el código se degrade con el tiempo. La deuda técnica se acumula y los cambios en un sistema solo provocan la degradación de la integridad del diseño ( entropía del software ). Eventualmente, estos problemas deben resolverse o el costo del mantenimiento del software puede aumentar hasta el punto en que se vuelve extremadamente costoso realizar cambios en un sistema. La falta de tiempo para probar y construir calidad en el proceso también es un problema.
Estas cuestiones organizativas son problemas a más largo plazo. Es un caso de "cambia tu organización" . Puede solucionar estos problemas o comenzar a buscar una nueva organización que sea más apropiada.
Proporcione una verificación de lo que debe hacerse al cliente. Haz un dibujo, proporciona instrucciones paso a paso, etc. para asegurarte de que comprendes la solicitud. Esto no es explicarle al cliente cómo se hacen las cosas ahora, es asegurarse de que haga su trabajo correctamente. Incluso puede compararlo con cómo funciona la función ahora, para verificar que su cambio es tan simple como le parece.
EDITAR:
Puede hacer que el cliente o el gerente aprueben este cambio. Puede mencionarle a su gerente que podría ayudar si se le presenta al cliente para que lo "firme" en caso de que, cuando se entregue, se dé cuenta de cuán pequeño es el cambio. Sin embargo, el punto aquí es la comunicación y si su gerente aprueba esto, entonces al menos el trabajo es claro para usted y tiene documentación de que proporcionó lo que se le pidió, y no hizo trampa ni manipuló la solución.
FIN DE EDITAR
Es posible que su cliente esté solicitando una función "existente" y no se dé cuenta. También es posible que su cliente necesite que esto se haga en menos pasos o con menos clics. Estoy familiarizado con muchos sistemas que no eran "aceptables" para los usuarios debido a "más clics".
Es bueno que trate de protegerse de realizar cambios innecesarios o cobrar a los clientes por funciones que ya existen. No es bueno para usted juzgar a un cliente en función de su solicitud o ser como un padre sobreprotector e intentar ayudar a los clientes a ahorrar dinero o hacer las cosas "a su manera" cuando quieren que se hagan de otra manera.
Si no está dispuesto o no puede realizar el trabajo, entonces su gerente debe saberlo. Pero entonces probablemente deberías estar buscando otro trabajo.
Lo siento por ti. Obtengo un diseño detallado sin requisitos funcionales todo el tiempo. No aprecian el diseño de datos actual y las llamadas al servidor. Dos clics pueden ser limpios y extensibles y un clic provoca un cambio en el modelo de datos. Dicen que no les importa, pero cuando se rompe o los datos se corrompen, es su problema. Incluso si lo hace funcionar, tiene una base de código frágil y el próximo cambio es aún más difícil. Es muy frustrante cuando un programador se considera simplemente un codificador y no un diseñador.
En cuanto a lo que puedes hacer. 1) Explique el problema. 2) Luego oponga y exponga su objeción tanto por escrito como verbalmente. Resuma el tiempo para este cambio y el impacto a largo plazo. 3) Y luego hazlo. Si lleva 3 semanas programar y 2 semanas probar, que así sea.
Renunciar es siempre la última opción, pero si esto continúa, el trabajo solo empeorará. El código se volverá más frágil y el jefe no será comprensivo. Es degradante ser tratado como un mono de código. Dicho esto, haz lo mejor que puedas y desarrolla tu conjunto de habilidades. Si todavía está frustrado con su próxima revisión de desempeño, expóngalo. Si menciona el proceso no asociado con un cambio específico, es de esperar que el jefe considere su posición más seriamente. Si el jefe dice que el proceso no va a cambiar, entonces sabes cuál es tu posición. No renuncies. Decide si puedes vivir con ello. Si no puede vivir con eso, haga un plan sobre cómo pasar a su próximo trabajo. Una vez que deje de preocuparse por el trabajo actual, será más tolerable.
La respuesta aquí es "¡obtener una aclaración!"
¿Se da cuenta el cliente de que la característica ya existe de una manera más simplificada, o no?
Si no es así... entonces probablemente estarían bastante molestos por no haber sido informados al respecto y, posteriormente, estarían pagando más horas para empeorar la funcionalidad de una función ya existente. Sé que me molestaría eso... cuando digo "Quiero la característica X" al gerente del proyecto, es su maldito trabajo saber si ya está ahí y hacérmelo saber para asegurarme de mi decisión sobre el proyecto. Comisioné es un informado.
Si es así... entonces lo que el cliente quiere para el proyecto es lo que quiere. Los requisitos son los requisitos, tienen su por qué y no te los tienen que explicar. Por ejemplo, pueden tener datos concretos de que ese clic adicional hace algo extraño y positivo para su negocio y lo quieren. O incluso si es solo porque son tontos... tienen derecho a pagarte más por su estupidez si así lo desean. Siempre y cuando tomen esa decisión completamente informados y paguen por las horas que toman de su parte, está bien.
Conclusión: si se trata simplemente de que su gerente de proyecto no mantiene informado adecuadamente al cliente, entonces eso es un problema. Si es el cliente el que realmente quiere un requisito tonto, incluso cuando sabe que ya existe una versión mejor de la función, entonces... entonces sigue siendo un requisito del cliente, incluso si es tonto.
No puede tomar las medidas adecuadas hasta que descubra cuál es el caso... o al menos esforzarse un poco tratando de averiguar cuál es el caso para que su trasero esté cubierto en caso de que resulte que el gerente no estaba haciendo lo suyo. trabajo.
Me encanta cómo todos en Workplace hablan sobre ética y profesionalismo, donde mucho de lo que hacemos es el resultado de intereses y juegos políticos. La situación aquí es bastante obvia y la respuesta es bastante breve:
el cliente quiere donar dinero (es decir, su ignorancia hace que desperdicien dinero en cosas que ya tienen), el gerente no tiene ningún problema con eso. Ese dinero paga tu salario. Siéntete feliz de tomar ese dinero y siéntete feliz de ser más sabio que tu cliente. Lucro.
Mástil