Original: ¿Qué dice tu jefe? Averígualo, haz eso.
Me pidieron que elaborara lo anterior:
En primer lugar, creo que tienes más de un dilema:
- ¿Debería "arreglar" el código de otra persona?
- ¿Es la implementación (de aquí en adelante A) de las otras personas lo suficientemente mala como para reemplazarla por otra?
- ¿Será mejor un ofuscador (de aquí en adelante B) para esta "licencia de incrustación en nuestra aplicación"?
En primer lugar, visto desde un caso de negocios, el problema está resuelto. A está en su lugar y es, muy probablemente, una solución "suficientemente buena" para el problema. Su compañía puede estar contenta con ella, básicamente, lo suficientemente protegida como para que sea necesario un esfuerzo deliberado para romperla.
Esto significa que incluso si no te gusta (y, créeme, verás mucho peor a lo largo de tu carrera ) hace lo que se necesita. Por lo tanto, a medida que se resuelve el problema, no debe "simplemente hacerlo" sino convencer a la persona encargada de asignar su trabajo a largo plazo.El precio de esta implementación será lo suficientemente alto como para garantizar una reversión y elegir un ofuscador de acciones. Esto requerirá un poco de preparación por su parte, y también tenga en cuenta que los ofuscadores también tienen desventajas que necesita saber (otras respuestas cubren esto bien). Por ejemplo, los rastros de la pila no se pueden usar de inmediato, etc. Todo depende de lo importante que sea evitar la piratería. Tenga en cuenta que los más difíciles de romper son los que requieren dongles de hardware para ejecutarse y probablemente sean más caros de lo que les gustará a sus clientes.
Por lo tanto, esta decisión no es suya, ya que su empresa necesita utilizar recursos adicionales para llegar a B. Por lo tanto, debe comunicar sus inquietudes a la persona responsable, explicar esta y cualquier otra inquietud a largo plazo lo suficientemente bien como para que él comprenda por qué lo consideras inferior a tu sugerencia. Luego permítale tomar la decisión, e independientemente de lo que resulte ser, respetarla y comportarse en consecuencia de manera profesional. Tenga en cuenta que el autor original probablemente tendrá que mantenerlo de todos modos mientras lo escribió y si se va o no quiere más, entonces puede volver a plantear el asunto.
En otras palabras: ¿qué dice tu jefe? Averígualo, haz eso.
Tenga en cuenta también que esto habría sido diferente si hubiera planteado el problema anteriormente, de modo que el dinero perdido por el tiempo dedicado a la implementación de A fuera menor. En otras palabras, cuando la elección entre A y B debía hacerse.
Finalmente, me gustaría comentar su pregunta sobre "solo arreglar el código de otras personas". Esta no es una pequeña solución para el código existente (lo cual me parece bien y alentado, especialmente con las pruebas en su lugar). Es una reversión y reimplementación disruptiva, e incluso en equipos con propiedad de código común, esto no sería algo aceptable, al menos para mí, sin aprobación previa.
Esperemos que esto aclare mi punto de vista.