¿Cuándo está bien sacrificar la "pulcritud" del diseño para realizar un proyecto?

15

Cuando se trabaja en un producto que debe hacerse pronto y funciona bien, ¿cuándo está bien sacrificar la facilidad de mantenimiento y la "pulcritud" del diseño para poder hacer la cosa y salir rápidamente por la puerta? ¿Y en qué medida está bien, especialmente cuando las técnicas utilizadas para hacerlo "ordenado" son nuevas para mí?

Señor jefferson
fuente
3
Solo cuando es absolutamente necesario.
FrustratedWithFormsDesigner
1
Es más o menos la norma donde trabajo. "Puedes pagar mayo ahora, o puedes pagarme después" nunca ha sido tan cierto.
MetalMikester
Suena como una fecha límite inminente ...
1
Tomaré el punto de vista contrario y diré siempre . Si no se realiza un proyecto, a nadie le importa si está ordenado.
drxzcl
1
@ MrJ, en realidad estaba pensando en los usuarios.
drxzcl

Respuestas:

18

Recuerde que está empleado para mantener un negocio. De alguna manera, su software está afectando el resultado final del negocio. Debe lograr un equilibrio entre una solución técnicamente perfecta y el tiempo de comercialización de su producto y cuánto beneficio obtendrá el negocio de él.

En mi experiencia, los desarrolladores a menudo se preocupan por la perfección técnica. Pero hay razones muy válidas para sacrificar atributos de calidad, como la capacidad de mantenimiento o el rendimiento, para que un producto salga más rápido. Depende del negocio y del producto. Pero "luchar siempre por un diseño perfecto" es un enfoque demasiado simplista.

Al final del día, lo único que importa es el valor para el negocio. Descubra cómo maximizarlo a corto y largo plazo y apunte a ese objetivo.

RationalGeek
fuente
3
Estoy de acuerdo con el espíritu de su respuesta, pero le faltan algunos detalles. You need to strike a balance between a technically perfect solution, and the time to market of your productNo estoy de acuerdo, eso está más allá de la responsabilidad de un desarrollador. Ellos absolutamente deben ser conscientes de ello, pero que deben dar la información a la persona responsable de tomar una decisión de negocios.
StuperUser
2
Mira Blizzard por ejemplo. Tienen un gran éxito con sus juegos y realmente no les importa el tiempo de salida al mercado, ya que piensan que una calidad superior finalmente dará sus frutos. Y lo hace, aunque probablemente no sea para todo tipo de software.
Falcon
1
Estoy totalmente de acuerdo con @StuperUser y @Peter Rowell. A menudo, es responsabilidad del desarrollador comunicar los riesgos técnicos, los problemas con los recortes, etc. a las personas que ocupan un puesto más alto en la cadena alimentaria que toman la decisión. Si ese es su rol, entonces debería centrarse en comunicarlo con la mayor precisión posible. Sin embargo, cuanto más comprenda lo que impulsa la cadena de valor del negocio, mejor será la comunicación.
RationalGeek
1
@Falcon Blizzard puede sacrificar la ganancia a corto plazo en el lanzamiento temprano por un juego a largo plazo en un juego sólido, estable y agradable. Ese es quizás el equilibrio apropiado para ellos. Pero no es el equilibrio apropiado en todos los casos.
RationalGeek
44
La realidad es que la mayoría de los nuevos productos de software van a fallar en el mercado, no debido a problemas de calidad, sino porque los clientes simplemente no los quieren. Por lo tanto, dedicar mucho tiempo / esfuerzo a crear una arquitectura sólida y manejable en la versión 1 del producto puede no ser el mejor uso de los recursos. Los empresarios que presionan para sacar algo por la puerta no son los idiotas que muchos de ustedes piensan que son; Poner un producto en manos de los clientes para determinar la viabilidad es algo muy inteligente.
Kristopher Johnson
12

El término "deuda técnica" es muy útil para ayudar a informar decisiones comerciales como esta. Cualquier trabajo que no haga ahora causará cierta cantidad de trabajo más adelante. Al igual que con las finanzas, asumir deudas es arriesgado, pero puede valer la pena apalancarlo si va a poder pagar la deuda más tarde.

Dicho esto, la deuda técnica no es una proporción de 1: 1 en el momento del reembolso. Los errores son más caros de reparar después del lanzamiento, y el impacto en la productividad futura cuando se desarrolla desde un sistema heredado desordenado puede ser indignante. Podría estar buscando pasar el doble del tiempo arreglando sus errores, o quizás 1,000 veces más horas-hombre y recursos.

Su trabajo en esta decisión es comprender las ramificaciones de las piezas particulares de las esquinas que está considerando y luego comunicar esas ramificaciones a las personas que toman la decisión comercial. Esta habilidad de estimación particular puede requerir mucha investigación y trabajo de su parte para desarrollarse bien en este momento, pero será invaluable durante su carrera.

Ethel Evans
fuente
1
+1. La deuda técnica es realmente la forma más clara de describir esto.
crazy2be
8

Cuando se acepta y el propietario / cliente / usuario entiende las consecuencias.

Un plomero tiene que sacar un triturador de basura para su reparación. Mientras tanto, quiero usar el fregadero, pero él tendría que facturarme el tiempo y los materiales para colocar tuberías temporales con cinta adhesiva que podría romperse. Esto también retrasará la devolución al taller de reparación. Si acepto la facturación adicional con el entendimiento de que corro el riesgo de una obstrucción. Hará falta un día más para reparar el desecho y un retraso aún mayor antes de que pueda volver a colocarlo, eso es aceptable.

