A managing director of a company telling to 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 of time to learn java. Then assign the work and put 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 to finish their work.
A Delivery head telling to a team lead that
Why the project get delayed? If you allocate the work to your developers and put a deadline they should complete it on-time. If they can't we don't need them and we can terminate them right away".(The team is a one year experienced java developer and two 2 months experienced fresh graduates, and still nobody knows what are the requirements for the project).
A delivery head is telling to a senior developer that
I will give you 3 fresh graduates and i want to build a portal that looks like igoogle in 2 months. Just assign the work and put a deadline. They will complete it.(Those 3 fresh graduates just know about computer programming in theory and they haven't write HelloWorld program yet).
I know not all manager think like this. I have worked with many good managers who takes care of developers very well, sit with the developers when it needs to work in late nights, arranging dinner and drop him at his door steps at 2'o clock in the midnight. I know managers will have much more responsibilities 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 the developers as machines.
A project delivery is not solely depends on either developers or managers. It is a team work. Everyone should understand the importance of others contribution and treat properly.
Putting 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 on UI development, some are interested on Back-end Server side coding and some others are much more interested on Database programming. If any developer is interested in any particular area allow him to work on it. You can get maximum productivity from him as 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 has to communicate their design approaches, 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 build confidence on himself. If you don't give any feedback promptly and you did it on year-end appraisal only there will be no use. Give timely feedback and allow give a chance to improve.
4. Appreciate the good work:
When a developer did a good job it is the managers responsibility to let others know about it because all the developers may not be good at marketing himself. A simple congratulations email or a ThanksCard 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 suggest 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 the development time drastically which is saving lot of money to enterprises. Some other technology freak's(Gavin King) thoughts on database programming using java created 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".
Hi Siva, I've discovered this blog only a week ago and have started following it. I like most of the articles here, they are all thoughtful and very useful. keep up the good work.
ReplyDeleteHi,
ReplyDeleteThanks for your feedback. If you can tell me what kind of articles, tutorials you are expecting It would be helpful for me to write which might be helpful for many others.
The article is so good that i feel like showing it to one of my manager who thinks developers are inhuman
ReplyDeleteAgain appreciate really good articles.
Hai siva,
ReplyDeleteNice article :)
Hi Siva,
ReplyDeleteMy company manager's are also behave exactly like as you written. Good article...All managers must read this article...
keep write the articles..
Yours
'A'
Hi Siva,
ReplyDeleteIt is really nice article. The most common mentality of most of the manager is "deadline based" and "Needs to be Done" approache. Which is absolutly not works in all the cases.
Excellent lessons for those who are still saying "Resources" instead of "Developer"
Thanks
Madhav Vyas
Hi Siva
ReplyDeleteWhat you wrote that 100% fits to most of the Managers.
They dont care whether the project requirements are clear or not,does team even understand or visualize the project as a whole. they like to give "deadline". They only know big jargon's to use in front of developers.
If some junior try to give a suggestion to senior which is very good in reality. senior feels unsecured and complains to manager that his junior is self praising. that creates motivational problem for junior and he search the company where someone can understand him. due to this reason we can see big attrition ratio in IT compare to other sectors.
Hope these owners of company and so called managers will understand someday and contribute in making balanced environment for all.
Thanks
Vishal Pardava
Hi Madhav Vyas,
ReplyDeleteI think you forgot to add the suffix to "Needs to be Done". It is "Needs to be Done by end of the day" :-) :-)
You are correct,one day should come that managers called the developers as developers and ask for timeline not deadline.
Hi Vishal Pardava,
ReplyDeleteI too face this junior-senior issue when i was a fresher. When i questioned a senior developer why do we need 12-tier architecture(yes you read it correctly, it is 12 tier...each layer will call next layer passing the same parameters from Action to DAO, in between we have Delegator, Builder, ServiceLocator, Processor, blah blah blah...).
I hope the great dream "owners of company and so called managers will understand someday and contribute in making balanced environment for all" will come true someday. :-)
Hey siva. Very interesting and amusing. As a former High tech employee I totally understand what you are talking about. But it's not up to us to make a change. I guess things work the way they should. Otherwise the entire industry would be blown to bits.
ReplyDeletehow to handle the multiple requests in single action springmvc3.0
ReplyDelete