¿Cómo ser bueno en el análisis y diseño orientado a objetos (OOAD)?

26

Convertirse en un buen analizador y diseñador puede beneficiar enormemente a un desarrollador. Pero definitivamente hay obstáculos para esto. No todos están interesados ​​en OOAD, y no todas las personas interesadas conocen el camino. ¿Debería un buen OOAD saber múltiples idiomas de OO? ¿O debería tener proyectos fallidos? ¿Cómo puede uno convertirse en un buen OOAD?

Saeed Neamati
fuente

Respuestas:

34

Las personas que no están interesadas están creando sus propios obstáculos. No me puedo preocupar por eso.

Para aquellos que no conocen el camino, les sugiero:

  • Encuentro que cada lenguaje de OO que aprendo me hace un mejor desarrollador de OO. Se puede llevar mucho de cada idioma a otros, siempre que encuentre la comunidad.
  • Aprendes más del fracaso que del éxito, pero trata de hacerlo en tu propio tiempo. Profesionalmente, confíe en aquellos con más experiencia, al menos parte del tiempo, pero no tenga miedo de preguntar "¿Por qué?".
  • Aprenda los cinco principios SÓLIDOS y comprenda por qué existen. Ninguno de ellos son reglas, pero son buenas pautas cuando estás perdido.
  • Test Driven Development mejoró más mis habilidades de diseño OO que cualquier otra cosa que haya aprendido.
  • No serás el mejor hasta que hayas pasado de la subingeniería a la sobreingeniería y luego encuentres el equilibrio correcto (más cerca de esta última).
  • En realidad, tacha eso, nunca serás tan bueno como lo serás dos años después.
  • Lea muchos libros y blogs, pero no tome nada como evangelio. Esta industria todavía no ha encontrado, y puede que nunca encuentre, un camino perfecto.
  • Aprenda los patrones de diseño, pero no busque lugares para usarlos, simplemente utilícelos como facilitador de la comunicación.

Espero que algo de eso ayude.

pdr
fuente
1
Buena lista @pdr. +1
Saeed Neamati
55
+1 "aún no ha encontrado, y puede que nunca encuentre, un camino perfecto".
ocodo
1
+1 "Test Driven Development mejoró más mis habilidades de diseño OO que cualquier otra cosa que haya aprendido".
Kevin Cline
1
SÓLIDO
Mudassir
Gracias, tengo una pregunta para SOLID debate programmers.stackexchange.com/questions/155852/…
LCJ
5

Creo que para poder apreciar completamente el modelo OO, debes tener experiencia fallando miserablemente con las técnicas de programación que no son OO. Puedes entender OO por dentro y por fuera, pero para apreciarlo y respetarlo, tiene que ser una herramienta nueva y brillante que reemplace a la vieja y oxidada que no hizo el trabajo.

Autodidacta durante 7 años, hasta que finalmente aprendí OO en Java a nivel universitario. Antes de eso, constantemente desarrollaba estos proyectos, y se volverían tan grandes que olvidaría lo que estaba pasando. Serían voluminosos, desorganizados y requerirían mucho mantenimiento para realizar cambios menores. Básicamente seguí encontrándome atascado con mi código y comenzando de nuevo constantemente.

Me tomó un tiempo sacar mi cabeza del diseño lineal que había adoptado, pero una vez que entendí completamente el modelo OO, ¡fue como Eureka! Pude codificar proyectos mucho más complejos por mi cuenta y mi productividad se disparó por las nubes después de aprender conceptos como la herencia. No estoy perdiendo el tiempo volviendo a escribir código o comenzando de nuevo, porque objetivamente todo tiene sentido y es intuitivo.

Es mi opinión que cada programador debe saber tantos idiomas como sea posible. Esto los convertirá en un veterano más experimentado, independientemente de si es OO o no. Una vez que comprenda OO, puede tomar esas técnicas y aplicarlas en todas partes donde se implementen.

En mi humilde opinión, si no entiendes, o no deseas aprender OO, estarás inadecuadamente equipado en el campo de batalla de la vida. Cada vez más empresas utilizan nuevos lenguajes OO. No veo ninguna razón para no conocer el modelo OO hoy en día.

Dependiendo de cómo aprende la persona, depende de ellos cómo quieren aprender el modelo. Personalmente, aprendo mejor cuando alguien me enseña, por lo que ir a clase para Java I y Java II realmente marcó una gran diferencia para mí. Recomendaría tomar cursos electivos de ingeniería de software en la universidad, o simplemente ir en línea y buscar tutoriales de OO si no tiene acceso a cursos universitarios o desea aprender en su tiempo libre.

Cuando pienso en cómo me lo describieron, digo; una manzana es una manzana y una naranja es una naranja. Sí, ambos caen de los árboles, pero son dos frutas totalmente diferentes y ahí radica tu armonía.

Styler
fuente
1
¿Quiso decir fallar miserablemente con la programación funcional, o fallar miserablemente con la programación de procedimientos?
Andrew Grimm
Falla miserablemente con la programación funcional, pero no falla en el dominio. Me refiero a fallar en la implementación exitosa debido a sus limitaciones.
Styler
¿Definitivamente te referías a la programación funcional, no a la programación de procedimientos?
Andrew Grimm
Programación sin OO.
Styler
2
Definitivamente sugeriría editar esto, ya que no es OO! = Funcional para cualquier extensión de la imaginación. Las cosas pueden ser ambas cosas.
Magus
0

Siempre hay obstáculos para aquellos interesados ​​o no, pero el contexto y la gravedad pueden variar.

No es necesario que necesite aprender varios idiomas para los conceptos de OO, comience con un idioma que le guste, durante un período de tiempo obtendrá un fuerte punto de apoyo en el idioma, publique esto, es posible explorar algunas cosas que ha hecho ya e intente ejecutar lo mismo en un idioma diferente. La experiencia en un idioma ayuda a cambiar a otros nuevos, ya que tendría un punto de referencia para calificar.

Cualquier proyecto es una experiencia de aprendizaje en lugar de su éxito, lo importante es cuán bien ha adaptado las funciones para su mejor uso, en ocasiones es bueno leer el código de otros y descubrir cómo y por qué se hace. Si puedes conseguir un mentor, sería genial. Siempre sepa la razón por la cual se elige esto , qué tal hacerlo de alguna otra manera. Intenta trabajar en tu propia lógica y modelo de diseño y dárselo a tu senior / mentor. De esta manera, estarías mejorando tus habilidades, tal vez al principio irían directamente al basurero, pero luego intentaste y aprendiste lo que hiciste mal. Iterativamente, mejorarías cada vez más.

V4Vendetta
fuente