Looking for a Software Engineer to join the team! This individual will be responsible for designing and developing our dist...
Looking for a Software Engineer to join the team! This individual will be responsible for designing and developing our distributed-systems products and platforms, which power leading digital currency trading venues and permissioned blockchain solutions. Our software is built using C#, using custom messaging mechanisms over multiple transport protocols, with customized persistence and storage mechanisms, all optimized for high-volume enterprise-class real-time access-controlled transaction processing. In this position, you will work in every layer of the service tier (transports, messaging, framework, data persistence, business logic, ...) and develop a rich understanding of both the system mechanisms and the application business domains.
As a key member of the software development and delivery team, you will:
- Be part of a multi-disciplinary engineering team focused on delivering world-class industrial-strength distributed-systems software.
- Work with other developers, test engineers, analysts, and project managers to develop and deliver software products and solution implementations.
- Contribute to the evolution and enhancement of both our trading venue and blockchain platform product lines.
- Participate in solution development/delivery, using our products and platforms.
- Leverage Agile practices to incrementally and iteratively deliver high value.
- Analyze, design, code, and test software elements, with an eye for building functional, performant, scalable, solid production software in a timely manner
- Prepare technical documentation and diagrams.
- Cultivate expertise in relevant aspects of target business domains and apply that knowledge to maximize technology value.
- Assist project and product leaders in making risk-managed planning and release decisions.
- Proficiency in one or more OO languages (C#/.NET strongly preferred).
- Familiarity with distributed systems patterns and techniques (SOA preferred).
- Understanding of multithreading and concurrency.
- Experience with sockets, WebSockets, and/or message oriented middleware.
- Experience with serialization techniques like JSON, binary, or protobufs.
- Experience building, troubleshooting, and debugging distributed systems.
- Knowledge of code profiling, optimization, analysis tools.
- Familiarity with BDD/TDD and automated testing.
- Commitment to lean programming style and aversion to bloatware.
- Creative problem solver able to consider and propose multiple alternatives, taking into account technical and non-technical trade-offs and side effects.
- Some experience with trading or post-trading systems, payment systems, or financial processing systems is preferred.
- Knowledge of Bitcoin, cryptocurrencies, and/or blockchain technologies is desirable.
- 3-5 years of experience building distributed, transactional software solutions.