Since we are talking about ethics in software right now, I’d thought I’d throw one or two out there. First and foremost: please let me know if you think I’m wrong. My only request is this: tell me why — in as much detail as you can muster.
Truth is, I want to be proven wrong. If someone can come to me and tell me that I could be doing something better, how to do it better, and why it is better — that makes for a great day. After all, In programming there should be no dogma and no sacred cows.
This is essentially what I do every single time I blog. I propose an idea, I ask people to tell me I’m how I’m wrong. My blog is kind of like a personal testing ground. I do not deliberately try to be wrong, I do not play devils advocate in print. But I fully believe there are people out there with better ideas than mine. My problem is that I rarely come to them on my own. All of my best software was written with a group of people.
See, this is also not just a blog ethic. This is a work ethic as well. I try to encourage people that I work with to question what I say. I do not want to work with a bunch of yes men, blind faith belongs somewhere else.
Now, to flip the request around to everyone else, that mean you dear reader. Encourage people to do the same to you — and appreciate it when someone does just that. Being proven wrong is not a sign of weakness, it should not be seen as an insult (correction should also not be delivered as an insult either, but that is another topic), it is a learning opportunity.
So best case, you might learn something new. But also a good case, you might be able to help teach someone else something new. If you reach an impasse — just learn to disagree. But hopefully you both learn about each others position, making you both better off. If need be, both think about it for a day.
Really, what we do is about ideas. And we should be prepared to defend those idea. But we should also be ready to drop them at a moments notice in favor of better ones. This shouldn’t be personal, it should be improvement.
Programming is all about what you know, and all of us are limited by experience. No one can know everything, we all have holes in our knowledge and experience. We have to rely on others to help fill in our gaps. And experience is the key, that is often what drives knowledge in the first place. Please keep that in mind.
Experience is the type of projects someone has been on, the people they have worked with, the books they have read, the problems they have faced. All of those factors will lead a person down a particular path. Sometimes good, sometimes bad.
So please, if you think I’m full of it, let me know.