¿Los desarrolladores de software que ignoran los estándares de calidad son mejores para la empresa? [cerrado]

10

¿Los desarrolladores de software que optan por no priorizar la optimización del código, los estándares y las mejores prácticas, crean códigos más útiles que aquellos desarrolladores que desean preocuparse por la optimización, la implementación de estándares y prácticas de codificación antes de completar las tareas a tiempo?

¿Cómo se comparan estas metodologías diferentes cuando se trata de revisiones de desempeño individuales?

¿Cómo se comparan estos estilos en las evaluaciones por pares?

¿Cuál es la mejor manera de influir en su equipo para implementar más prácticas recomendadas durante el SDLC?

Jitendra Vyas
fuente
2
@Haylem - Creo que la edición original que hice fue mejor. Si el título es el mismo que la primera oración, ¿cuál es el punto del título?
BlackJack
1
@BlackJack Traje tu título y refiné la pregunta un poco más. Creo que los tres quedamos atrapados pisando fuerte sobre la misma publicación en el historial de edición. Debería estar bien ahora.
Thomas Owens
44
SE no es un lugar para despotricar sobre tu jefe. Todos tenemos jefes y la mayoría de nosotros tenemos a alguien en la cadena de mando que creen que no pertenece allí (a mí no, creo que son geniales). Quejarse de ellos aquí no sirve de nada.
SoylentGray
1
@Chad: Si bien estoy de acuerdo con todo lo que dijiste, no estoy completamente seguro de que el OP tuviera la intención de quejarse de su jefe (directamente).
haylem
2
@ Chad: He leído eso, y aunque puedo entender tu reacción, Jitendra no dice que todo lo que hizo fue arreglar el código de la gente. Pero estoy de acuerdo con su argumentación, y algunas otras respuestas, que ofrecer funcionalidades primero podría ser de mayor importancia que un producto inacabado con una calidad perfecta. Nadie tendrá que mantener un producto que nunca verá la luz porque se mató temprano o falló en la muerte.
haylem

Respuestas:

32

No, solo recibirán el respeto del propietario del proyecto en este momento.

Serán destrozados durante años por:

  • futuros mantenedores,
  • probadores futuros,
  • futuros propietarios de proyectos,
  • futuros gerentes,
  • y prácticamente cualquier persona involucrada con la base de código en el futuro.

Incluso podrían recibir el mismo tratamiento de:

  • los probadores actuales,
  • Los escritores de documentación técnica actuales.
haylem
fuente
@ Ivan: Gracias. El pensamiento a largo plazo siempre gana.
haylem
@haylem - Estoy de acuerdo contigo porque la gente está cambiando los trabajos rápidamente así que un mejor código será útil para que los nuevos usuarios comprendan el código rápidamente
Jitendra Vyas
Todo es cierto, pero debido a su rendimiento, estarán lejos de esos peones que viven con el dolor que les queda. ¡Triste pero cierto!
anon
6

Falsa dicotomía: las cualidades son ortogonales.

                Alta calidad baja calidad

Rentable INCREÍBLE Sketchy

Iffy no rentable FUEGO PRIMERO
tottinge
fuente
55
¿Iffy es mejor o peor que Sketchy?
HLGEM
1
@HLGEM: Rentable siempre es mejor que no rentable.
Donal Fellows
que ignora los costos futuros creados por la calidad incompleta
Rudolf Olah
1
Asignar rentabilidad únicamente en la parte posterior del desarrollador es una simplificación excesiva. ¿Qué hay de la gestión de productos, la infraestructura de implementación? ¿No tienen también un papel que desempeñar en la rentabilidad?
DavidS
5

No. Las mejores prácticas son las mejores porque, por definición , ayudan a que los proyectos se realicen más correctamente, en menos tiempo, con una modificación más rápida en el futuro, por lo que ignorarlos garantizará una disminución de las ganancias. Por supuesto, sus gerentes pueden prescribir prácticas que creen que son las mejores, pero en realidad no lo son, o pueden juzgar mal lo que los clientes pagarán y lo que no, entonces todas las apuestas están canceladas.

Los estándares de codificación son más complicados; Es posible prescribir demasiados detalles a sus codificadores, lo que conduce a una disminución de la eficiencia. Pero con la experiencia se vuelve bastante fácil distinguir pautas útiles de la microgestión anal-retentiva, por lo que se aplica lo mismo: las mejores prácticas reales siempre valen la pena, las pseudo-mejores prácticas generalmente no.

Por lo general, no vale la pena optimizar el código a menos que haya medido cuáles son sus cuellos de botella, haya confirmado que es necesario hacer una optimización y haya medido que su truco inteligente realmente cumple con los requisitos de rendimiento. De lo contrario (que es principalmente) no vale la pena hacerlo, y por lo tanto no es óptimo.

