If there's only 1-2 layers between you and the CEO, then try and talk when him or her on a regular basis. Make an effort to remember what they are doing in life (perhaps he / she takes their kids to football practice multiple times a week). If you're in a larger organisation make an effort to become friendly with people outside of the Engineering chain of command.
Don't try to change it. Don't try and be part of the problem, it is not worth the punishment your self worth will endure.
Best solution is to get really good at whatever it is you do to the point where you hold the cards and they are the ones that are begging you to join them. Then you can dictate the work environment that you will put up with.
Or just start your own company and attempt to foster the work environment you wish you had for your employees. This is the path I choose and it is extremely rewarding - even though I don't make as much money as I could if joined the program.
It's not easy. With practice it becomes easier.
2. Work your butt off , get noticed and then quit to join a more conducive work environment.
3.Team up with colleagues and ask an immediate supervisor the same question you posted here. Ask them in a way that doesn't seem like you're complaining. You'd be surprised at what may come out of that conversation.
4. Above all , use the rationality principle , cut your losses and move on.