Software Engineering - Intermediate Software Developer
Plays a key role in the architecture, design and implementation of multiple software applications in support of various Advanced Technology software products.
Participate in the analysis of user/business requirements. May supervise the work of less experienced designers/developers when required. Assist others in debugging software applications and preparation of test scenarios as required.
Create engineering documentation in accordance with organizational standards including, but not limited to, software design documents, use cases and user documentation.
This position may require occasional "on-call" work to provide support outside of regular working hours. This position may require occasional overtime work to meet project deadlines.
Duties and Responsibilities:
Design and Development of Software
Analyze, design, develop, debug and modify software for Survey Planning and Instrument Control; design and develop reusable high- and low-level software architectures and components including, but not limited to, real-time sensor controller software, utility software, diagnostic software; design and develop code from front-end Graphical User Interfaces (GUI's), system communication level; Implement reusable software infrastructure components using primarily C++ but also C, C# and Java software programming languages; derive detailed test scenarios to ensure sufficient test coverage of developed code, with assistance if required.
Support hardware changes; develop new capabilities; create data analysis tools as required for our in-house engineering work; modify software to meet demands of new or upgraded systems; address data, format errors, questions; participates in the evaluation and identification of new technologies associated with associated software product.
Version Control & Documentation
Maintain system software versions; maintain software documentation; participate in the integration and debugging of new/upgraded systems; support all software development/maintenance; debug existing versions of programs and create patches when necessary; make updates to test procedures in support of test matrix updates by QAQC.
- University degree in Computer Science or Equivalent Experience
- Minimum 4+ yrs of hands on programming experience
- MFC, Framework .NET, WPF, OpenGL (specifically texturing) and DirectX
- Programming in C++, C#, C
- Experience in Java programming an asset
- Multiplatform experience as asset
- QT knowledge an asset
- Background in Geodetics/hands-on programming Geodetic-based applications an asset
- Hands-on experience with Subversion/SVN an asset
- UML analysis and design pattern experience would be an asset
- Excellent communication verbal and written English skills and the ability to communicate with others who do not understand programming and data structures
- Excellent time management skills with the ability to multi-task and deal with competing priorities
- Good planning and organizing skills; good documentation skills; dependable, interpersonal ability, flexible, result oriented; thorough, team player, team oriented, has initiative, sense of urgency
Interested applicants may send their resume to: firstname.lastname@example.org.
Committed to employment equity, Optech Incorporated encourages applications from Aboriginal people, people with disabilities, members of visible minority groups and women.