Kilian Foth
fuente
66
Las mejores prácticas no ayudan a realizar todos los proyectos correctamente en menos tiempo. Son simplemente cosas que se ha observado que funcionan bien en la mayoría de los proyectos la mayor parte del tiempo.
Thomas Owens
2
La adhesión ciega a las "mejores prácticas" o la mejor manera de hacer las cosas de cualquier otra persona es para el proceso de desarrollo lo que la codificación de culto de carga es para el proceso de codificación. Debe ser capaz de comprender lo que significa una práctica, si es o no lo mejor en su situación y, de lo contrario, qué debería reemplazarla.
Blrfl
5

¿Estoy de acuerdo con los desarrolladores que no se preocupan por la optimización del código y las prácticas? No.

¿Hacen el trabajo que necesitan hacer? Si.

Un negocio consiste en ganar dinero, y la única forma de ganar dinero es lanzar productos. Esto generalmente significa que los proyectos tienen horarios estrictos, lo que significa que la mejor manera de hacer algo puede no ser la forma más rápida de hacer algo.

Si bien no estoy de acuerdo con este estilo de desarrollo, la compañía puede considerarlo respetable si se lanzan productos.

Ivan
fuente
Me preocupaba mucho la optimización del código en mi último trabajo, pero a mis compañeros desarrolladores no les importaba, pero hicieron más proyectos que yo y, cuando hablé con el gerente del proyecto, dijo que el Cliente quiere el proyecto a tiempo y nunca ve cómo se escribió el código
Jitendra Vyas
1
@Jitendra: si pasas todo el día optimizando cosas que ya se han escrito y no obtienes ninguna funcionalidad nueva, tampoco estaría contento. A menos que la optimización le proporcione algo además de tener menos líneas y caracteres en el código fuente, entonces no está logrando nada.
SoylentGray
3
@Jitendra: no dije que no. Y escribir su código de manera legible es genial. Ir "arreglando" el aspecto del código de otras personas cuando tienes tareas propias no lo es.
SoylentGray
1
@Chad: no se trata de volver a escribir mi propio código o arreglar el código de otras personas, se trata de escribir el código por primera vez con la debida identificación para una buena legibilidad, comentarios adecuados para el futuro desarrollador y el uso de las mejores prácticas que hacen que el código sea reutilizable y lleva tiempo escribir el código de desorden que solo el desarrollador original puede entender. Un buen código siempre lleva tiempo.
Jitendra Vyas
44
@ Ivan: He tenido experiencia directa con esta mentalidad. Dice así. La compañía comienza un proyecto greenfield. Hotshot Developer X arroja cosas juntas lo más rápido posible, usando grandes cantidades de ctrl + cy ctrl + v. El producto se lanza en muy poco tiempo. La empresa está entusiasmada con Developer X. Los informes de errores y las solicitudes de funciones entran. Developer X no puede seguir el ritmo y es despedido / pasa al siguiente trabajo. Los próximos 3 años de desarrollo son una puerta giratoria de nuevos equipos de ingenieros que no pueden progresar, y la Compañía X pierde todas las ventajas de mercado que alguna vez tuvo.
Greg Burghardt
4

No, y encontraría la ruta más rápida lejos de dicha compañía que aprecia esos vicios.


fuente
2
+1 por ser corto, ir al grano y corregir. Una empresa que no se preocupa por los estándares de calidad es estúpida, ignorante o una estafa.
Wayne Molina
3

Sí y no, lo cual es un poco flojo pero es una mejor práctica y no una práctica perfecta. Idealmente, debe seguirlos constantemente, pero siempre habrá una situación en la que la empresa quiera poner sus necesidades antes que sus productos.

Los mantenedores lo odiarán pero su jefe lo amará.

Nicholas Smith
fuente
3

Las mejores prácticas son algo así como el sentido común, todos están de acuerdo en que todos deberían saberlo hasta que dos personas comiencen a discutirlo en detalle. No hay dos personas completamente de acuerdo con la definición y no existe una fuente lógica de verdad que se aplique a todas las situaciones.

¿Estás escribiendo el sistema de guía para un satélite espacial (probablemente no lo estés)? Entonces el infierno Ningún código de mala calidad / rendimiento nunca es aceptable en este tipo de trabajo.

¿Está escribiendo un sitio web desechable para un impulso de marketing único (probablemente tampoco lo esté haciendo o no hubiera hecho la pregunta, pero es más probable que el satélite)? Entonces, infierno Sí, saca ese pedazo de pelusa por la puerta por cualquier medio necesario para cumplir con la fecha límite, el próximo director de marketing probablemente hará algo más con una compañía diferente de todos modos. LO QUE HACE NO ES ARTE O CIENCIA - PAGUE.

