.comment-link {margin-left:.6em;}

{Sajith M}

July 17, 2004

The environment required for you to be a Productive Software Engineer

For a written test in the hiring process, I saw this question:

Write in about 200 words, the environment required for you to be a productive software engineer. Your answer may touch the following points:
1. Supervision
2. Process
3. Measures

Hmm… I was thinking on this when I discovered that more than Supervision, Process and Measures I require some more basic thing to be productive. This would include things like some good coffee/Pepsi, a nice fast (fast means you don’t have to take a break while the compile happens) machine and so on. Anyway, I thought “Hey, not attempt answering the question?” and here is the end result that took me about 15 minutes. 

A software engineer to be productive requires a good work environment (related to work he is doing) and a good organizational environment (related to the organization he is working for).
 
Looking at the first part of the puzzle, an environment that is challenging (to the grey cells) and is also a fun environment – something that invites you to be there in the morning and you are not there just so that you can earn your salary. The direct conclusion is that the person has to be interested in the field of work and the projects. He should not feel that his talents are being wasted in this environment as he is not working on anything challenging.
 
After having put the first part of the puzzle in place let’s turn our attention to the second part, that is the organizational part – Processes, Measures and Supervision (??) The endeavor is to understand what would be a good environment in this sense.
 
Software is still very much an infant field and processes and measure have been a very new concept in the field and would take some time before it gets engrained in. However, the most important thing on this front would be to understand the fact that processes are fine so long as they assist people in doing what they need to be doing. If the processes become a road block, then it’s the processes that need to change and not the people. The processes should serve the people; if it goes the other way round it would be sure recipe for disaster.
 
Measure again can be very useful towards improvement and if applied incorrectly or if wrong measures are chosen it could be worse than no measures. Interestingly some very common measure (time worked, Lines of Code produced etc.) are really a very bad measure that does not indicate productivity. A good measure would be function points implemented.
 
And finally, there is the question of supervision. Supervision (as in a production line) is an impossible to achieve dream. What most software engineer would look for is not supervision; rather it is help and guidance. A project manager would therefore need to be a facilitator and not a supervisor or manager (Project coordinator might be better).
 
The understanding that software development (which keeps the developer happy) is something that is not the same as factory production line and the differences are important. If we attempt to apply the same methodology to this field that is very different, we could end up very badly. This was an attempt at identifying some differences and how they can be resolved.

0 Comments:

Post a Comment

<< Home