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.