Sr. Software Engineer- Platform Team recruitment
Position Description:
The Sr. Software Engineer will primarily focus on the PEAK6 platform systems, although the right person will be comfortable jumping in to help on any team/project. The ideal candidate will have extensive experience building complex applications, preferably using Java and/or C++, with heavy emphasis on messaging systems, high throughput applications, and service level programming. The candidate will be able to quickly come up to speed on a large existing code base, and be able to contribute with little direct oversight. The right candidate will feel just as comfortable starting a completely new system from scratch, helping to develop all pieces from the build systems, to the actual applications, to automated testing and deployment.
The platform team is responsible for everything from messaging and data feeds to launching entire new lines of business. The right person will know how to use the right tool for the job, whether it is something they already know or something they have to pick up. This person will frequently be relied on to help make build vs. buy (or use from open source) decisions, and then helping determine the appropriate architecture and long-term technical path. Experience with highly concurrent and distributed systems, and comfort with a broad set of languages and technologies is a plus.
Job Requirements:
- Organizing and scanning multi-terabyte data sets in real-time
- Using NoSQL and Erlang to create distributed, redundant, low-latency platforms
- Building high-speed, high-bandwidth processing systems in C using kernel bypass and FPGAs
- Ultra-scalable service systems that you can build almost any trading product on top of
- Building web-based applications using web sockets and some home-grown “stuff” to really make browser apps feel native and interact cleanly with other actual native apps
- Developing domain specific languages and compilers to better accomplish business/system needs
Desired Candidate Attributes:
• 8+ years of Java and/or C++ experience
• Functional programming language experience preferred
• Deep knowledge of systems programming/Linux kernel experience preferred
• Client / Server development skills
• Advanced knowledge of SQL (Postgres preferred)
• Skilled in developing multi-threaded applications
• Strong analytic and problem solving skills a must
• A passion for solving hard problems
• A love for software development, with a relentless focus on the customer
• Capable of making sound long-term tech calls with near term goals in mind
• Ability to get things done with little direct oversight