When we do our interviews with programmer job applicants, we always ask for the best trait of a great programmer. Mostly we hear logic, resourcefulness, patience or diligence. There are really no right or wrong answers in that question but over and above those qualities, an important aspect is the habit which an organization can only see within the person when they are already on board.
Aside from technical skills and logic, below are the habits that we teach to our team:
1. Good Time Management — Tardiness is one of the issues of any company. As a programmer, sometimes we tend to exceed working hours to finish tasks and go to work late the next day but we always forget that following working hours are really important to achieve balance, be in sync with customer availability and also with the team access to its members.
2. Thorough Understanding on Customer Requirement — a single user story phrase is not enough. A great programmer should have the diligence to understand and decompose it into detailed technical tasks and/or sub tasks for the project to have a close to accurate estimates.
3. Full Algorithm before Coding — use cases, pseudo codes and flow charts are very vital in software development. A great programmer should not be so excited to code right away but instead, he or she should complete the algorithm first. Coding in effect will only just be an encoding task.
4. Understands and Helps Define Acceptance Criteria — test scripts on a high level are defined by the product owner but a great programmer must be able to write technical test scripts and aware enough of the ramifications of skipping these.
5. Exhausts All Resources — what if you’re dead end? A great programmer is a resourceful person. One who is able to ask its co-member, or team leader. One who is skillful in searching the Internet and who has the patience to try and try. Surrendering will never be an option.
6. Diligent in Acknowledging Correspondences — soft skills are a common problem for us programmers as introverts. But a great programmer is aware of this weakness and should be able to have the initiative to improve oneself and execute customer service philosophies of the organization.
7. Proactive — a good programmer is more proactive than reactive. He or she should have the initiative and concern to improve processes and enhance software development productivity tools such as SVN/GIT, agile apps or anticipated software bugs.
At the end of the day, whether you are employed or freelance, software development is customer service. A great programmer understands the business value of every tasks for one to feel authentic empathy in delivering any service.