Write and test code, refining and rewriting and communicate with programmers involved in the project. research, design and write new software programs .