hoernchenmeister wrote:
I already mentioned the "redesign" question, but my superior wasn't too happy about it. Money was spent and I guess throwing it away would be something "evil" because of that.
Maybe your "superior" does not understand how to be responsible for money.
"Money spent" is not a valid argument. I hope you understand it yourself. Say, one has two options:
- Throw out the rotten code, this way admitting that money was spent for nothing; admit they are lost.
- Pretend that money was reasonably spent (perhaps to protect "authority" of the one who made the decision), enforce using it, and, as the result of it, waste a lot more money, for your and other's salary, for costs involving undelivered product, for delivering not working solution and dealing with the consequences.
And now think, who is really wasting money?
Here is what you should realize:
First of all, one of the most important qualities of an engineer is understanding such thing as
anti-pattern, ability to identify and prevent or overcome them. At this moment, we can talk about the class of anti-patterns called "organizational":
http://en.wikipedia.org/wiki/Anti-pattern#Organizational[
^].
Which one? This is a question. It could be just incompetence, and you need to test this person for being technically qualified for making the decisions like the one in question (yes, you need to, you). Alternatively (or in combination with the above), it could be this anti-pattern, closely related to the issue of "money spent":
moral hazard: "Insulating a decision-maker from the consequences of his or her decision":
http://en.wikipedia.org/wiki/Moral_hazard[
^].
Now, what can you do? There can be options. You should think thoroughly and not jump to conclusion right away. You need to test this person for ability to listen to people and to make quality decision (yes, you need to, you, nobody else). If you clearly and hopelessly identify one of the anti-pattens, those discussed above or close in their hopelessness, and you are quite positive that you cannot expect something better, and if you consider yourself a decent worker with dignity, you will need to make a last step and…
get rid of this person.
How? 1) You can wait and see what tends to go on; the world if far from perfect, but ultimately right things happen; this person may appear unsuccessful and leave the company; it really happens in real life. 2) Leave this team or this company yourself. It might be a difficult decision, but the alternative is quite interesting: consider
if you are ready to waste years of you life on trash and only lower your skills and reputation, or you would prefer to grow and move forward.
Last note: if you make a decision to wait and work in a nightmare working or moral conditions, do it consciously. How? Try to use this time working for yourself, not just for company. First of all, try to use this time for learning something really useful. For example,
learn how not to write similar code.
[EDIT]
Please also pay attention for out discussion with Ron, in the below comments. His advice is very good, this is another real option. You can choose to rewrite the code anyway, and to do this underground. I tried to explain why it can be a good decision.
—SA