The Elusive (talk of) Design Patterns
Remember the time when Design Patterns were in vogue? Go to any interview, and one of the most popular direct or indirect questions was to test your knowledge on them. Some cheeky interviewers also asked questions like:
“how many design patterns are you aware of … oh, those are just J2EE ones, what about the core ones”.
While it may sound superficial, knowledge of design patterns, or even the mere pursuit of it, did encourage thinking beyond the obvious, if I may say so. It nudged the critical thinker in you! Subsequently, enlightened individuals like myself would have appreciated aspects such as DB connection pools, choice of class hierarchy in Java collections, or something as simple as the ‘Undo’ command in any IDE that we were using, a bit better!
Anyhoo, the point of this post is to present an observation that modern day computing — say a typical web-based application development — doesn’t give you as many avenues to acknowledge the design patterns. Hence, I believe, a typical interview question of today, if it ventures into the archaic design patterns (GoF1 or otherwise), would be frowned upon!
Much of this shift can be attributed to the changing paradigms of software development. The introduction of tools and techniques that abstract away the intricate details has, on one hand, accelerated application development significantly, but on the other hand, it has diverted the modern-day developer from the avenues or even the necessity to pursue such knowledge.
However, as old school as I may sound, I still believe that the knowledge and appreciation of GoF patterns, in this age of architectural blueprints and reference architecture, would certainly come in handy in some way or another — be it cloud-native development, or in developing homegrown greenfield app! It may not provide leverage in the interviews — but does give a developer an edge while designing and developing a system, or a part of it!
Gang of Four — Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides