Again, again and again; developing proficient programs does not depend on your only technical skills but you should have some tools that help you in that
1- You should work on reputable OS like my beloved OS Microsoft Windows XP.
2- You should work on reputable IDE like Visual Studio 2005/.NET 2003
3- First and Second points in brief you should work on Microsoft products to make useful from the INTEGRATION they support to developers, only developers who work on multi-OSs or multi-IDEs know the difference between Microsoft and other technologies(SUN, IBM, so on)
4- Mirror, yes while developing new application you should look to yourself to discuss something with yourself like mmmmm, should I make this class abstract or base class what a datatype should I use in that column believe me you will find someone shares ideas with you and you won’t feel lonely :D
5- Sure, your girl should have a role in your work you should put her picture in front of you, that if you became so angry from something like your program hiiss (has fatal and logic error) or you fed up your boss you take a look on her beautiful eyes, you would feel something and you would have ability to debug and tolerate your silly boss
6- Telephone, only if you work in team, to call member from your team and curse him/her if they did something wrong (team leaders, software designers and software architects) included, you can curse them do not scare :)
7- Mobile, do not call your team from your mobile, you will be mulcted, but you should have a one to call your girl that misses you and you miss her, sure 24 hours/day and 30 days/month you coding, what a pity!, you have no time for her!!!
8- Paper and Pencil, never ever begin any developing for a program (small or big) on computer directly, you should decide on paper how will life move.
9- Working in clean and comfortable place.
10- I don’t know what else???! So I'll let you tell me your opinion
Thank you for reading