Don't buy the patterns hype (Patterns are the enemy of novices)
2008-12-05 11:34 i1594 [permalink]
I believe patterns are the enemy to novices in computer programming. I believe the friendly people that are guiding who's new to the field of computer programming, are warping the knowledge to be picked up around patterns and practices and have their subjects on a wrong path from the very start.
I enjoy viewing the work of pupils having just expanded their field of knowledge with a new way of solving a problem. Combining that with methods they already master to solve the next set of problems that fall right outside of this new frontier of acquired knowledge and skill.
Sometimes it's too big a combination of tricks, sometimes it's not the best combination of methods,
but that's ok, they're learning. At least it's doing what it's supposed to do.
I don't find that in work of this new batch. It feels like they know all about which patterns apply to their work - or worse still: which patterns *almost* apply to their work - and build applications that have structure and interfacing to withstand severe QA, complexity analysis, hail, earthquakes and extensive litigation, but just barely generate things conforming to the requirements description.
With over-cerebrated solutions like this, I've seen 'reverse-scalability' issues arise. The first draft of the application takes so much into account, that it doesn't perform well with a small number of tasks in the beginning. Or even fails when no more results are expected from it.
I've only heard about patterns since about two years. I don't even know how much patterns are described out there, pertainig to computer programming. I do acknowledge I've seen them arise from my own work. I believe it's important to describe patterns that arise from the totality of all programming that is taking place.
It's good to read about an emerging pattern, learn about the downsides in the long run, the pitfalls, which details to better get right from the start. But I believe it's not a good idea to bother novices with the full reach of patterns, without them having a wide enough overview over what we're programming for in the first place.