Below are some of top "MUST HAVE" habits of a great software developer to ensure creating a world class quality coding product ::
1) Self discipline. So much bad code is due to laziness by developers who don't do what they know should be done.
2) Assume the code written doesn't work unless it is proven to work.
Don't assume that things will never fail. In other words, assume things will fail and provide for clean handling of it. Error messages reporting errors are required. Crash on error is unacceptable.
3) Hangs are unacceptable. All code should be bounded in time and an error must be reported if it runs over.
Do your own testing. It doesn't matter if you have a separate test group. Do your own testing anyway.
4) Never assume that a user will never do something with the code. Assume that a user will do anything and everything possible. Provide clean handling and error messages for everything not allowed.
5) The developer should insure that the code compiles with zero warning messages.
Always use a source code repository, even in a “team” of one person. The repository should be backed-up properly.
6) Never check-in code to a main repository that doesn't compile cleanly. Check-in to a branch repository for checkpointing or backups is ok.
7) Teamwork - few things are small enough or require so few skills that one person can do them well.
8) Discipline - do things right *all the time* if you want top quality.
Ability, Experience - one needs to learn on the job; they say you tend to get expert only after 10,000 hours at a skill.
9) Breadth - you need to understand other people's vision not just your own, or what you make will suit you and nobody else.
10) Luck - whether your idea or somebody else's, you need a good idea AND the luck to get it to market at the right time.
11) A good team - what you can't put toward the effort yourself, the rest of the team needs to supply.
12) Knowledge - especially of design patterns (and have to remember that they are giving direction, not the right solution) and frameworks
13) TESTS - they are prooving that the code works. He/she must write tests automatically without thinking: do I have to?
14) Digging in problems - it laverages the knowledge and gives him/her deep understanding of technology
15) Curiosity - to be up to date with other concepts
16) Document everything (tomorrow you do not remember what is in your head today).
17) Pay attention to what your customer - requirements analyst says and work with him/her. Do not assume that you know their needs better. It is their needs. Do not assume that your work is just writting code, it is also discussing your plans and results with your clients.
18) Always plan your next task and sketch a model of what you will build.
19) Always check on the internet for things you need. It is very rare that you were the first to need them. For every hint you get try to give something back to the community. If there is an open source project near your needs use it and expand it. It is better to focus on your new task than reinventing the wheel.
20) Always take some time to check if you need to use a new tool or programming language. A good programmer is not tied to a specific language, however he can be very good or specialized at one or more.
21)Proper error/exception handling... make sure that app should not crash
22)He/She should be 'Continuous Learner' and upgrade their skills in respective domain time to time..
23)Last,but not least, Think 'out of box'. Smart people can easily entertain new ideas, thoughts, and ways of doing things.
Cheers!!!
Ujjwal Soni
-- In Dreams And In Love There Are No Impossibilities