Job description
Job Title: C++ Software Engineer
Location: 100% REMOTE
Job Type: Perm Full-Time
Salary: $140K-$200K+ Depending on Experience
About the Job:
We are looking for C++ Software Engineers. Your primary responsibility will be to help design and develop software to run network simulations using the NS3 framework.
RESPONSIBILITIES:
- Work on a team-building cloud platform tools and solutions for HPC applications.
- Collaborate to define strategy and technology platform roadmap, and drive the rapid implementation of appropriate technologies.
- Encourage value-driven innovation to the current framework and processes to continuously improve product development processes.
- Partner with product teams to prepare for the timely and smooth acceptance of deliverables into the production environment.
- Evaluate new tools and technologies based on current and future feature requirements, performance, cost-effectiveness, and reliability.
- Work closely with development teams to understand requirements and apply industry knowledge to recommend build/buy solutions.
- Execution on all release engineering aspects of DevOps including Configuration Management, Build and Deployment Management, Continuous Integration and Delivery.
SKILLS & REQUIREMENTS:
- Responsible for all phases of the project life-cycle activities, from initial analysis through production support including design, implementation, testing, integration, and maintenance.
- Design, build, document, and maintain efficient, reusable, and reliable C++ code.
- Implement highly performant quality modules.
- Identify bottlenecks/bugs and devise solutions to these problems.
- Minimum of 7+ years of very strong C++ programming experience and development on Unix/Linux platforms.
- Strong experience using at least C++11 standard version, standard library, and STL containers.
- Strong understanding of Data Structures and Algorithms.
- Experience with NS2 or NS3 simulation environments is a plus.
- Good understanding of how to design and develop complex distributed systems, including experience debugging and solving performance issues in these environments.
- Good understanding of dynamic polymorphism and C++ specifics.
- Good understanding of memory management in non-garbage collected environments.
- Familiarity with operation of network components, such as Switches, Routers, and NICs.
- Experience with memory checkers such as Valgrind, and debuggers such as GDB.
- Knowledge of component data sheets and specifications.
- Implementation of automated testing platforms and unit tests.
- Proficient understanding of source code management using GIT tools.
- Familiarity with continuous integration.
- Bachelor’s Degree or equivalent in Computer Science or a related field.