Friday, May 9, 2014

Python Emulator Developer in Mclean, VA

         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