Kolemjdoucí Mám zcela opačný názor. Takovéto chyby vznikají především díky tomu, že se lidi učí sami "jen praktické věci" a na formální věci se vyprdnou, bo "to je teorie, tak to přece není a zajímá mě praxe". To vede k tomu, že nechápou ani základní návrhové vzory, stejně jako jak v objektech zachytit jaké vazby.
Každý jazyk/prostředí je pouze implementací formální teorie. Např. to, že zaslání zprávy = volání metody. Nedávno kolega nevěřícně koukal na třídu Messenger v MVVM Light frameworku, která je zobecněním zasílání zpráv objektům* a došlo mu to až ve chvíli, kdy jsem mu sdělil tuto poučku.
Ne vždy je to samozřejmě chyba pouze těch konkrétních lidí - mnoho knih nebo učebních materiálů se věnuje právě jen implementačním detailům a myšlenku, která je za tím ("The Big Picture"), nechává bez povšimnutí. Nicméně pokud se chceš bavit na toto téma, založ na to prosím separátní thread. Sem to IMHO nepatří a pokud vím, tak toto fórum nemá moderátora a tudíž to nikdo jiný neudělá.
* Jde tam o to, že na mnoho objektů, na kterých potřebuješ volat metody, nemáš referenci. Občas znáš typ, někdy ani to ne.