Tuesday, March 30, 2004
The pragmatic, socializing programmer
Programmers have always been described as being nerds or geeks with close to zero social skills. They have been said to be more comfortable with machines than people. It struck me that if there exist programmers that behave normally, people are more akin to think that they are not as competent in their craft! To put it another way, the more social skills a programmer has, the lesser he or she is good at his/her work. I sincerely hope people do not gravitate towards this opinion, if they haven't already done so. With the emergence of terms like "pragmatic programmer", the tide seems to be turning. Dave Thomas and Andy Hunt talk about programmers that work pragmatically, ie churning out the best work with good, easily available tools so that the software created actually helps to automate business tasks, and makes the customer see actual value in creating software.
I sincerely believe that if this approach is not taken, the programmer will not be seen as an asset anymore to the organization or customer. In fact, I think that one has to go beyond this and also set right the "people" aspect. By this I do not mean social skills outside of the workplace. I am referring to the ability to be as comfortable talking to users and managers as to other developers. Granted this is a tough task. However, some things make this easier - like thinking about the big picture of what your program is trying to accomplish. Once one starts thinking that way, it is easier to be more social. Here are some things that might help to be that way:
- When talking to users, give them the impression that you can do anything with the software. That, in most cases is not true but it will at least get them comfortable enough to talk about what they really want - and only they know what that is. A customer who feels that you really want to give him value will be more willing to negotiate on features and times.
- Make it a point to frequently demo the software - like every week or two weeks so that the customers get reassurance and also get comfortable with what they will be getting.
- When talking to managers, be clear about what you can estimate right now and need time to estimate. Your estimate will be off many times but the key is to not be off by say 100%. This will be easier when you get more familiar with your application.
- Give frequent status updates to the manager even if they do not ask - either through an informal chat at the coffee machine or cafeteria. If that's a challenge then there's always email.
Of course all this is a way to broadcast to the public that you are working. Keep in mind that all this is utterly useless if you don't actually do what you say! The ultimate indicator of your "worthiness" to a company is frequent output of "good-quality code" - or as Ron Jeffries says "clean code that works".
Programmers have always been described as being nerds or geeks with close to zero social skills. They have been said to be more comfortable with machines than people. It struck me that if there exist programmers that behave normally, people are more akin to think that they are not as competent in their craft! To put it another way, the more social skills a programmer has, the lesser he or she is good at his/her work. I sincerely hope people do not gravitate towards this opinion, if they haven't already done so. With the emergence of terms like "pragmatic programmer", the tide seems to be turning. Dave Thomas and Andy Hunt talk about programmers that work pragmatically, ie churning out the best work with good, easily available tools so that the software created actually helps to automate business tasks, and makes the customer see actual value in creating software.
I sincerely believe that if this approach is not taken, the programmer will not be seen as an asset anymore to the organization or customer. In fact, I think that one has to go beyond this and also set right the "people" aspect. By this I do not mean social skills outside of the workplace. I am referring to the ability to be as comfortable talking to users and managers as to other developers. Granted this is a tough task. However, some things make this easier - like thinking about the big picture of what your program is trying to accomplish. Once one starts thinking that way, it is easier to be more social. Here are some things that might help to be that way:
- When talking to users, give them the impression that you can do anything with the software. That, in most cases is not true but it will at least get them comfortable enough to talk about what they really want - and only they know what that is. A customer who feels that you really want to give him value will be more willing to negotiate on features and times.
- Make it a point to frequently demo the software - like every week or two weeks so that the customers get reassurance and also get comfortable with what they will be getting.
- When talking to managers, be clear about what you can estimate right now and need time to estimate. Your estimate will be off many times but the key is to not be off by say 100%. This will be easier when you get more familiar with your application.
- Give frequent status updates to the manager even if they do not ask - either through an informal chat at the coffee machine or cafeteria. If that's a challenge then there's always email.
Of course all this is a way to broadcast to the public that you are working. Keep in mind that all this is utterly useless if you don't actually do what you say! The ultimate indicator of your "worthiness" to a company is frequent output of "good-quality code" - or as Ron Jeffries says "clean code that works".
Subscribe to Posts [Atom]