Puede llegar a tiempo y presupuesto ahora, pero sacrificar / arriesgar una carga aún mayor a largo plazo. Esto puede ser difícil de hacer entender a personas no técnicas, pero para eso está el personal de ventas.

JeffO
fuente
5

Mucha gente se da por vencida rápidamente cuando aprende algo nuevo y lo hace de la forma en que siempre lo ha hecho. Si este es un patrón, no solo sufrirá su código, sino que sus propias habilidades como programador seguirán siendo limitadas.

Aún así, al final del día, el único software exitoso es el que se envía.

Jeremy
fuente
"Aún así, al final del día, el único software exitoso es el que se envía". Hasta que se estrella y se quema unos años más adelante porque no fue diseñado correctamente. La miopía en la acción.
Wayne Molina
1
Si nunca envía, nunca lo hará varios años ...
Jeremy
Si no puede enviar algo que no lo arruine a largo plazo debido a una administración miope, ¡no merece estar en el negocio en primer lugar!
Wayne Molina
3

Después de la fecha límite suave pasa. Y aun así, es un grado muy bajo de "OK". Una vez que pasa la fecha límite, es, por supuesto, discutible. Porque esa es la naturaleza de los plazos estrictos.

Además, esto incurre en deuda técnica. Por cada hora / día que pasa cortando esquinas en la mentalidad de git er-done, le costará aproximadamente el doble de tiempo la próxima vez que tenga que tocar este proyecto. Si debe hacerlo, lo mejor es apresurarse, enviar e inmediatamente comenzar a arreglar toda su cinta de pato. Volver a un proyecto hack-eyed años después es una pesadilla. Si nunca lo volverás a tocar, que así sea, a nadie le importará. Pero la única vez que dejé un proyecto para siempre es cuando cambié de trabajo.

Sin embargo, recuerde que cronometrar estas cosas es el trabajo del gerente del proyecto. Si tiene prisa para cumplir con una fecha límite, es culpa del primer ministro. Hazlo bien, hazlo una vez y hazlo con calma y correctamente. La vida es demasiado corta para cualquier otra cosa.

Philip
fuente
2

Todas las otras respuestas publicadas aquí son buenas. Sin embargo, me gustaría agregar que, como desarrollador del proyecto, usted es el administrador (protector) del diseño.

Si no defiende la solución técnica adecuada, nadie más se lo prometo. Siempre debe argumentar por hacer las cosas de la manera correcta a su jefe y el primer ministro siempre debe argumentar a favor de la fecha límite.

Con suerte, si se encuentra en una organización razonable, se alcanzará un compromiso que ayude a cumplir con los plazos y al mismo tiempo no se aleje demasiado del diseño.

Dicho esto, no asuma que si no se cumple el plazo del primer ministro, el mundo terminará y el proyecto fracasará. Por lo general, no es tan blanco y negro y la mayoría de las veces la fecha límite del primer ministro es blanda y tiene margen de ajuste.

Casi todas las fechas límite en las que tenía un horario de PM eran en su mayoría artificiales. Sin embargo, lo defenderán con uñas y dientes y fingirán lo contrario porque si el primer ministro presiona la fecha límite, ¡el primer ministro parece MALO!

El hecho de que el primer ministro se vea mal no significa que el proyecto haya fallado. Si comprende esto, se sorprenderá de cuánto puede hacer que un PM se doble.

árbol de arce
fuente
1

Cotice al cliente para el diseño aseado. Si esa cita es inaceptable para ellos, vaya al desglose de lo que costará cada componente (generalmente cuesta == tiempo de desarrollo). Deje que retiren los artículos "a la carta" si así lo desean. Muchos saltarán a la hora del afeitado por cosas "inútiles" como pruebas y diseño. Explique los riesgos de este enfoque, pero si aceptan el riesgo, proceda según las indicaciones. Si solo tengo suficiente dinero para un automóvil clunker, entonces voy a comprar un automóvil clunker, incluso si sé que probablemente se descompondrá en 8 meses. Su cliente tiene la responsabilidad de sopesar estos riesgos y aceptar las consecuencias.

Lo único que no desea hacer es decirle al cliente que piense que tiene una pieza de software bellamente diseñada, cuando solo pagó (y recibió) una pieza de basura no probada. Si algo sale mal (lo que probablemente ocurrirá), en el primer escenario se verán mal, pero en el segundo escenario se verá mal.

Morgan Herlocker
fuente
1

Es no está bien, pero a veces se tiene que comprometer en aras de terminar un proyecto. La triste realidad es que la mayoría de los empresarios son completamente ignorantes y están más que dispuestos a sacrificar la capacidad de mantenimiento más tarde por algo en este momento. El truco es saber cómo lograr un equilibrio; tal vez el proyecto no sea tan bueno como podría ser, pero mientras no sea un chiquero es un compromiso digno.

Wayne Molina
fuente
0

Eso depende completamente de la pregunta "¿Usted o alguien más posiblemente querrá modificarlo más tarde?" En caso afirmativo, debe intentar tener un diseño "ordenado", de lo contrario corre el riesgo de tener que tirar todo y comenzar de nuevo 6 meses después.

Por supuesto, puede llevar la limpieza demasiado lejos, pero en general un poco de limpieza le ahorrará trabajo más tarde.

Jo-Herman Haugholt
fuente
44
No existe un producto que no requiera mantenimiento, sin importar lo que el cliente le diga.
Edward Strange
@ crazy-eddie Bastante no. Fue pensado como una pregunta cargada; Realmente no puedo pensar en muchos casos en los que respondería "no" a esa pregunta. Incluso un guión rápido y sucio destinado a una sola cosa y que nunca se volverá a utilizar, podría ser editado y restaurado más tarde.
Jo-Herman Haugholt