Senior Software Engineer - Network algorithms
Base Location: Cambridge, U.K.
The Software Engineer will be part of a small software team which is defining the intelligence which is resident in each of our embedded nodes running Linux in a distributed architecture. This role is focussed on modelling distributed systems and designing the management and control plane self-organising algorithms in C/C++, Python, and Go.
You will have a broad software development remit. This is likely to include:
- Systems modelling and simulation of distributed communications systems while performing analysis of scaled network protocols to assess service and reliability. You’ll provide technical reporting of key findings and recommendations for delivery to customers and industry partners.
- Subject Matter Expert for Network algorithm in the management and control plane
- Identifying opportunities to make technology-driven operational and process improvements
- Developing of new products and products’ features
- Documenting and testing the code you produce
- Debugging and fixing issues found from live field deployments.
- Assist in the day-to-day team work in an agile development environment.
Skills & Experience required:
Enthusiasm, flexibility and the desire to work in a small dynamic team are more important than specific technical skills, but you will probably have significant experience of:
- Embedded C development
- Distributed Computing Architecture
- Linux based development environments
- Virtualisation frameworks
- Layer 2 Networking including Ethernet switching, VLAN configuration, QinQ, etc.
- IPv4 networking concepts and administration including routing, NAT, firewall, etc.
- Python and other scripting languages
And it would be useful if you knew something about:
- Graph theory and algorithms
- Revision control systems (git)
- Wifi (802.11ac or 802.11ad)
- Knowledge of Linux including network setup and kernel configuration
- Experience of unit testing and continuous integration
- Able to work indefinitely in the UK.