3 ms·
Folks commenting that this is obvious are overlooking the way that architecture and patterns are often explained to junior-level engineers -- especially new eng
by jamestimmins 4y ago
Folks commenting that this is obvious are overlooking the way that architecture and patterns are often explained to junior-level engineers -- especially new engineers who aren't working for a company with strong engineering cultures.
When I started out, I thought the way to become a senior engineer was to increase the number of patterns I knew off the top of my head. It was by speaking with more senior folks that I learned that wasn't how to grow, but that was far from obvious.
- jfim 4y agoWhen I was in software engineering school, we had a tongue in cheek word for this: patternitis. Many undergrads who took the software architecture class ended up catching this strange disease that compelled them to write abstract singleton factory builders and other silly things. The cure is basically to write enough software to figure out where these patterns make things more understandable and where they detect from what's being written. Maybe the GOF book needs a content warning for that. :-)
- a9h74j 4y ago> tongue in cheek word for this: patternitis. This term recently occurred to me: OCD -- Obsessive Class Disorder
- cogman10 4y agoPatternitis is part of a cluster of diseases for a greenhorn dev. Abstractiosis - Adding layers of indirection which don't serve to make the code clear DRYicron - Overeager deduplicating code (usually by adding hard coupling) Fooflation - Avoiding descriptive names of methods/variables in favor of "result1, result2, goOn" All fixed with a little TLC and experience :) * ask your doctor if experience is right for you.
- code_biologist 4y agoFooflation - Avoiding descriptive names of methods/variables in favor of "result1, result2, goOn" All fixed with a little TLC and experience :) There's a funny overcompensation that greenhorns have when improving their code. Someone will ask them to use better names, then you get a few months of `let loopIndex = 0` when `let i = 0` would have been just fine.
- pydry 4y agoMetaprogrammitis - Im an "advanced programmer" now so Im gonna use the most advanced language features for the most inappropriate purposes.
- cogman10 4y agoOh man, those are always fun bits of code to unwind. "Yeah, I made a compiler plugin to generate code with my own custom preprocessor language I made up because I was so sick of write for (i in c)" One guy in my company tied into Java's annotation processing engine to create his own server side UI framework driven by his random annotations. The generated code? Usually just creating a method that populated a HashMap with stuff pulled from the annotation... Yeah...
- jungturk 4y agofrom the article: > it took me a lot of time to understand what this pattern does and had my "aha!" moment The patterns are shorthand to discuss a set of concepts that can be useful in considering solutions to certain problems. Once the designer encounters those problems, and understands how the patterns can be used, the value is apparent. It doesn't seem too different than many areas of mathematics, where the jargon burden is real. Can the concepts be explained to a lay user? Yes. Can the lay user then apply those concepts to solve problems? Likely not except in the most superficial of cases - the lay explanation ignores much detail that is required to get an effective solution in non-trivial cases.
- throwaway787544 4y agoEverything seems to work that way. Pick up a martial art, auto racing, music, rock climbing, new language, whatever. At first most people focus on all the new concepts in the hopes it'll help them progress. It's only later they realize it was the mistakes they made along the way that led to real knowledge, not the technical stuff.