Rule 1: My code is crap ... this means exactly what you are saying ... there are always better ways to do it, and when a problem arises it's probably your fault more often than not.
Rule 2: I care about my code ... programmers definitely should care about their code, but should care even more about their current projects. There, happy?
Rule number 3: My opinion about my own code is wrong ... this happens more often than you think, and not realizing that your mental model might be wrong is dangerous.
Rule number 4: My manager doesn't care about my code, and he pays me ... this is the norm. You're arguing semantics here.
The manager cares about the project. You could argue that the manager indirectly cares about the quality of your code, and you would be right, but then again I haven't seen many managers getting upset about a project with lots of duct-tape code, as long as it does the job.
2. I think your putting a different emphashis on "care"
3. same as 1.
4. no, your higherup only cares about the final product, thats very different from caring about the code, if a bunch of hacks gets the job done quicker than the elegantly carved solution, they dont care (unless your hacks part of the core and delay the next part)
Funny, OP is 180 degrees from the truth and sadly, so are you.
OP's rules are nice (and cute) in theory, but it's my experience on large projects with many people in many environments that helps me see through OP's bullshit.
Hundreds of projects have shown me that the problem with most programmers is not ego, it's incompetence. I'd gladly take one primadonna over 10 drones into battle with me. In fact I have, and now it's the only way I'll take on major work any more.
Great work requires great competence, not pop psychology. If that competence comes with ego attached, fine, I can deal with that. What I won't deal with is crap produced by someone who cares about it but doesn't have the confidence or expertise to stand behind it.
Rule number 1: My code is crap.
What we need is great code. Everywhere. And we need programmers to produce great code. How can we expect anyone to aspire to produce great code by thinking that their code is "crap".
We are all learning and we are all at a different place in our journey, but one thing is certain: we are all capable of doing better and aspiring to greatness. Self degradation may work for OP but not for most people.
Excellence comes from learning and inspiration. Inspiration comes from passion, excitement, and seeing the possibilities, not dwelling on crappiness.
Rule number 2: I care about my code.
Care about your code while you're writing it. Then let it go.
The moment you stop caring about your code is the moment you give yourself permission to be free of the bonds of what you already know. What worked worked. Now let's do better.
(I'm embarassed by what I wrote a year ago. But I don't care. Move on.)
Rule number 3: My opinion about my own code is wrong.
It better not be. Your code may not be perfect, but it better be ready to do the job now. And you better stand behind it.
Rule number 4: My manager doesn't care about my code, and he pays me.
Your code is all your manager does care about. When it performs, he loves you. When it doesn't, he doesn't.
Make your code do it's job. It's really that simple.