Position: (Senior) Software Engineer
We invite a dynamic and motivated individual to apply for the position. The job holder will report to the Chief Technology Officer/Senior Software Engineer.
Software Engineer (Systems & Networking)
About the Project:
The BATS Protocol is a sophisticated network protocol implementation focused on efficient data transport across networks. We are building a next-generation user-space transport protocol that delivers reliable, high-throughput transfers on real-world networks. We have a mature BATS coding/ decoding layer that supports various encoding/decoding methods and network optimizations. Our current focus is on improving transport mechanics—congestion control, error recovery, pacing and rate adaptation, flow control, and NAT traversal options—within a modular architecture that separates the control plane from the data plane and exposes clean APIs.
Role overview:
You will write system-level Rust on Linux for the BATS transport library and other product components — initial focus includes the file-transfer engine and an L3 tunnel, adopting modern engineering practices (Git branches/MR, code review, CI/CD, unit & integration tests, benchmarks). Prior transport-protocol stack experience is not required—you will learn with us, provided you have strong programming fundamentals and curiosity.
Key responsibilities:
- Implement and optimize Rust components in the BATS transport library and product modules (e.g., file-transfer engine, L3 tunnel), focusing on throughput/latency/CPU/memory.
- Implement new features; write unit/integration tests and maintain micro-benchmarks.
- Debug with Linux tools (logs, tcpdump/Wireshark) and basic profilers (perf, flamegraph); produce clear, reproducible findings.
- Participate in merge-request code reviews; follow CI gates; improve code quality incrementally.
- Write concise technical documentation (APIs, design notes, benchmark summaries).
Required skills & experience:
- Strong Rust or Go programming on Linux; good grasp of sockets fundamentals (UDP/TCP), concurrency (threads/async), and memory/ownership.
- Comfortable with modern SDLC: Git (branching + MR), code review, CI/CD, and unit/integration testing.
- Able to read metrics/logs and apply basic performance analysis on Linux.
- Growth mindset: willing to learn transport protocol internals and system performance techniques on the job.
Preferred skills:
- Exposure to transport ideas (congestion/windowing/pacing, FEC/coding), or tools like perf, flamegraph, tcpdump/Wireshark.
- Networked application patterns (HTTP/REST, WebSocket, or RPC frameworks) and container literacy (Docker).
Qualifications:
- Bachelor’s or Master’s degree in Computer Science, Information Engineering, or a related discipline
- At least 3 years of working experience in software development
Work environment:
- Collaborative development in GitLab with MR-based workflow, coding standards, and continuous integration.
- Clear, pragmatic engineering practices; small team, high impact.
Interested candidates should submit code samples or links to GitHub repositories that demonstrate experience with C++ network programming.