We are looking for a Software Architect for our team to mentor, design and develop highly scalable, real-time systems/frameworks with good code quality, re-usability and reliability in mind.
– Provide guidance and recommendation on software architecture, design patterns, technical choices, and best practices for applications and solutions.
-Research and monitor technology trend, new technologies, and new software tools.
– Write core modules and components, resolve coding issues
– Ensuring code standards over projects, and perform peer design and code reviews.
– Define and implement Proof-Of-Concept prototypes for new features and proposals.
– Create technical documents including software requirement specification (SRS), software technical specification (STS) and release notes (formal software development life-cycle exposure)
– Provide mentorship, coordination and guidance for application developers.
– Work together with other architects and business teams to solve challenging problems and develop a global road map for the company.
– Promote knowledge sharing, positivity and creativity
– Bachelor’s Degree in Electrical/Electronic/Computer Engineering or equivalent technical degree; or equivalent combination of education and experience.
– 7+ years as a full time software development experience
– Solid knowledge of “Modern“ C++ language (11/14/17)
– Solid knowledge of design patterns and best practices
– Solid knowledge of C++ template metaprogramming
– Solid knowledge of debugging and scripting.
– Strong passion for and commitment to software quality.
– Hands-on experience writing unit tests
– Profound understanding of object oriented programming
– Excellent analytical abilities, technical creativity and self-motivation.
– Experience in developing applications in UNIX environment
– Experience working in an Agile environment
– Ability to prioritize workload and meet project deadlines.
– Ability to multi-task in a fast-paced environment with minimal direction.
– Fluent in English (verbal and written)
– Strong interpersonal skills with ability to work both independently and as part of a team.
– Working knowledge of tools used in the Software Development Lifecycle (e.g. JIRA, Git, Redmine)
Preferred Soft Skills
– Great curiosity and willingness to question
– High enthusiasm, integrity, ingenuity, results-orientation, self-motivation, and resourcefulness in a fast-paced competitive environment
– Get excited by the challenge of hard technical problems
– Have a deep desire to work collaboratively, solve problems with groups, find win/win solutions and celebrate successes
Preferred Technical Skills
– BOOST library knowledge (especially with Boost.ASIO)
– Proficient in at least one scripting language such as Python
– Strong knowledge of relational and in-memory database systems – key value stores (eg. PostgreSQL, Apache Ignite, Redis)
– Good understanding of OSI layer 2-3-4 network protocols and common layer 7 protocols
– Good understanding of x86 CPU architecture, and ability to write cache-friendly, branch-predictor friendly code
– Good understanding of NUMA nodes, and how to utilize workload to NUMA nodes with minimum latency
– Performance oriented thinking, able to discriminate hot and cold path and perform optimizations on hot path
– Good understanding of CPU instruction set extensions, such as Streaming SIMD extensions (SSEx), Advanced Vector Extensions (AVX) and how to utilize them in modern C++ code.
– Software development experience with co-processors, preferably for GPU and FPGA, to boost application performance in suitable scenarios
Verbal & Written