I'd like to apologize in advance for a lengthy problem description, however I am interested in the community's opinion and I'm asking this from the employer perspective.
My company deals primarily with software products aimed at insurance market which has secured us stable financial future for the upcoming 5 or more years, and since there were only 3 of us working at the start - we decided to expand our small IT company and area we work in and we began hiring about 1.5 year ago - and that's when the problems started. We are between 27 and 30 years of age, me being the oldest at 30 years.
The problem we're facing is lack of motivation and interest in our developers. People hired are offered excellent work conditions (in my opinion):
- high and competitive salary (2x the country's standard, one's able to get a car, a 2 bedroom apartment and sufficient leisure money and even save up)
- no education requirements except years of experience (we hired people with min. 5 years of exp.)
- there's no classic boss who yells at people, nor are there any repercussions and developers are welcome to dispute ideas and propose their own at any time
- We are not tied to a particular technology nor do we suffer from "older version" syndrome, we tend to adopt newer version of the software stack we work with, therefore new ideas, new methods are always welcome and encouraged
- We expect developers to work in teams promoting redundancy, we strive to have no "bus people" (people of importance who, if hit by bus, no one can resume their work)
The issue we're faced with is that trough award program we have (bonuses for successful project completion), we're not getting the results we need from our developers. Even though we have reading material bought and ready, there seems that no one cares to educate themselves and up their knowledge. The code produced is faulty, it's not even testable, and our latest project was almost cancelled due to sub-par production. None of the developers have any sort of personal satisfaction of completing the projects. The usual tasks we're involved with is UX, UI design (JavaScript), performance problems, parallel processing etc. which in my opinion is rather interesting but still there's underlying problem which people seem to "avoid" and that's that everyone have to write the actual code after they lay foundations to solve the problem, no matter how boring that might be.
Question is - how do other managers in IT companies deal with this kind of problem? We tried motivating people trough awards (more money essentially) but I'm slowly favoring the method of punishment and letting people go and hiring new ones. It seems overly aggressive and I'm afraid it might cloud the atmosphere we're trying to build. If anyone can shed some light or an advice, no matter how small, I'd be grateful. We're obviously young and would like to expand, however there's this barrier we're faced with and before expanding we have to come to terms with a team of this size before creating a bigger one.