The Heidelberg Collaboratory for Image Processing (HCI) is inviting applications for a full position as Scientific Software Developer. The HCI, jointly funded by the German Research Foundation (DFG), industrial partners and the University of Heidelberg, is the largest university-based research unit in its field in Germany. It offers a unique environment for fundamental image analysis research in the context of advanced applications in industry, environmental physics, and the life sciences.
The main objective of the new position is the transformation of cutting-edge research code into consistent and (re)usable software, mainly in open source. In particular, job duties may include to
- extend existing HCI open source software packages (see VIGRA, OpenGM, and ilastik for examples of our work)
- create re-usable C++ libraries from cutting-edge research prototypes
- ensure interoperability and platform independence of the resulting software
- support and advise researchers regarding software design decisions (e.g. choice of tools, portability, software architecture)
- provide and/or create common software infrastructure (e.g. data import/export facilities, automated build system, parallelization support, documentation generation)
- participate in the enhancement and maintenance of software test suites, manage automated test runs
- help establishing a flexible, agile development process with minimal overhead
- communicate well with researchers designing new algorithms and users.
Details will be defined in accordance to the evolving needs of all HCI partners and the specific skills of the successful candidate. He/she should have experience in several of the following areas:
The HCI offers a friendly, cooperative working atmosphere with flexible working hours. The position shall be filled as soon as possible and will be paid according to prior experience up to TV-L level E14. The position will be located in the beautiful city of Heidelberg and is available until end of October 2017, with possible extension.
- very good programming and software design skills, especially in scientific software development (implementation of advanced algorithms, knowledge of existing libraries, parallelization) and system integration
- advanced template programming and generic library design in C++ (required)
- use of high-level languages (preferably Python and Matlab) and interoperation between scripting and C++
- good knowledge of software development infrastructure (e.g. github, cmake, doxygen, cppunit) and support libraries (e.g. boost, hdf5)
- understanding of the mathematical background of scientific algorithms.