Sr Software Engineer
Job Description Summary
As a Sr Software Engineer, you will be responsible for programing a component, feature and or feature set. You will be also work independently and contributes to the immediate team and to other teams across business, and contribute to design discussions.
Job Description
Responsibilities
- Defining, developing, and evolving software in a fast paced and agile development environment using the latest software development technologies and infrastructure primarily using C++17.
- Collaborating with system engineers, frontend developers and software developers to implement solutions that are aligned with and extend shared platforms and solutions
- Compiling and building applications on both Linux and Windows systems for various architectures.
- Designing and implementing low-level software components with a strong understanding of design patterns.
- Breaking down system designs into class and flow diagrams.
- Delivering high-quality code with comprehensive unit and automation tests.
- Collaborating with cross-functional teams to define, design, and ship new features.
- Troubleshooting, debugging, and optimizing existing software applications.
- Understanding performance parameters and assess application performance.
Education Qualification
- Bachelor's Degree in Computer Science or “STEM” Majors (Science, Technology, Engineering and Math).
Desired Characteristics
Technical Expertise:
- Proven experience in application development with C++.
- In-depth knowledge of the latest C++ standards (C++11, C++14, C++17).
- Familiarity with commonly used C++ libraries such as Boost, STL (Standard Template Library).
- Strong understanding of build methodologies for C++ code for Linux and Windows systems using CMake, Make, and Visual Studio.
- Experience with debugging and profiling tools like gdb, valgrind
- Experience in writing unit, component, and integration tests using GTest, CppUnit
- Knowledge of SQL and NoSQL Databases, along with connecting to the databases from C++ applications
- Additional knowledge of Python including writing clean, efficient, and maintainable Python code with knowledge of basic Python libraries.
Preferred Qualifications:
- Experience with version control systems, particularly Gitlab.
- Familiarity with Agile development methodologies.
- Knowledge of continuous integration and continuous deployment (CI/CD) pipelines.
Business Acumen:
- Ability to break down problems and estimate time for development tasks.
- Understanding the technology landscape, being up to date on current technology trends and new technology and brining new ideas to the team.
- Understanding of the project's value proposition for the customer.
Additional Information
Relocation Assistance Provided: No