Sometimes the Perl community is pathetic.
Here's one way in that it's pathetic: not reading Object Oriented Design & Analysis books.
I hear a lot of arguments for not doing so. Many of them, given in all seriousness, aren't even on topic.
"I don't need to study Object Oriented Design because OO means strong typing and you don't need strong typing to do OO". What the FUCKING HELL!? Apparently Perl is the language for crack babies.
"Plan to throw one away". Yes, this is an ideal, and ideals are good. Assuming that the ideal scenario will play out is foolish. It's foolish to assume that you'll be willing to demand it even as you begin to have doubts about your job security if you demanded it and whether it's really in line with the clients interests. Over and over again I see development teams who are going to "do it right" setting out but then reality sets in and kicks their ass. So be smart, not idealistic, or else have really good job security and the authority to actually make the ideal happen, as well as the confidence to follow through.
"Design is of limited use". This one I strongly agree with -- "planning is NP complete", as I say. But I didn't say anything about planning the whole thing from the onset. That's a presumption inserted by the aruger to excuse themselves from studying OO design. If they don't need it up front, they can do it later, but they won't do it later either, because they don't know how because they won't frickin' read the classic texts on it!
Then there are an infinite number of arguments that take the form of "Java is known for that being serious about OO stuff, and Perl is better than Java, therefore Perl doesnt need it". Unlike the first example which was merely self contradictory, this one is actually circular, which you'd know if you studied formal logic, makes it invalid.
It's these blatent attempts at weaseling out of the less than fun parts of our *jobs* (read: paid to do them) that turned the industry off to Perl programmers. And I hate you for being lazy and causing the industry to go cold on Perl. Ignorance is false laziness. Don't do it. Go read _Object Oriented Design Heuristics_ today! It's language agnostic, it's classic (before this trendy dumbed down "OO is easy!" movement), it doesn't pull punches, it admits when things are hard, doesn't cock up silver bullets for you to try to lean on (and fail), and it'll make you a lot better programmer.
Point of clarification: the hatred doesn't apply to the parts of the Perl community that are actually working to bring (optional) strong typing to Perl, or otherwise steal from Java rather than hide from it and pretend it doesn't exist.
For nearly any programmer, there are some things that you just plain need, regardless of what language you're working in:
* Relational database design theory and the five normal forms
* Security -- validation, race conditions, in-band versus out-of-band signaling, other things
* Algorithms theory -- otherwise every program you make will be a mash up
* OO Design -- (or alternatively, the sort of meta-programming and software engineering taught in the wizard book) -- or else your program will start to seriously suck beyond a surprisingly low level of complexity
I know most of you guys didn't get a CS degree, and you used to be the sysadmin, or the typesetter, or the janitor... but if you're going to adopt this field, at least dig enough into the topics on which its founded to understand *why* they're needed. Honestly, it's easier than constantly arguing (first to yourself, then your boss, then to interviewers, then to the unemployement officer) why *you* don't need to know them.