These are some leadership principles that we espouse for achieving greatness in software development.

Collaboration

We believe that the best results are achieved when a strong team of software developers work together toward clear goals. In such environments, information and ideas flow freely, multiple solutions are proposed, evaluated, debated, and ultimately decisions are made and implemented. Encouraging and developing such an environment requires leaders to solicit and demonstrate the other skills on this page.

Respect

Respect for the individual is key to developing an environment where people trust each other. Knowledge workers have to feel valued. The way a leader treats those who report to him or her is an indicator of the leader's true character, and does not go unnoticed by other employees. A good leader can fire someone and still let them keep their self esteem. A good leader makes everyone feel that their contribution is critical to the mission.

Robust, open dialog

Leaders must exhibit openness in their discussions in order to get the same in return. A software leader must be strong enough to know he or she doesn't have all the answers, and invites challenge of all ideas, including management ideas and objectives. Failure to understand decisions and objectives is the leader's responsibility to rectify, and encouraging open dialog will surface those areas that are not understood and why. Moreover, such dialog will uncover problems that need to be addressed. Ask yourself, "Would you like to know the truth, or would you like people to tell you what you believe is true?"

Ownership & accountability

The software leader wants to establish an environment where it is clear what went wrong and why, in order to learn from it. Failures are learning opportunities and the only occasion for punishment is a failure to learn from one's mistakes. By establishing who is accountable for what, with as much clarity as you can articulate, employees will do their best to not fail. Failure must be analyzed and there should be no negative consequences for first time failure. First time success should be celebrated and rewarded.

Organization Design

Each organization has to be clear about its objectives, and each individual in the organization has to know what they are accountable for and not accountable for. The Adizes PAEI model discussed elsewhere provides an excellent framework for listing all the required roles in an organization. Decide what roles are needed for the organization to be successful first, and then decide who fills which roles based on the best choices for the organization first, and the individual second.