I suggest gaining more experience by joining or creating a friendly open-source community (focused on scientific computing, e.g., vtk.org, itk.org, slicer.org, paraview.org) and learning the ropes. Or as you say joining a research organization in the capacity as a junior programmer, or graduate student. Software skills are important but what might be more important is technologies, since programming languages come and go quickly. For example, understand how to basic 3D graphics works, and then study implementations on GPUs. Or learn algorithms for high-performance computing and then study tools like MPI or Boost to understand implementations.