Ideally, a computational programmer should be able to: derive mathematical expression for physical phenomenon, implement it in the most efficient algorithm and data structure, and find edge test cases where program would need improvement. But due to complexity of each tasks, a computational team should be divided along the jobdesc. So, I propose a multidisciplinary approach to computational group:
- Math/Physics Guy — Someone capable of explaining the physical phenomenon as mathematical equation, derive a numerical scheme where error is minimized and can produce a stable result.
- Coder — Someone capable of implementing efficient algorithm and data structure to solve the discretized numerical scheme.
- Engineer — Someone capable of implementing the program into real-life application such as solid or fluid mechanics simulation.
Of course everyone who participate in the environment should master the basics of the three jobdescs. But in the long term there should be a division of labor to increase group efficiency and effectiveness in developing numerical simulation.
This is my two cent, please take it with a grain of salt.