most software is coded as a stream of consciousness filled with half-understood constructs, scratched out mistakes and a vague sense of direction with lots of shortcuts and loops. conversely, most programmers seem to derive the most pleasure from the act of piecing together another developer's puzzle code to understand what they were thinking and why things work when they're 90% tape and glue to be exciting and rewarding, and lose sight of the fact that their actual purpose is to engineer solutions with good design and parts that do the job they're intended for.
i'm currently in a team where neither management nor the developers have the minimum level or technical competence to (a) get a job done well or (b) follow the most basic instructions when those instructions might assist them in achieving (a). i have agreed to keep my nose out of others' affairs (trying to insert some level of professionalism and make their jobs easier) and in turn i asked to be excused from working on anything where i am not the sole person responsible for the results. i was only barely more polite than saying: "if you want me to produce shit code, then that's what i'll do".
i'm a professional working with amateurs at every level; what these people are doing is closer to gambling than it is engineering. it takes me a fraction of the time to produce exponentially better code than these (wrong kind of) lazy bums, i'm on a low salary and until my papers are sorted out i'm locked in to putting on a (relatively) happy face and making the best of a bad situation.
i know one thing's for sure: from the minute i have an open permit, i'm done with working for a salary. it's contract or self-employment unless the incentives are impossible to refuse.