Update: fixed some spelling mistakes.
Today I recieved an email from 'barcamp_delhi', one of my subscribed mailing list on Yahoo Groups. It was about a friend of someone asking about a problem existing in the mindset of "Indian Programmers". It was a long email, but the whole point is summarized in just one paragraph.
She(some one not from India, actually China) had observed that in India Guys have this strange notion that Coding is only real test of knowledge . so untill your manager can't sit with you and punch-in a syntactically right code . your team will not listen to you . design, UI,Usability,Business Logic are looked down . guys who write code consider these things as gimmicks and want to do Pure Computer Sc which in there opinion is only Prog /coding .
It is funny and ironic, at the same time. Funny because this person(who said the above verses) is some one who is actually leading a team of tech guys and Ironic because non tech managers normally misunderstand geeks too much.
The root of all evil:
Basically, almost all geeks and nerds are creative and artistics people, who know that they are creativity. This creativity, along with self conciousness about the same, brings along arrogance. So it is quite natural to look down upon people from other fields mostly management. Now, managers will argue that management is also a creative job. I do not disagree, but it is like my "field of art is better than yours" situation. Painter think they are better than scluptors, scluptors think they are better than wood carvers and so on. But, this a universal problem, not with Indian programmers(until and unless you mean Indians are better programmers ;)).
But, problem lies in the management of technical guys(I have to say that). Most of the time, geeks are managed by people who don't even know the 'P' of programming. Even worse most of the time, they do not know the real power and limitations of technology. Managers set non-sense deadlines on programmers, keep interuppting them by the famous Project Manager punch line "What is the status", keep insisting on mailing the daily status reports when same information is already present in support tools like issue tracker, project management app etc. This is what leads to all the problems.
Design, Business Logic solvers are looked down upon by programmer, only when design, UI, usability etc are done by some one who are morons when it comes to programming. By the way, what makes you think that a programmer who can convert you design into code cannot design and develop business logic.
The solution:
Best solution to this problem is to "let the geeks be happy in their geekdom". Do not try to tell them there are people better than them in other fields. Such a faith keeps things going and your programmers happy and super charged. In other words, "Do not break their moral".
Try to get a project manager who has a background in technology, even better if he is a programmer himself. That way your team can always look up to him. It is a kind of satisfaction to have someone on your team who know more than you and can help you if you get stuck. If your project manager's answer to every technical query is "I don't know, I am not a programmer", GOD help your team. Remember, we are programmers and we are the best community when it comes to learning fromeach other.
Let your geeks do the design and time estimate for their work. After all it is them who has to do it not the Project Manager. Your geeks are best estimators of time. Only bargain on it later when they come up with their designs and estimates. They will love your comments and most of the time accept them(if your comments are worthy). Trust plays an important role here. Trust you programmer, they will in turn trust you. Moreover, it lets your programmers feel that they are in control, means moral goes up, meaning productivity goes up, meaning quality goes up, meaning projects are on time, meaning clients are happy, meaning more money comes, meaning organization grows.
Remember, in software business, programmers are the most important assets, not your managers. It is comparatively easier to find good managers than good programmers.
Remember there are only to types of programmers, 'God' and 'Bad'. God programmer are futher categorized in beginners, intermediate, advance, expert, wizard, etc. Bad programmers are just bad. There is no such thing a beginner bad programmer, advance bad programmer etc.
In the end, to implement all these solutions, just get an agile development process set up in your organization. Take a look Extereme Programming. You will get all these benifits in one go.
What ever I have said above, comes from personal expereince from my running own company, XenSoft Labs(http://www.xensoftlabs.com) and from one of the best place to work at, Tekriti Software(http://www.tekritisoftware.com/), where I worked previously. People there, took care of all the above stated things very carefully and very "implicitly", without a single programmer ever noticing it. I, myself realized this when I started my own venture. Bieng implicit is very important. Don't go one touting the trumpet and boasting your programmer that you are taking care of them, make them feel it without ever saying a single word.
Moreover, there is a great essay on Eric Raymonds web page about managing programmers. Read it. Though, I do not agree on everything Eric says in it(thats a different story, altogether), you will still learn much more about managing programmers. There is another article for programmers, teaching programmers how to deal with managers. Make your programmers read it. But for god sake don't ask your managers to tell the programmers to read it and vice versa. You will make it sound bad. This is something a programmer's mentor should do(hope you have the mentoring system for your programmers).
powered by performancing firefox