Senior Software Engineer, National Robotics Engineering Center (NREC)-2007589
Research and development (R&D) excellence in the application of robotics and artificial intelligence to the real world requires creativity, discipline and knowledge of best practices from its software development team. As a leader in developing new autonomous and robotics solutions, NREC (National Robotics Engineering Center) is looking for an experienced senior-level software engineer to join our software team, which is dedicated to building the next generation of field robotics applications.
Our organization has 20+ years of experience developing and deploying robots into many applications across multiple sectors, such as agriculture, construction and humanitarian demining. We strive to provide solutions for real world challenges where automation and robots have great impact on the productivity, safety and comfort of the labor force.
Your core responsibilities will be:
Develop software in C++, possibly in other languages and using third party libraries, as necessary.
Contribute to applying best software practices, as they relate to documenting and reviewing technical designs, solutions, and program logic in the planning, development, and testing phases of the project.
Develop test suites for: infrastructure, functional and behavioral modules of the autonomy pipeline.
Work in a technical environment that involves the following: Ubuntu Linux (multiple versions), Mac and Windows, ROS and ROS-like infrastructure, Atlassian collaborative tools (Bitbucket, Confluence, Crucible, HipChat, Jira), Git version control, wired and wireless data communications, TCP, UDP, CAN bus, serial communications, etc.
Design, implement, and execute scientific experiments with the developed systems; collect data, summarize and report results.
In addition to performing the core responsibilities listed above, you will also:
Learn principles of robotics.
Mentor fellow staff engineers in learning and adopting desired software engineering practices.
Assisting the technical management in developing and executing strategies for developing a reference and extendable autonomy software product line.
B.S. in Computer Science, Engineering, or other relevant academic degree.
3 to 5 years non-academic work experience developing software systems.
Experience developing non-trivial software systems that address real-world needs.
Software development experiences in at least three high-level programming languages.
Operational understanding of the following concepts and methodologies:
software product lines
Object Modeling Technique (OMT)
architecture trade-off and analysis method (ATAM)
software product lines
The term 'operational' means knowledge and experience applying them to software development projects.
Experience developing software for at least one (1) of the following skill areas:
well-documented manual or automatic test suites and analysis tools for software systems
distributed network applications
thread safe multi-threaded applications
high throughput, millisecond time scale, data pipelines
static and dynamic load profiling and balancing
GUI client/server application development
data intensive machine learning algorithms
Experience with relevant software architecture and design decisions, processes, and artifacts: documentation, review, revision, documentation revision, development time estimation, test and evaluation (T&E): analysis and report summarization.
Experience contributing to and fostering a collaborative team.
Good communications skills.
M.S. in Computer Science, Engineering, or other relevant academic degree.
6+ years non-academic work experience developing software systems.
Experience developing non-trivial software systems that address real-world needs in at least three (3) of the following languages or libraries: C++, Ruby, Python2, Python3, CUDA, Matlab, Eigen, NumPy, SciPy, OpenGL, OpenSceneGraph, Point Cloud Library, TensorFlow.
Experience developing software for at least four (4) of the skill areas listed above (Minimum Qualification #6).
Interested candidates should submit a CV and cover letter that clearly explain how the candidates' background and interests respond to the qualifications and responsibilities of the position. While applications without a cover letter will be permitted, preferential consideration will be given to applications with one.
Please be prepared to provide three references upon request.
Carnegie Mellon (www.cmu.edu) is a private, internationally ranked research university with programs in areas ranging from science, technology and business, to public policy, the humanities and the arts. More than 12,000 students in the university’s seven schools and colleges benefit from a small student-to-faculty ratio and an education characterized by its focus on creating and implementing solu...tions for real problems, interdisciplinary collaboration and innovation. A global university, Carnegie Mellon’s main campus in the United States is in Pittsburgh, Pa. It has campuses in California’s Silicon Valley and Qatar, and programs in Africa, Asia, Australia, Europe and Mexico.