¿Cuál es la relación adecuada entre el desarrollador de software y el cliente comercial?

10

Los profesionales de TI son expertos de confianza con los activos de TI de una empresa u organización. Como profesionales confiables, tenemos responsabilidades que se extienden más allá de las cosas que se espera que un cliente que no sea de TI entienda o tenga en cuenta. Entonces, creo que la relación adecuada entre un profesional de TI y sus clientes internos / externos es más parecida a la de un médico y un paciente que un servidor y un maestro. Estoy en lo cierto?

Aquí hay una analogía para pensar. Un paciente insiste en que su pierna necesita ser amputada. Su médico no está de acuerdo, pero el paciente no puede ser persuadido. ¿Debe el médico amputar la pierna solo para satisfacer al paciente?

Otra analogía Un cliente quiere que un ingeniero civil construya un puente hacia un diseño inseguro. Incluso cuando el ingeniero explica que no es seguro, el cliente no le cree. ¿Debería el ingeniero construir el puente de todos modos?

Creo que la respuesta correcta en ambas analogías es NO. Se supone que el profesional médico y el profesional de ingeniería deben estar en una posición de confianza y deben ejercer su propio criterio, incluso ante la desaprobación del paciente / cliente. ¿No debería aplicarse lo mismo a los profesionales de TI cuando el profesional de TI está calificado para tomar la decisión pero su cliente no?

nvogel
fuente
2
En una conferencia, una vez escuché a un orador decir: "Hagas lo que hagas, no dejes que el cliente tenga acceso directo a tu programador principal. Si lo haces, literalmente lo violarán". Creo que esta sería la relación incorrecta entre un desarrollador de software y el cliente y el peor uso que he escuchado.
Jon Hopkins
¡Y aquí, en mi trabajo, es un principio fundamental que el cliente siempre tiene acceso directo al programador principal!
Frank Shearar
Para valores pequeños de "literalmente", ¿presumiblemente?
Mawg dice que reinstalar a Monica el

Respuestas:

9

Es un poco más complicado que en tus ejemplos. Esto se debe a que, en muchos casos, el desarrollador de software es un experto en asuntos relacionados con TI (es decir, programación, diseño de bases de datos, etc.), pero el cliente comercial es un experto en el dominio del problema. En tales casos, la relación adecuada es la de dos expertos en diferentes campos que trabajan juntos para crear una buena solución.

De todos modos, como cualquier buen artesano, el desarrollador de software está obligado a advertir al cliente cuando el cliente quiere cosas inapropiadas. Si le pide a su pintor y decorador que empapele el baño, también está obligado a advertirle que esto no funcionará bien. Pero cuando el cliente insiste obstinadamente en su mala idea, está bien que firme un formulario de "se le ha advertido explícitamente" e implemente lo que quiere (siempre y cuando no exista riesgo para la salud, riesgo legal, etc.).

usuario281377
fuente
1
+1 También creo que amputar una pierna sin razón y construir un puente inseguro es mucho más peligroso que entregar una aplicación que no satisfaga las necesidades reales del cliente. Sin embargo, como dijo dportas, el papel del especialista de TI es advertir al cliente sobre eso. Y luego es solo ética. Un buen abogado no aconsejará a su cliente que demande a la otra parte si está seguro de perder. (pero gana su tarifa por hora)
1
+1: he visto al menos tantas instancias en las que el desarrollador no comprende realmente el negocio de los clientes que las identifico correctamente y piden lo incorrecto y ellos mismos identifican lo que realmente se necesita . Es decir, con frecuencia identificarán correctamente que hay un problema con lo que se ha sugerido, solo que su solución sigue siendo defectuosa. El enfoque correcto es el respeto mutuo del conocimiento del dominio de los demás y una discusión abierta del problema potencial y las posibles soluciones. En general, los clientes están dispuestos a escuchar.
Jon Hopkins
1
Entonces, ¿dónde trabajan todos que el "cliente comercial" es realmente una expectativa en el dominio del problema? Demasiado a menudo he descubierto que ese no es el caso ...
CaffGeek
Chad: En mi experiencia, algunas compañías de software se concentran en vender a la gerencia de nivel superior, lo que obliga a la gerencia de nivel medio a implementar lo que suena bien en el papel. En tales empresas, rara vez se encuentran "clientes comerciales" que también son expertos en el dominio del problema, porque existe la tendencia de que el mismo gerente que firmó el acuerdo siga siendo la persona de contacto, tenga sentido o no. Otras compañías prefieren vender al departamento en cuestión, por lo que la persona de contacto principal generalmente conoce su trabajo.
user281377
1

