As it is, if you choose to stay, you may ask for a definition of 'productive' that they're using against you. Is it lines of code? Time to get 'feature x' 'live'? Something else?
Once you have a definition, quantify the issues you're seeing - the number of bugs that are introduced by 'fast' developers is probably a prime candidate. Ask that bugs be documented - either over a short time period or just outstanding bugs everyone knows of.
Get everyone to understand that speed != quality, and that getting stuff done 'fast' is most likely a false economy. If you can get everyone or almost everyone to agree on some of those basics, you can then propose some new processes and measure the effect.
None of this will be quick, and it might not be adopted at all. But... I'd suggest documenting this dispassionately, no naming of names or pointing of fingers to specific people.
If you are having problems getting up to speed, anyone else probably would as well, so even if they decide to fire you, they won't get anyone else to be as productive. That's probably not actually true - it would depend on how they measure productivity. If it's just a matter of people throwing code out in to production without worrying whether it works or not, then yeah, someone else might be more productive than you. But it is a false economy over the long haul. Also, any new person coming in has a huge learning curve, because there's institutional knowledge gone by not having documentation, unit tests, etc.
If they really truly do not see that, it's probably better for your own sanity to find something else. But given the job situation, do what you can to make your case without stepping on anyone's toes.
Don't just quit, but start looking hard for something else. This place is hopeless; neither the developers nor management have a clue.
Then you'll have improved the culture, saved your job, and achieved a promotion. Any of your peers who can't handle it - well, that's too bad. Often, although they may not realize it, people WANT to be told what to do. (That may even include your managers...)
If that fails - THEN quit ;-)
a) Be quiet, and try to be as productive as you can.
b) Look for a job, then quit.
c) Look for a job, and while you're looking, make a first approach to the most receptive management or near management member you can think of. Maybe lunch or beers. Give him a non-emotional, short executive summary of the problem and its consequences. If you get a positive response and you think he understood (pick your manager carefully for this), consider how to cautiously proceed.
All three choices are equally valid. c) is obviously complicated and risky, so you have to consider (among many other variables) whether you care enough about this company and your relationship with it to try; whether the entrenched are "know it alls" or are they willing to learn and be better; whether management are managers or slave drivers; whether you can afford a period of unemployment. In other words, is it worth the risk.
There are likely other companies that match your goals better than this one.
Instead, do the best job your can, while accepting that you can't turn this company around. Be humble: don't tell others they're wrong all the time (even if they are). Be helpful.
At the same time, look hard for another job.
def double(x):
return x+3
BUG REPORT: double(4) returns 7 instead of 8.Fixed:
def double(x):
if x == 4:
return 8
else:
return x+3 def abs(x):
return x
... where adding the 'if' seems appropriate :)The English bible says "The meek shall inherit the earth." My understanding is that in French it says "The nonchalant shall inherit the earth." You influence culture every minute of every day by your behavior. Doing so consciously will likely make other people uncomfortable. It can make enemies. But "challenging" it is not the only path.
Peace.