yo creo que si son muy obligatorios, en lo personal no le enseñaría patrones de diseño a nadie que no sepa que es un hilo y sus implicaciones, pues no imagino a alguien tratando de entender que es un singleton si ni siquiera sabe de hilos...2. Los hilos de ejecución no son obligatorios para entender patrones de diseño. Lo más sano es primero entender un patrón en su forma básica y luego, una vez entendido el concepto de los hilos, aplicarle el patrón de diseño.
y no es el único caso.
3. Para entender los patrones de diseño no hay que ser un duro programando, alquien que lleve un año aprendiendo a programar puede ir aprendiendo patrones de diseño. Pongo unos ejemplos:
-Alguien que haya aprendido herencia y polimorfismo, podrá aprender sin problemas patrones como Decorator o Facade
-Alguien que haya aprendido qué son métodos y atributos de instancia y métodos y atributos de clase, y sepa en qué diferencian, podrá aprender singleton
Este aprendizaje debería ser gradual y no todo de una, o el programador novel se saturará de información. Además esto mejorará sus habilidades de programación y le enseñarán buenos hábitos y prácticas en este arte.
Estoy de acuerdo en que no hay que ser un duro, pero tampoco es un tema para noobs, eso seria como dejar una semilla en tierra estéril.
Creo que enseñarle patrones a alguien poco experimentado es contraproducente, de ahí que uno llega a proyectos donde se encuentra un monton de patrones no solo mal implementados sino utilizados de manera innecesaria e inutil.... y lo peor es que sacan pecho: he usado los patrones abcd en 'mi arquitectura'
Un patrón necesariamente inyecta complejidad, y su uso debe ser justo cuando se necesite, como siempre he dicho no se hacen aplicaciones para usar patrones, sino al revés.
Es ahí donde un martillo deja de servir para construir...
4. Los patrones de diseño bien aplicados harán tu código más sencillo y fácil de mantener, además de ser más elegante.
Más fácil de mantener si, pero más sencillo jamás... problemas que puedes resolver en 5 líneas de código utilizando un patrón pueden ser 200 líneas... por eso no se deben usar solo por usarlos, solo cuando la situación lo ameríte... y un noob la verdad dificilmente sabrá cuando la situación lo amerita.
Añadiendo, a lo mejor, nunca necesitaré esos patrones de diseño de los que ud habla para hacer aplicaciones escalables, rapidas y bien documentadas.
Tratándose de ti, Me late que ya los has necesitado y ni siquiera te has dado por enterado... y de seguro hasta ya habrás hecho algunos sin saber su nombre.
Usualmente aplicaciones altamente escalables manejan varios tipos de patrones, ahora que el uso de patrones suele ser inversamente proporcional a la rapidez del sistema, así que en secciones de misión crítica, sobre todo a nivel de procesamiento y memoria, es mejor abstenerse.
No acabas de entender, mientras no se tenga experiencia laboralemente o no se haya trabajado en un proyecto serio, se es un principiante, un inexperto en programación. Las personas deberían aprender patrones de diseño durante este periodo, DURANTE SU FORMACIÓN, mientras todavia se es un principiante y aún se está iniciando en la programación, obviamente se necesitan conocimientos previos para poder aprenderlos, pero tampoco hay que esperar a saber programar mucho, ya que a estas alturas ya se habrán cogido "mañas" y anti-patrones. Si un novato pide guia para aprender a programar, debe al menos mencionarsele que existen patrones de diseño y que pueden beneficiarle, pero que también es importante aprender otras cosas necesarias, que el aprendizaje es un todo un proceso.
No estoy de acuerdo, hay muchas cosas más importantes por aprender antes de meterse con los patrones, como dije anteriormente enseñar patrones a principiantes es una pérdida de tiempo. Incluso un principiante es altamente dependiente del lenguaje, y los patrones de diseño suelen rebasar esas fronteras.
Lo más importante de los patrones no es nisiquiera su definición, sino el proceso mental necesario para poderlos identificar y utilizar apropiadamente, y esto es mucho más importante cuando la experiencia te permite variar los patrones o incluso crear nuevos.
En las universidades enseñan patrones de diseño, es necesario , pero enseñarlo a las personas de primeros semestres es un desperdicio y a la final lo que se enseña es apenas un brochazo usualmente enfocado a enumerar patrones pero no a la transformación del modo de pensamiento... precisamente porque para ello se requiere haber tenido 'un triz' de experiencia desarrollando sw .