Esto será algo subjetivo ya que ocasionalmente me encuentro con ingenieros con muchos años de experiencia que lucharán con uñas y dientes contra él. Pero, en general, la mayoría parece estar de acuerdo conmigo. También puede ser algo específico del idioma, ya que ciertos idiomas tienden a conducir a diferentes patrones y diferentes tipos de construcciones de codificación. Mi fondo es Java. Habiendo dicho todo eso:
La simplicidad es el rey.
Con demasiada frecuencia, los desarrolladores junior y, a veces, los desarrolladores de nivel medio irán a la ciudad creando estructuras de clase obscenamente complicadas y tratando de empujar tantos patrones como sea posible para resolver un problema. Terminarán con múltiples interfaces, fábricas, clases abstractas, etc. para resolver un problema simple.
- ¿Debería pausar mi carrera de software para aprender conceptos de redes?
- ¿Se ve mal tener tres pasantías consecutivas de ingeniería de software? Estoy en esta situación, porque un curso que necesito para graduarme solo se ofrece en la primavera. Entonces, estaba planeando hacer una pasantía en el trimestre de otoño.
- ¿Cuál es la carrera profesional más lucrativa para un ingeniero de software? Actualmente soy ingeniero senior en una compañía Fortune 500.
- Cómo administrar mi tiempo para aprender, trabajar y divertirme como estudiante de ingeniería de software
- Las empresas buscan un desarrollador de software en prácticas con una experiencia mínima de 1-2 años (no remunerado). ¿Es esta la nueva norma, o estas compañías son solo payasos?
Los patrones de codificación son increíbles. Absolutamente tienen su lugar. Los veo como herramientas. Tienes la herramienta adecuada para el problema correcto. Los desarrolladores inexpertos / junior no saben qué herramientas usar para cada problema. Saben acerca de las herramientas, pero luego eligen la (s) incorrecta (s) y el calzador donde realmente no debería ir. Esto a menudo conduce a soluciones mucho más complejas de las necesarias.
Mi regla generalmente ha sido escribir el mínimo necesario para resolver el problema. Mantén las cosas simples. Solo saldré de mi camino para tratar de generizar / abstraer todo si estamos planeando activamente integrarlo o reutilizarlo. Se desperdicia demasiado tiempo de codificación haciendo cosas “súper geniales” que son muy específicas y nunca se reutilizan.
Mis pensamientos de todos modos.
editar: Obviamente, puede ser al revés. Los desarrolladores junior a veces no conocen los patrones y no los usan cuando deberían. Luego terminas con un montón de un código que termina siendo reescrito demasiadas veces. Entonces, hay absolutamente un equilibrio. Pero todavía voy a ir con “La simplicidad es el rey”. Me tomó mucho tiempo finalmente darme cuenta de eso. Me encanta el código que es simple, y puedo entender su alcance y objetivo en un corto período de tiempo. Es bonito.