¿Qué es algo que los programadores experimentados saben (o deberían saber) pero que los programadores menos experimentados probablemente no saben?

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.

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.

Creo que a medida que tengo más experiencia en programación, el uso de paquetes se vuelve más distintivo, la importación de módulos y solo un aumento de la eficiencia del programa (como crear más procedimientos o métodos que se ejecutan más rápido con cada mejora). Ah, y como Harrison mencionó anteriormente, mantenga los programas simples; ¡No hay nada peor que un programa complicado que te haga incapaz de entenderlo!

Sin embargo, con más y más experiencia y actualizaciones, tienden a aumentar la complejidad, ¡pero recuerda mantenerte organizado!

Puede que las bibliotecas de terceros no parezcan ser la mejor decisión, en cuanto al rendimiento, pero definitivamente vale la pena el tiempo y el esfuerzo que de lo contrario dedicaría a desarrollarla y mantenerla usted mismo. Menos código, mejor.

More Interesting

¿Recomienda agencias head hunter para trabajos de software de nivel básico? ¿Consejo?

¿Qué es 'Ejecutar y escribir planes de prueba' como requisito de trabajo de un ingeniero de control de calidad?

¿Qué tipo de habilidades de Python necesita un QA o un ingeniero de pruebas?

A los 27 años, ¿debería cambiar mi carrera de gerencia de construcción a programación de computadoras / ingeniería de software? ¿Por qué?

¿Debo abandonar la idea de convertirme en ingeniero / programador de software, porque no tengo un título universitario en ese campo?

¿Elegir ingeniería de software es un buen camino para ser un buen desarrollador web?

¿Cuáles son las habilidades básicas y la personalidad necesarias para que un ingeniero de software indio consiga un trabajo en Dubai?

¿Cómo funciona la tutoría de un ingeniero de software en compañías de software como Microsoft, Amazon y Google?

¿Es normal cuando el equipo no utiliza el trabajo de un ingeniero de software? Esto sucedió 4 veces en los últimos 2 meses. ¿Cómo puedo mejorar esto?

¿Debería solicitarse un acuerdo por escrito cuando se le ofrece una pasantía de ingeniería de software en una startup de Silicon Valley? En caso afirmativo, ¿cómo se puede preguntar adecuadamente por correo electrónico?

¿Cómo sería un día típico para un ingeniero de DevOps?

¿Cuáles son algunas oportunidades de trabajo para ingenieros civiles en compañías de software?

Soy un aspirante a programador de clase mundial. ¿Cómo puedo mantener la disciplina y seguir aprendiendo constantemente mientras hago mi trabajo al máximo?

Si un estudiante que busca trabajo después de un campamento de codificación no lo asegura, ¿qué hicieron mal?

Cómo convertirte en el mejor analista de negocios o probador de software que podrías ser