En un mundo perfecto, cada programador está abierto a sugerencias y críticas de sus diseños. Desafortunadamente, no vivimos en ese mundo perfecto, por lo que tiene razón al ser un poco cauteloso y asegurarse de que sus comentarios se tomen de la manera correcta.
Por el mal diseño:
Como recién llegado al equipo, siempre existe la posibilidad de que haya requisitos en el proyecto que fueron asumidos por el diseñador original pero que usted no conoce (también existe la posibilidad de que el diseño sea una mierda).
La forma en que sugeriría manejar esto es abordarlo como una experiencia de aprendizaje. Diga algo como: “No entiendo por qué el diseño aquí se hizo de esta manera. ¿Puedes explicar por qué un diccionario no se puede usar para resolver esto? ”. De esta manera, pides claridad y no te opones al diseño, aprendes algo, posiblemente ellos aprendan algo. En estas situaciones, la vieja frase “confía pero verifica” funciona bien. En otras palabras, no solo asuma que sabe mejor, sino que esté preparado para la posibilidad de que lo haga.
- ¿Cuáles son algunas fuentes de blogs con hermosas ideas de diseño de interiores y exteriores?
- ¿El monitor curvo es bueno para el diseño gráfico?
- Cómo contratar al mejor desarrollador independiente de iOS en el área de la Bahía de San Francisco
- ¿Cuál es tu opinión sobre INSD-International school of Design?
- ¿Cuál es el mejor software para preparar un póster (específicamente un póster médico)?
Para el mal código:
Si solo estamos hablando de refactorización simple, entonces querrá asegurarse de que la refactorización tenga un ROI razonable. Cualquier proyecto existente tendrá un rudo (código o datos que ya no tienen el mejor sentido, pero que probablemente tenían en el momento en que se escribió por primera vez), pero es muy común que un proyecto ocupado solo pueda dedicar una pequeña cantidad de tiempo a el cruft (si el cruft es en realidad la fuente del error, esa es una historia completamente diferente). Debería pedirle a su equipo orientación sobre cuánto tiempo de limpieza cruda generalmente asignan.
Si estoy trabajando en una clase, API, etc. con cruft y siento que puedo refactorizarlo sin afectar significativamente mis plazos, entonces generalmente lo hago. Cuando profundizo en un código nuevo (código que es nuevo para mí pero antiguo para el proyecto) en uno de nuestros proyectos (solución de errores, adición de una función, etc.) tiendo a asignar aproximadamente el 10% del tiempo para limpiar el código Estoy trabajando en. Me concentro el resto de mi tiempo específicamente en la tarea en cuestión. Si cree que requiere más que eso, entonces se lo propondría al líder de su equipo y obtendría apoyo directo para su refactorización.
Un ejemplo reciente que tuve fue un código que yo mismo escribí hace varios años. En ese momento, estaba aprendiendo nuevas tecnologías (en este caso, era Linq) y la solución que elegí en ese momento no era la óptima (casi horrible). Otros programadores con el tiempo simplemente habían copiado ese mal diseño, ya que funcionaba. Estaba agregando una característica importante, así que me tomé el tiempo para refactorizarla y el código resultante hizo que la solución fuera significativamente más rápida. Sin embargo, encontré más de 60 copias del mal diseño utilizado en otras consultas complejas de Linq, por lo que en lugar de hacer un gran cambio, opté por actualizar solo las pocas en las que trabajé y agregué comentarios TODO en ciertas articulaciones clave para que la siguiente persona que entró no copió el código incorrecto, sino que fue dirigido hacia el nuevo código.