Finally you need to deliver DeveloperWrittenCode.WAR, not Manager'sManagerialSkills.zip
Some IT managers perspective on developers made me to write this post.
A managing director of a company telling a delivery head that "We need not worry about developers. If we go around the villages with a car and get the people who just completed their school and give him a computer with internet connection and then give 15 days to learn Java. Then assign the work and set a deadline, they will complete the work. We need not bother about Developers. All we need to care about is Managers, who can interact with the client and make the developers finish their work."
A Delivery head telling to a team lead that "Why did the project get delayed? If you allocate the work to your developers and set a deadline they should complete it on time. If they can't we don't need them and we can fire them right away".(The team is a Java developer with one years experience and two fresh graduates with only two months experience, and still nobody knows what are the requirements for the project).
A delivery head telling a senior developer that "I will give you three fresh graduates and I want to build a portal that looks like iGoogle in two months. Just assign the work and set a deadline. They will complete it. (Those three fresh graduates just know about computer programming in theory and they haven't written a HelloWorld program yet).
I know not all managers think like this. I have worked with many good managers who take care of developers very well, sit with the developers when they need to work late nights, arranging dinner and dropping him at his doorstep at two o'clock in the night. I know managers have much more responsibility than a developer. I know managers are responsible to give justification if the project delivery got delayed. But that doesn't mean that managers should treat developers as machines.
A project delivery does not solely depend on either developers or managers. It is team work. Everyone should understand the importance of other contributions.
Setting the deadline is the only way to make the developers complete their work? No.
There are some other approaches to keep the team members energy levels up and get the maximum productivity.
1. Observe their interested areas and put them to work on those areas:
Some developers are more interested in UI development, some are interested on Backend Server side coding and others are much more interested on Database programming. If a developer is interested in any particular area allow him to work on it. You can get the maximum productivity from him once he likes what he is doing, which always results in better productivity.
2. Give an opportunity to improve in his weak areas:
Some developers are very strong in technical aspects but poor in communication skills. Communication skills are very important as developers have to communicate their design approaches and any development issues to others. In that case ask them to build a good POC using his favorite technologies and explain the design and best practices he followed to his team. After doing this multiple times there will be definitely an improvement in his communication skills.
3. Promptly give feedback on his improvement:
It is more important to give feedback on his improvement which helps the develoer to build confidence in himself. If you don't give any feedback promptly and you only provide it on a year-end appraisal, there will be no use. Give timely feedback and allow the time to improve.
4. Appreciate the good work:
When a developer does a good job it is the managers responsibility to let others know about it because not all developers are not good at marketing themselves.
A simple congratulations email or even a thank you card might drastically improve the developers productivity.
5. Give the ownership on his work:
When a developer is capable of handling a module ask him to take up the ownership on that. This will be good for both the project and the developer. For that module you can have a single point of contact to track the progress and the developer may improve on how to design the module, architecture best practices etc instead of just coding to the design.
6. Listen to their suggestions:
Even though some developers have less experience they might have better ideas. Listen to them. If a developer suggests a new way of doing something ask him to prove that it will work by doing a simple POC.
A great developer's(Craig McClanahan) passion on technology gave birth to Struts which became the default web application framework for Java and brings up lots of job opportunities(Still there are lot of openings for Struts 1.x).
Another great developer/architect's(Rod Johnson) expertise on application development gave birth to Spring framework which eases the life of Java developers across the world and cut down development time drastically, saving a lot of money for enterprises.
Some other technology freak's(Gavin King) thoughts on database programming using Java created the Hibernate ORM framework which influences the persistence approach and became a default tool for persistence across the Java community.
This is the power of a developer. Feel proud to be a developer.
The last thing that I can say is "Finally you need to deliver DeveloperWrittenCode.WAR to your client, not Manager'sManagerialSkills.zip".