Software Engineer I, II or III
UNAVCO, a non-profit membership-governed consortium, facilitates geoscience research and education using geodesy.
For nearly three decades, UNAVCO has spearheaded the utilization of cutting-edge technology while providing robust operational support for researchers exploring tectonics (earthquakes, volcanoes, plate tectonics), the deformation of ice, the Earth's response to ground water, sea level, and aspects of the hydrosphere, and atmosphere. Our instrumentation toolbox includes high-precision GPS, LiDAR (Light Detection and Ranging) for Airborne Laser Swath Mapping and Terrestrial Laser Scanning, InSAR (Interferometric Synthetic Aperture Radar), and more. We host the NSF’s Geodesy Data Archive and provide cyberinfrastructure to support the full data life cycle and interoperability with national and international Earth science Data Centers.
Our long-term success depends on maintenance of a forward-looking, diversified workforce that draws on and cultivates talent across the demographic spectrum of gender and ethnicity, across international boundaries, and across scientific disciplines.
We invite candidates to review the position description below and to submit an application by going to https://unavcocareers.silkroad.com/. This position will be open until filled; screening date begins 7/2/12.
Summary of Job
Responsible for design, development, implementation, testing, and documentation for components of software systems that support three or more of the following functions: data collection, flow, archiving, database interaction, web-based data search and access, interoperability, quality control, formatting, pre-processing, and visualization.
Internal: Independently performs assignments under general supervision, guidance and review. Consults supervisor or team lead concerning unusual problems. May review the work of more junior staff.
External: Occasionally gathers requirements or obtains feedback from community members as users of web applications or on interoperability of UNAVCO software components. Provides user support. May work in teams with peers at other institutions.
Essential Job Functions
- Obtains and analyzes software systems requirements.
- Designs, develops, implements and supports moderately complex software systems. Tests and documents software systems. Follows internal software development, testing and documentation methodologies, policies and best practices.
- Participates in joint analysis and design activities with other staff in defining directions, standards, and timelines and identifying key technologies for evolving moderately complex software systems.
- Continually works to acquire and improve skills relevant to program.
- Keeps abreast of current best practices and trends affecting software systems.
- Contributes to authoring technical reports and publications and may present at conferences.
- Occasionally travels offsite as job needs dictate.
- Other duties may be assigned as necessary for the successful operation of the business.
The specific tasks to be addressed by this position are:
- Provides software development as part of a team in support of UNAVCO’s role in several multi-institutional efforts to build data discovery, access, distribution, and processing capabilities using Service Oriented Architecture.
- Collaborates with data engineers and scientists on database schema requirements and designs and implements schema elements.
- Develops web tools, forms and reports supporting population of databases and distribution of data and metadata to UNAVCO’s global network of researchers and external data centers.
- Participates in the team that develops and supports software for new and evolving UNAVCO projects in archiving of data and products for GPS, InSAR, LiDAR and other data types.
- Collaborates and consults with the Web team on Web interface corporate standards, user-experience design, and Web site integration.
To perform this job successfully, this individual must be able to perform each essential job function satisfactorily. Reasonable accommodations may be made to enable individuals with disabilities to perform the essential functions.
The individual hired must have skills (basic, proficient, or advanced for levels I, II, or III Software Engineer respectively) and recent job experience in these areas:
- At least one relevant primary language and knowledgeable in another.
- Experience with a major database management system and software techniques for database access.
- Knowledge of web application design and construction. Understanding of HTML and XML.
- Good understanding of object-oriented design and development, relational databases and database design, agile development, and continuous testing, with experience in regular application of these techniques to development products.
- Proficient with integrated development environments and source code control systems.
- Proficient with at least three relevant development platforms and knowledgeable with at least two others.
- Proficient working in UNIX-like environments.Ability to work independently with minimal supervision to develop and document complex software throughout the software design and development lifecycle with good productivity and low error rates.
- Proficient at establishing priorities and solving problems independently within a context of well-defined programmatic requirements. Skilled in collaborating with other members of a team.
- Problem solving skills with their own software as well as an ability to address problems in other's software.
- Ability and motivation to learn new skills with software tools and acquire new software engineering knowledge and techniques.
- Good interpersonal skills working with peers, supervisors, and in planning team-oriented projects.
- Very good written and oral communication skills in English.
The additional specific skills/skill levels required by this position are:
- Object oriented software development with Java or C++ using class hierarchies and abstraction
- Scripting with Perl, Python, or Ruby
- SQL and programming queries using database access with JDBC or Perl DBD
- Web services development utilizing technologies such as REST, SOAP, XML, JSON, HTTP, Tomcat, and Axis2
- Software development for networked UNIX environments, preferably with Solaris or Linux
- UNIX shell scripting
Desired Skills and Knowledge
- Subversion or similar source code control environment
- Oracle database management system
- Postgres database management system
- Spatial databases and spatial queries
- Object-relational mapping techniques
- Web development using Flex with ActionScript
- Web development with PHP
- HTML5 development
- Adobe BlazeDS Java remoting
- Knowledge of GPS, Geodesy or Geophysics/Geology
Bachelor’s degree in Computer Science or Information Systems and and a minimum of two years (I-level), four years (II-level) or six years (III-level) software development experience OR equivalent combination of education and experience.
Ability to use fingers and repetitive motion on computing and communication devices; see well enough to use computer effectively; and both hear and speak effectively on phone. Must be able to sit for sustained periods of time.
Ability to understand, remember and communicate routine, factual information. Ability to organize and prioritize own work schedule on short-term basis (longer than one month). Ability to make decisions which have moderate impact on immediate work unit. Ability to compose letters, outlines, memoranda, and basic reports and/or to orally communicate technical information. Ability to compute, analyze and interpret numerical data for report purposes.
Depending on the successful candidate's education and background, they may be hired as a Software Engineer I, II or III. Flexible work arrangements may be available.