Tanto en el médico como en el ingeniero, el profesional es un consultor que se niega a realizar un servicio. En una tienda de TI, no lo eres.

Somos empleados, no consultores, así que estamos sujetos a la regla de oro: el que nos da las reglas de oro. Los programadores que ignoran eso son arrogantes y tontos. He escuchado innumerables quejas sobre eso por parte de empresarios que están hartos del personal de TI que no explicarán sus decisiones a nadie fuera de su sacerdocio insular y que rechazan las solicitudes que todos los que están fuera de su organización consideran perfectamente razonables. He visto a gerentes de TI despedidos por ese tipo de cosas.

Como empleado, su equivalente a un consultor que se niega a prestar un servicio está cubierto por una cita de Napoleón Bonaparte:

Todo comandante responsable de ejecutar un plan que considere malo o desastroso es criminal. Debe señalar los defectos, insistir en que se modifique y, en última instancia, renunciar en lugar de ser el instrumento de la destrucción de sus propios hombres.

Tienes que elegir tus batallas. ¿Es lo que le han pedido que haga tan atroz y poco ético que preferiría renunciar? De lo contrario, explique el problema a las partes interesadas y negocie algo razonable, o simplemente hágalo.

Y no vayas a hacer cosas en las que no has comprado nada. Las personas que hacen eso se llaman "cañones sueltos".

Por cierto, renuncié a un trabajo porque mataron un proyecto y pensé que era un movimiento realmente estúpido. Un par de meses después de que me fui, llegaron a un acuerdo conmigo y me pidieron que volviera como contratista para hacer el proyecto, pero ya estaba comprometido en otro lugar.

Bob Murphy
fuente
2
¡Muchos desarrolladores son consultores! Soy uno.
Amir Rezaei
1
Soy un consultor!
nvogel
Además, los ingenieros y los médicos pueden ser empleados. Estoy seguro de que cada gran ferrocarril tiene ingenieros civiles en nómina, para cuando quieren construir o modificar un puente.
David Thornley
44
Fui consultor a tiempo completo de 1991 a 2006, y volví a trabajar a tiempo completo en julio. Me imagino que si un cliente quiere pagarme por hacer algo tonto pero no poco ético o peligroso, e insiste en mis objeciones ... oye, es su dinero desperdiciado. Y, por lo general, he descubierto que mis clientes saben más sobre su negocio que yo, así que las cosas que quieren que parezcan locas al principio tienen sentido después de que entiendo más. Me parece que me piden que haga cosas tontas menos como consultor pagado por hora que como empleado cuyas horas extras son "gratis" para el empleador.
Bob Murphy
1

Los médicos hacen un juramento de "no hacer daño" y están legalmente obligados a poner primero el mejor interés del paciente . Un médico que realizara una operación innecesaria y dañina (incluso si el paciente lo exigiera) se abriría a un juicio por negligencia y podría perder su licencia.

Del mismo modo, un ingeniero civil, responsable de un proyecto de construcción, tiene la obligación legal de garantizar que cumple con todos los códigos de construcción aplicables. Al igual que con el médico, un ingeniero que hace lo que se sugiere en la pregunta, probablemente enfrentaría acciones legales.

