Statement of Work
We are developing a
software application that will emulate the production version of one of the most
sophisticated simulation models. This Emulator will serve two purposes:
1. Supporting
research and development via rapid prototyping of new model ideas proposed by
economists
2. Testing
the computational accuracy of new releases of the production version
implemented by financial engineers
To help develop the
Emulator, we need to contract two software developers. The work that the
software developers will contribute to includes:
· Gathering
requirements
· Designing
software
· Writing
programs and modules
· Building
test cases
· Writing
documentation
The model to be emulated
has seen multiple releases over many years. Its code base is large (hundreds of
thousands of lines), and its myriad components are documented in varying levels
of detail. So, the job will comprise elements of exploratory programming
and software design as well as more routine software development activities.
Contractor Qualifications
Because subject matter
expertise will be provided by staff, scientific programming and software
engineering skills are much more important for these roles than subject matter
expertise.
We have decided to use the
Python programming language for this project. Candidates should have advanced
skills and real-world experience with Python in all or many of the following
programming domains:
· Scientific
programming (with the Numpy, SciPy, and Pandas libraries)
· File
processing and text munging (CSV, XML, regular expressions, etc.)
· Interfacing
Python with lower-level languages such as C++ and Java
· Sub
processing, threading, multiprocessing, parallelization
· Iterators,
generators, coroutines
· Object-oriented
programming
· Meta
programming (meta classes, decorators, descriptors, etc.)
· Windows
and Linux platforms
We are using the Anaconda
distribution of Python to manage downloading and installing Python libraries
and tools. Familiarity with the Anaconda distribution and the conda package
manager will be helpful.
Software development tools
we are or may be using include:
· Documentation
tools such as Sphinx
· Testing
frameworks such as nose, unittest, pytest, doctest, etc.
· A
distributed version control system such as Git or Mercurial
· The
IPython shell
Contractors
working on this project will be expected to advise staff on the design of the
software application, the choice of some development tools, and the adoption of
best Python practices for scientific programming.
Email your resume to princy.jebamalar@insigmainc.com
No comments:
Post a Comment