users, customers, passengers
Mar. 15th, 2007 01:38 pmSo, you come to, say, New Orleans, or Miami Beach, or Key West, or Vegas, you go to a hotel; they do have rooms, and so you stand in line to register. An hour later they let you through to the security line. An hour later you get to security guys; they check your luggage; tell you you cannot take your own drinks to the room, and confiscate your spoons and forks, and actually all food. And take away your camera, just in case.
Then you wait for a couple of hours while they are "preparing your room". Then they take you to your room. A minor hassle (they took your luggage to someone else's room, and that someone else already hung "do not disturb" poster on their door), and you get inside. Half an hour later they allow you to use restroom and turn on the tv. Yes, they'll wake you up in the middle of the night, because it's starting to rain outside, and they need to check whether you closed your windows. They will also offer you a drink. Room service, that's how it is called. The manager of the hotel also announces that theirs is the best hotel in town. And that they have the best team in the country, and the best towels in the world, please use them sparingly, save the nature. You are not allowed to use your own shampoo, because it can be bad for your hair.
Well, you all recognize the pattern.
Now... suppose you are on the other side, and you have customers. How you treat them, depends on your goals. If you own the company, you love your Customers Bringing Money. You do not let them wait. You make them happy. You make them want you. You are a miracle, you do wonderful things. Whatever they want, you do it (except sex, it's illegal).
But... if, say, you are a manager of a small team of guys, and you a) want to get rid of some of them, and b) prove to everyone that your team is the most important, what do you do then? You tend to make your customer a little bit unhappy. Of course it is all the fault of that bad guy that is totally out of control. He does what he thinks is right. He had introduced a feature that, although some customers think they want, may make the whole application too error prone, half a year from now, and this feature definitely was not in the plans at all. Also, if nothing breaks, nobody notices you, you are transparent and invisible. How does the higher management knows you need something, say, to grow the team, to make the product more mature? You have to be a squeaking wheel. That's why your application should break regularly, and that's why your customers should complain.
Now you are writing something, say, a Java library. Your brothers and sisters, programmers and programmers, are going to use it every day. Your purpose is to make them happy. But you have your principles, right? You will never, never, never use reflection, because it is not kosher. You rather include 10 different methods that take this and that combination of parameters. You feel like they need them, even if they don't know yet. And all your classes are of course final: your word is final; who can improve your masterpiece? No human alive can do it. Yes, you have an interface, it is XXI century, for God's sake. And you implement it right away, that's what you class is. And implementation of an interface. So you call it (interfacename)Impl. If anybody else dares to implement the same interface, they'll have to call their meager implementation (interfacename)OneMoreImpl. If they dare, because there can be just one good implementation of that interface, right?
Yeah, and you have to reimplement the whole tree, because some arrogant bastards from someoneelsesopensource.org had declared all their classes final. Besides, they use reflection, enumeration, vectors and threadlocals. You also did use enumeration and vectors in the previous version of your great library, but now is the time to rewrite everything. Well, and the users have to wait until the new version is released. Because of all those nasty problems with Date and Timestamp incompatibility in java5. It just takes time to produce a great product.
Then you wait for a couple of hours while they are "preparing your room". Then they take you to your room. A minor hassle (they took your luggage to someone else's room, and that someone else already hung "do not disturb" poster on their door), and you get inside. Half an hour later they allow you to use restroom and turn on the tv. Yes, they'll wake you up in the middle of the night, because it's starting to rain outside, and they need to check whether you closed your windows. They will also offer you a drink. Room service, that's how it is called. The manager of the hotel also announces that theirs is the best hotel in town. And that they have the best team in the country, and the best towels in the world, please use them sparingly, save the nature. You are not allowed to use your own shampoo, because it can be bad for your hair.
Well, you all recognize the pattern.
Now... suppose you are on the other side, and you have customers. How you treat them, depends on your goals. If you own the company, you love your Customers Bringing Money. You do not let them wait. You make them happy. You make them want you. You are a miracle, you do wonderful things. Whatever they want, you do it (except sex, it's illegal).
But... if, say, you are a manager of a small team of guys, and you a) want to get rid of some of them, and b) prove to everyone that your team is the most important, what do you do then? You tend to make your customer a little bit unhappy. Of course it is all the fault of that bad guy that is totally out of control. He does what he thinks is right. He had introduced a feature that, although some customers think they want, may make the whole application too error prone, half a year from now, and this feature definitely was not in the plans at all. Also, if nothing breaks, nobody notices you, you are transparent and invisible. How does the higher management knows you need something, say, to grow the team, to make the product more mature? You have to be a squeaking wheel. That's why your application should break regularly, and that's why your customers should complain.
Now you are writing something, say, a Java library. Your brothers and sisters, programmers and programmers, are going to use it every day. Your purpose is to make them happy. But you have your principles, right? You will never, never, never use reflection, because it is not kosher. You rather include 10 different methods that take this and that combination of parameters. You feel like they need them, even if they don't know yet. And all your classes are of course final: your word is final; who can improve your masterpiece? No human alive can do it. Yes, you have an interface, it is XXI century, for God's sake. And you implement it right away, that's what you class is. And implementation of an interface. So you call it (interfacename)Impl. If anybody else dares to implement the same interface, they'll have to call their meager implementation (interfacename)OneMoreImpl. If they dare, because there can be just one good implementation of that interface, right?
Yeah, and you have to reimplement the whole tree, because some arrogant bastards from someoneelsesopensource.org had declared all their classes final. Besides, they use reflection, enumeration, vectors and threadlocals. You also did use enumeration and vectors in the previous version of your great library, but now is the time to rewrite everything. Well, and the users have to wait until the new version is released. Because of all those nasty problems with Date and Timestamp incompatibility in java5. It just takes time to produce a great product.