1) Dev/team leads do not have domain expertise. They don't have experience on most of the technologies used in the project (such as java, spring). Juniors end up finalising the technology stack as per their comfort. Dev/ team leads only try to help with their experience in age old technologies like cgl etc.
2) Extremely arrogant seniors. There is no system for work distribution and tracking. You will end up working for 3-4 bosses in parallel. Any one in your hierarchy can assigns task to you and dictate the due dates.
3) No professional code analysis , review and test procedures. There are no code reviews and there is no separate team for testing. So people complete their work and commit it to production directly. This leads to clashes and bugs more often.
4) Salary structure, promotions and increments not as per the market norms. 6-7 % increment for above average and up to 10% for the star performer of the department on an annual basis, So extremely low compared to private IT norms.