Esto es muy diferente de la situación de un desarrollador de software al que se le pide que haga algo que sabe que no es práctico. No hay ramificaciones legales para asumir un proyecto, incluso si sabe que es esencialmente una pérdida de dinero.

Dicho esto, un desarrollador de software siempre debe brindar su mejor consejo en cualquier proyecto. Sin embargo, si las personas que pagan las facturas no están dispuestas a escuchar e insisten en un curso de acción imprudente, el desarrollador no tiene la obligación moral o legal de negarse.

Kris
fuente
2
Podría ser el caso de que un proyecto de software ponga en riesgo la vida y la integridad física. Como en una base de datos de registros médicos o un sistema de control para una aeronave, por ejemplo. Sin embargo, es mucho más probable que pueda haber factores éticos o normativos que son la preocupación legítima de los profesionales de TI, como las reglas de privacidad y protección de datos o las leyes de propiedad intelectual.
nvogel
@dportas Eso es posible, pero si es así, es probable que existan leyes y reglamentos que rijan su construcción y certificación. Claramente, nunca debe infringir la ley para su cliente. Sin embargo, esto rara vez es un problema y, a juzgar por los ejemplos citados por OP, no es lo que se preguntó.
Kris
0

¿No debería aplicarse lo mismo a los profesionales de TI cuando el profesional de TI está calificado para tomar la decisión pero su cliente no?

En mi opinión, ¡SÍ!

Si va a tener una larga relación con su cliente.

Amir Rezaei
fuente
0

Mi sugerencia en esta situación será advertir al cliente por comunicación escrita y conservar una copia de la misma (correo electrónico, aceptar cualquier cosa). Si el cliente lo insiste, continúe y hágalo (esto a veces se conoce como desacuerdo y compromiso). Solo asegúrate de que si sucede algo malo, puedas defenderte adecuadamente.

Manoj R
fuente
0

La diferencia clave es la licencia. Los médicos y los ingenieros civiles tienen licencias profesionales, y los necesitan para realizar su trabajo y ganarse la vida, y también tienen la responsabilidad personal legal de más cosas.

Esto puede ejercer más presión sobre los médicos e ingenieros, cuando se los empuja a hacer algo que puede causarles riesgos personales y profesionales, pero les da más empuje, ya que pueden argumentar que no pueden hacer algo debido a la ética profesional, y que perderán sus licencias si lo hacen. Una amenaza de despedir a un ingeniero civil por negarse a firmar un plan pierde fuerza cuando la consecuencia de la firma es que el ingeniero perderá su licencia y no podrá trabajar en el campo de todos modos.

Esto está relacionado con los requisitos legales. No puedo recetar muchas drogas, y si le hago ciertas cosas a alguien que un médico puede hacer legalmente, estaría cometiendo un delito. De manera similar, la mayoría de los gobiernos de aquí no permitirán que una compañía construya un puente sin un ingeniero civil con licencia que apruebe el diseño.

Ha habido propuestas para otorgar licencias a los programadores, pero ninguna que conozco ha ido a ninguna parte. Probablemente sea necesario tener un requisito legal para tener programadores con licencia para trabajar en proyectos primero, y eso no sucederá pronto. Hay organizaciones profesionales con códigos de ética comparables a los códigos médicos o de ingeniería, pero sin ninguna fuerza legal son más como guías de códigos de ética personales.

David Thornley
fuente
0

No estoy pensando en la dimensión ética, pero la relación adecuada con la base de clientes / usuarios puede ser bastante variable dependiendo del tipo de mercado. Donde trabajo, tenemos un producto altamente técnico y usuarios altamente técnicos, y el ingreso promedio por cliente es bastante alto. Por lo tanto, nuestros límites comerciales son un poco confusos: tenemos clientes y revendedores de valor agregado que actúan como consultores, que ayudan en la verificación del código e incluso pueden enviar módulos para su inclusión en el software. Si estuviéramos vendiendo una aplicación de mercado masivo, este modelo no tendría ningún sentido.

Omega Centauri
fuente