Todo lo demás en el medio: negociable, especialmente siempre que el desarrollador esté en el gancho para el soporte inicial.

Hasta que ocurra la segunda venida de cualquier ser sagrado que prefiera y defina las prácticas de desarrollo de manera milagrosa, habrá un amplio espacio para el debate sobre cualquier proyecto que no sea directamente responsable de las decisiones de vida o muerte que no sean tan insignificante para ser desechable.

Todo lo que está fuera de las mejores prácticas etiquetadas como críticas para la vida suele ser más como la política de la empresa, las especificaciones del cliente o la opinión personal. Muchos de ellos son opiniones personales en las que muchas personas están de acuerdo actualmente, pero eso no lo convierte en una guía inmutable para todas las situaciones.

Cuenta
fuente
2

La cantidad de dinero que ganan para la empresa es discutible. Si hay un nivel de revisión del código en cuestión, los costos de mantenimiento aumentarán y alguien no estará contento. Los altos costos de mantenimiento a largo plazo son más caros que hacerlo correctamente por adelantado.

El respeto que reciben probablemente sea específico de cada caso. En algún momento, sin embargo, alguien lo notará.

temptar
fuente
2

No preocuparse por estas cosas puede hacer que la empresa gane más dinero a corto plazo, pero podría costarle más dinero a largo plazo en más correcciones de errores y codificación de mantenimiento.

A veces, puede ser necesario un trabajo rápido y sucio si hay apuro con las empresas competidoras para llevar productos similares al mercado al mismo tiempo, pero los costos futuros de tales acciones deben considerarse cuidadosamente.

FrustratedWithFormsDesigner
fuente
2

Todo depende del cliente.

A un cliente que le gusta rápido y sucio (y generalmente más barato) no le importa que presente problemas en el futuro.

Piense en la construcción del gabinete.

Algunos pagarán y apreciarán los gabinetes hechos a medida de buena calidad. No les importa el gasto adicional de los cajones de madera y el hardware de primera clase. No les importa que tomará una semana extra o incluso un mes construir e instalar las cosas.

Muchos no lo harán. Muchos optarán por las cosas baratas producidas en masa de tableros de partículas que obtienes de una gran tienda de cajas. Los quieren instalados en 2 días. Un pequeño espacio aquí y allá es perfectamente aceptable. No les importa que se derrumben en 10 años.

Entonces, si sus gerentes elogian al desarrollador que lo hace rápido y sucio, entonces sus clientes no quieren una alta calidad o los gerentes les mienten.

Sólo el tiempo dirá. Haga lo que los gerentes quieran o encuentre otro trabajo.

ElGringoGrande
fuente
1
por supuesto, el software puede venir con soporte, por lo que hacer ambas cosas podría ser una opción. es decir, seremos los primeros en comercializar con v1 a pesar del problema conocido, sin embargo, el dinero que ganemos de esto nos permitirá solucionar problemas en el futuro, etc.
jk.
1

No nunca. OMI optimización de código, las mejores prácticas, reales artesanía son los MÁS cosa importante a tener en una base de código; sin ella, todo se convierte en lodo y se mantiene unido con cinta adhesiva. Es un diseño insostenible. Es como ignorar un tumor porque es pequeño y ahora estás sano; seguro que está sano ahora, pero unos años más tarde se convierte en terminal porque lo ignoró durante tanto tiempo.

No solo no estoy de acuerdo con los desarrolladores que no se preocupan por estas cosas, sino que no tengo ningún respeto por ellos. Una manera infalible de hacerme considerar dejar una organización, no importa cuánto tiempo haya estado allí, es estar rodeado de un equipo en el que soy la única persona (si no la única persona en toda la empresa) que se preocupa sobre conceptos de ingeniería de software adecuados.

Wayne Molina
fuente
1

Una buena lectura: http://www.joelonsoftware.com/items/2009/09/23.html

Pero en mi humilde opinión, las mejores prácticas de un hombre es la pesadilla de otro hombre. Y cada base de código no trivial será una pesadilla para un extraño.

Lo que sea que pienses, no seas idiota al respecto.

EDITAR: No estoy defendiendo ninguna de las posiciones, dependiendo de la tarea en la que me pueda inclinar hacia cualquier lado.

Descifrador
fuente
Depende de la "mejor práctica" IMO. Cosas como tener pruebas (no necesariamente TDD pero pruebas automatizadas en general), seguir los SOLIDprincipios, usar patrones de diseño, usar abstracciones / interfaces son la base que cualquier desarrollador competente debería hacer.
Wayne Molina
Por mucho que me gusten las pruebas ... no son basales.
CaffGeek
1

¿Mejor para la empresa? Depende.

