I agree that its wrong to be giving pay raises / promotions to employees solely based on who worked longer hours. Obviously, pay and promotion should be judged on the value delivered not the effort put in. However, in my opinion, great developers who build robust systems and leave at 5 are not necessarily hard working, probably just more experienced / competent. If you can get your job done by 5 while your co-workers are slaving away until midnight fixing bugs, whats stopping you from putting in another couple extra hours to deliver even more value to the company? Sometimes taking initiative and showing passion is just as important as being smart.