You will be working in a high-performance computing / near real-time environment.
LOCATION
Ann Arbor, MI area
For the right candidates, relocation assistance is available.
COMPENSATION
Up to 100K (depending on skills and experience)
Our client offers an excellent comprehensive benefits package including 401(k) retirement plan, Flexible Spending Account and tuition assistance.
EDUCATION
A Bachelors degree in Computer Science or a related field is preferred. But in lieu of a degree, extensive work experience developing complex engineering applications is acceptable.
REQUIRED
- The primary requirement is a strong background in C++ or Java.
- Because our client is a U.S. Department of Defense contractor, you must be a U.S. Citizen. You must be eligible to receive a TS/SCI Clearance within 18 months.
WOULD BE BENEFICIAL
- Familiarity with XML- not just what it looks like, but how to represent things in it cleanly as well as how to use open source libraries to parse it and validate it against a schema.
- Experience writing multi-threaded code on a big memory machine or figuring out an efficient way to distribute work across a cluster of machines.
- Experience and passion for optimization, numerical analysis, and/or modeling.
- Familiar with version control (our client uses Subversion and git in some complicated ways), issue tracking (they use Trac), and automated builds (they use Jenkins)
OVERVIEW
- Our client is a major supplier of weather information and remote sensing intelligence with customers including commercial and governmental organizations in defense, agriculture and energy.
- They are a leader in remote sensing technology and image processing. They enable users to get and process imagery from sophisticated satellites.
- This position involves working with a massive C++ codebase, and you must be willing to dive right into it. This is primarily a heavy duty image processing code that crunches on big images, so it's threaded throughout and optimized for memory and/or speed depending on what's needed. Don't worry about needing to be an expert on the image processing nuances from day 1.
- Some days you'll be examining outputs, notice a problem, and need to trace through code to see what's going wrong. You must figure out a quick way to hack a one-off program together to isolate the section of code in question so you're not spending all day waiting for something to run. After the problem's solved, you'll want to add an equivalent unit test for it so you don't run into this again down the road.
- Other days you'll be designing a brand new component. First, you've got to work with the image scientist to figure out what the component is supposed to do. Then you've got to work with the software team to figure out what components you already have that you can reuse, how to make this new component flexible enough that you can reuse it, and how to make this code run fast.