Job Description
JOB TITLE: Senior Software Engineer
DEPARTMENT: Software Development
REPORTS TO: Project Director
PURPOSE:
We are seeking a highly skilled Senior Software Engineer to join our dynamic software development team. The ideal candidate will have extensive expertise in C++ development and experience with modern tools and methodologies, including Docker, SQL, and microservices architecture. This role requires strong problem-solving skills, a collaborative mindset, and a passion for delivering high-quality software solutions.
KEY RESPONSIBILITIES:
- Develop, test, and maintain software applications using C++ 17 (or newer) and relevant libraries such as STL, Boost, and POCO.
- Design and implement scalable solutions utilizing dynamic polymorphism, template meta-programming, and multi-threading techniques.
- Collaborate on the design and application of microservices architectures and cloud programming.
- Utilize Docker for containerized application development and deployment.
- Apply design patterns and UML diagrams to develop robust and maintainable code.
- Integrate event-driven architectures using technologies like RabbitMQ, Kafka, or Pulsar.
- Work with RDBMS/SQL databases (e.g., MySQL and Postgres) and implement distributed caching systems (e.g., Redis).
- Ensure code quality by implementing and maintaining automated testing platforms and unit tests.
- Utilize tools such as Git, GitHub, and GitLab for version control and participate in code reviews.
- Collaborate within AGILE environments, using tools like JIRA for bug tracking and project management.
- Contribute to the CI/CD processes for streamlined deployment pipelines.
- Engage in cross-team discussions to deliver exceptional software products.
- Bonus: Apply knowledge of Go and experience in the Financial domain where applicable.
QUALIFICATIONS, SKILLS, AND EXPERIENCE:- At least Bachelor’s Degree in Computer Science or a related field.
- 3+ years of hands-on software development experience.
- Technical Expertise in C++, STL, Boost, Go, Docker, SQL.
- Strong proficiency in modern C++ development, including memory management and core library usage.
- Expertise in multi-threading, concurrent programming, and asynchronous workflows.
- Familiarity with distributed systems and tools like Redis.
- Passion for collaboration, engaging in team discussions, and contributing to continuous improvement.