3 ms·
Similar to your disagreeable point, I like to see contradictions within a set of principles. This helps to capture the reality that nothing is perfect and one i
by jghn 7y ago
Similar to your disagreeable point, I like to see contradictions within a set of principles. This helps to capture the reality that nothing is perfect and one is always just trying to optimize for multiple competing variables. Over optimize for one variable and you're making another worse.
- dwohnitmok 7y agoEh... Contradictions by themselves often times end up devolving into "undisagreeable" principles very easily. Principles are a tool precisely for arbitrating among multiple, competing "good" things. They are how you solve contradictions. Indeed I have often seen good principles framed as choosing A over B when they conflict with each other where A and B are both things people reasonably want. For example, "We value code quality while also balancing practical velocity." Well yes I'd imagine every single team in the world agrees with that. That doesn't tell me very much. "We focus on code quality over practical velocity." Interesting; I now have a valuable piece of information as to whether I want to work with you, depending on other specifics of the project. "We focus on practical velocity over code quality." Also interesting and very informative for me and a good indicator of whether I want to work with you. Now you might argue that no team will phrase things in such stark terms, because this oversimplifies things. That's a good indication that maybe these aren't fundamental principles you should commit to writing and instead you should look at others. Alternatively maybe you just need to add a bit of nuance. "We're willing to commit months to getting a new feature right from a technical perspective but not years" vs "We aren't willing to commit any more than a span of a few weeks at most" is more nuanced but still has great information value. It's also worth pointing out your principles can't cover everything. The occasional "yes I know we generally value code quality but we just really need to ship this now" or "yes I know we generally value velocity but this feature needs to be done absolutely right" is okay as long as it's truly occasional. Sometimes you have to just go with some set of unwritten rules, otherwise you'll fall into the trap of "principles lawyering." The point of having disagreeable principles is that they give valuable information and insight. Principles that everyone agrees with basically amount to "we try to be good at things not bad at things" which doesn't help anything. If this happens in management this becomes the bland mission statements and culture statements I'm sure everyone has seen before. We value integrity and transparency in the workplace! And exactly who is ever going to publicly announce the opposite (on the other hand this makes the opposite statement a very very valuable principle, albeit one that probably will cause very few people to want to work with you)? We strongly value transparency over social comfort in the workplace, to the point that we publicize within our company all performance reviews, formal reprimands, pay raises and current salary of everyone in the company. Well that's a way more interesting principle. Agree with it or not, it tells me so much more. If your principles don't make some set of reasonable people say "nope that's not for me" then they probably aren't very useful.
- GordonS 7y agoI'm not sure I'd go as far as to put it as you do, but I take your meaning: a couple of the principles I like to espouse are "no dogma" and "just because you can, doesn't mean you should".
- dwohnitmok 7y agoFWIW the second principle especially seems like a nondisagreeable principle. I find it hard to think how a person would support the opposite. "Whenever you can do something you should do that thing." I suspect the motivation behind your statement is to trade this off against experimentation, in which case a more disagreeable version of this statement might be "we value conservatism of design over experimentation."
- Viliam1234 7y ago> I find it hard to think how a person would support the opposite. "Whenever you can do something you should do that thing." The person would probably phrase it like "you should always do the right thing", and then argue why some things need to be done in a way other people consider too complicated, because (1) it's possible to do it in a way that satisfies some abstract principle, and (2) following the abstract principle is the right thing. For example "whenever it is possible to make a unit test for something, you should do it", even in situations where team members would scream that you really don't need a unit test to verify that 2+2=4. This would make sense as an antidote towards the attitude that you don't really need to test simple things, where the definition of "simple things" keeps expanding until almost everything is considered a simple thing.