Para una startup con fondos limitados, hágalo y póngalo a la venta, no importa si es desordenado, eso se puede solucionar más tarde cuando haya más recursos.

Para un producto maduro donde hay muchos usuarios que confían en la calidad del software, todo debe hacerse "correctamente".

¿Mejor para el desarrollador individual? En realidad es irrelevante. Simplemente haga lo mismo que hacen sus colegas y deje que la gerencia se ocupe de las consecuencias: ese no es su trabajo. Si está arreglando la basura de otras personas todo el tiempo, SERÁ visto como lento, y usted será el que aún esté allí mientras los demás han sido promovidos por encima de usted. Siga con el programa o salga mientras pueda si es tan malo.

timh
fuente
"No importa si es desordenado, eso se puede arreglar más tarde cuando hay más recursos". En teoría, claro. En la práctica, esto nunca sucede porque una vez que empujas algo, estás atascado manteniéndolo y agregando cosas nuevas, por lo que nunca tienes los recursos para volver y arreglarlo.
Wayne Molina
Estoy en desacuerdo. Ciertamente, ha sucedido en muchos proyectos web pequeños y medianos en los que he estado involucrado, y también hay muchas más instancias famosas de compañías que retroceden y refactorizan su base de código de manera importante, por ejemplo, Twitter cambiando de Ruby a Scala, Facebook y su búsqueda de optimizar el lenguaje PHP, etc. De hecho, estoy bastante seguro de que la mayoría de las aplicaciones maduras exitosas (web y de escritorio) que usamos todos los días no tienen mucho código en común con sus antepasados ​​v1.
timh
Quizás, pero en seis años de desarrollo corporativo, he encontrado exactamente una compañía que fue capaz de refactorizar el código con el tiempo; todos los demás lugares nunca han tenido recursos para dedicar a "arreglar lo que no está roto", incluso cuando el código es inmanejable.
Wayne Molina
0

Depende del desarrollador y del proyecto / situación.

Tiempos extraordinarios requieren medidas extraordinarias.

Entonces, si necesito que me entreguen algo ahora, y alguien está sobre-diseñando una aplicación Java de grado empresarial que aprovecha no menos de 14 de los últimos marcos de palabras de moda, mientras que un simple script de Python hará el trabajo es peor que el desarrollador que corta las esquinas y piensa código defectuoso lo hará en tiempos normales.

Parte de ser desarrollador es ser flexible. No deberías ser esclavo de tus herramientas y seguir ciegamente las prácticas; siempre habrá un caso en el que te fallarán. Saber cuándo romper y doblar las reglas es una de las cosas que vienen con mucha experiencia y son valiosas.

En su caso, si ofrece más valor que usted porque la velocidad es crítica, incluso después de tener en cuenta el mayor costo de mantenimiento en el futuro, entonces merece una mejor compensación. Por otro lado, si está atascado con la limpieza de su desorden, tiene un problema de comunicación con la administración.

Es caso por caso. Excepto el estilo de codificación, no hay excusa allí.

Daniel Iankov
fuente
0

Lo siento, pero tendría que estar en desacuerdo con la mayoría de las respuestas a esta pregunta, excepto la principal.

El valor principal del software es que es flexible.

No creo que debas reescribir el código de otras personas sin una causa justa. Si tiene que cambiar un módulo por cualquier motivo para implementar su función, ahora, para bien o para mal, es el propietario de ese módulo. Cámbialo, reescribe algo, reescribe todo.

Nunca produzca baja calidad en términos de flexibilidad. No hay tal cosa como tirar nada en el software. Si el cliente dice que es temporal y que no lo necesitará después de una fecha determinada, y no le importa la calidad, diga "mal" o escriba por escrito que el código no será alterado por usted ni por ningún otro programador una vez se implementa en producción, o tiene derecho a demandarlos.

La suposición más pobre que veo en algunas de estas respuestas es que algún código limpio de alguna manera reduce la velocidad de desarrollo. Para cualquier proyecto de cualquier sustancia (más de 6 horas de trabajo), el código limpio acelera el desarrollo a largo plazo (cualquier cosa mayor a una semana). Lo he visto una y otra vez.

El código de mala calidad es irrespetuoso con la profesión y sus compañeros de trabajo. Perdón pero cierto.

¡Así que no a la mala calidad, en términos de flexibilidad, nunca!

Preston
fuente
1
Nunca digas nunca. Aplicaciones completas se tiran a la basura. Las conversiones de datos de un sistema a otro se utilizan una vez y se pudren.
JeffO
Mantener el código limpio a menudo reduce un poco la velocidad de desarrollo a corto plazo . La parte importante es que el código impuro causa una reducción mucho mayor a largo plazo. Veo algunas otras respuestas que mencionan eso.
Ixrec