The number one characteristic of uninhabitable software as above defined, in my experience would be the inability of people touching it to look past today, and past themselves.<p>There is a degree of hack that should be unacceptable. If you're using what's at hand and not what's preferable, you should stop to think. If you're rushing to meet a deadline, open a new branch marked "hacked-to-deadline". If you're using something you're proficient with instead of learning what is commonly used in such a situation, you're not a hacker, but a worker.<p>A hacker is an aspiration, and a noble discipline. Meaning you are not to decide if you're a hacker, but the people you respect as such should decide for you.<p>And discipline is key word in there. A discipline is both a pursuit and a technique. Seeking and sadhana. Feeling AND understanding.<p>There is no place for workers in an open-source project. There is place for goals, instrumental goals, hackers and automation. Explain what you're doing, have clarity. Clarity leads to less features, more usefulness, better documentation that isn't confused wrt/ what the code is actually doing.<p>Work it out in a draft branch, scrap it and code it again the way it is required to be to remain clear, driven by one clear approach to a goal that is well defined. If you leave a placeholder, clearly mark it as such in place, and in the backlog as a FIXME.<p>Do what you'd want others working on the thing to be doing, leave time to hack on what titillates your inner joy, as well. Eat the frog, but have cake ready.<p>This kind of discipline is demanding. If it's sounds too demanding then your perception has not graduated to hacker levels. Hackers love complexity. It is a thing to neatly pack into your requirement space, a cute puzzle, and a lovely time.<p>Hackers love constraints. Those are the bedrock on which we build continental machines of universal magnitudes of influence.<p>Hackers love requirements. Once the problem space is well defined, and goals are clearly approachable, those are the things that drop, one after the other falling off the wagon. Hackers love to get rid of ill-conceived requirements.<p>But that last part you have to graduate to, with discipline. If you think you're there, you should be able to think outside yourself, defend your discipline and it's application in your code. And others will decide if you're making sense or not. You can not be it.