1. Lack of proper communication, internally and externally, resulting to irate parties.
Sometimes people resolve to emails rather than sit down and talk, sometimes resulting to miscommunication, confusion or delay in response time.
2. No proper turnover and supporting documentation leading to a more difficult situation for the individual to whom the task was commissioned.
Lack of documentation leads to delay in resolving issues of the existing system since the developer has to read the code and understand it only technically, without any guidance on the business rules.
3. Immediate patches due to crunch time that doesn't really solve the problem totally.
I understand that issues have to be resolved at the soonest possible time. However because of the urgency of the matter and the developers are not given the chance to fully comprehend the problem in a more realistic timeline, patches are just patches and not full resolutions. Thus, the problem isn't really solved, only delayed, till it erupts.
4. Project priorities not set clearly.
I noticed that project managers of multi-project developers (handling simultaneous projects) don't even ask for each other's resources when there are deadlines on their respective projects, which makes the developers confused as to what project/tasks to prioritize. Developers are then harrassed and de-moralized in the process.
I know that there's no perfect company and these issues are present in any company's situation but I believe that the company can and will improve. I really appreciate your asking my opinion. I'm deeply touched and honored.