3+ years of professional software development experience, including internships or personal projects.
Bachelor's degree in Computer Science, Computer Engineering, Electrical Engineering, Math, Physics, or related field (soft requirement).
Proficiency in programming languages such as Rust, C, C++, Go, Python, and Java.
Strong problem-solving abilities and high mathematical maturity.
Excellent communication and collaboration skills.
Responsibilities
Design and implement algorithms for antenna calibration and localization.
Develop algorithms for beamforming and antenna pointing.
Optimize digital signal processing for high-rate data streams.
Create and manage APIs, databases, and inter-process communication.
Conduct software simulations for testing and verification.
Benefits
Opportunity to work on cutting-edge technology in telecommunications.
Collaborative and dynamic work environment.
Ownership of key projects and areas of responsibility.
Flexible approach to qualifications, valuing experience over formal education.
Full Job Description
Role:
Northwood is looking for a Software Engineer focusing on control systems for our Phased Array antennas. As a Software Engineer at Northwood, you will be pivotal in designing, implementing, and optimizing the global service that delivers connectivity to our customers. You will have ownership over key areas ranging from control of our antenna systems to high-rate data processing. An ideal candidate is someone who likes to work across areas of responsibility and can dive deep into high-priority challenges.
We seek versatile candidates who want to contribute across multiple areas while having a solid foundation in a few core areas of focus. These areas of focus include (but are not limited to) the following:
Algorithms for antenna calibration and localization
Algorithms for beamforming and antenna pointing
Digital signal processing on high-rate data streams
Telecommunications systems
Multi-antenna orchestration
Fault detection, isolation, and recovery (FDIR) systems
API, Database, and Inter-Process Communication (IPC) design
Software simulations for test and verification
Basic Qualifications:
3+ years of professional software development experience. This doesn't have to be a full-time role. There are many ways to gain valuable experience, and we'd love to hear about yours; please tell us about internships, projects out of the classroom, or any personal wo.
A bachelor's degree in Computer Science, Computer Engineering, Electrical Engineering, Math, Physics, or other related discipline. This is a soft-requirement; if you didn't pursue a degree, tell us why and what you've done in its place.
Preferred Qualifications:
While we don't expect you to have every skill listed below, we do expect you to take ownership of one or more areas and drive decisions and implementations where your strengths lie.
Programming Languages (General): Rust, C, C++, Go, Python, Java
Strong problem-solving abilities
Excellent communication and collaboration skills
Ability to work in a fast-paced, dynamic environment
High mathematical maturity
Domain specific skills:
APIs and Inter-Service Communication:
Experience in building RESTful APIs
Experience with Protocol Buffers and/or gRPC
Antenna Systems
Knowledge of the physics of Phased Arrays and beamforming
Familiarity with spatial filtering and adaptive beamforming methods
Data Movement and Networking:
Proficiency in architecting data pipelines for high-throughput environments
Understanding of network programming and IP protocols
Experience with high-speed communications (10/25/100G Ethernet)
Databases and Data Processing:
Proficiency with relational databases (PostgreSQL, MySQL)
Knowledge of publish/subscribe architectures and technologies (RabbitMQ, MQTT, Redis Pub/Sub, etc.)
Distributed Systems and Cloud Computing:
Experience designing and implementing distributed systems
Knowledge of cloud services (AWS, Azure, Google Cloud) and orchestration tools
Familiarity with microservice architectures
Hardware Interaction and FPGAs:
Experience with hardware control systems
Familiarity with FPGA programming and orchestration
Understanding of embedded systems development
Parallel Systems
Experience writing multithreaded systems
Knowledge of synchronization primitives, including mutexes, semaphores, and message passing queues
Experience with asynchronous programming
Signal Processing
Knowledge of signal processing mathematics, particularly digital signal processing (e.g., Discrete Fourier Transforms, Filtering, Quantization, etc.)
Experience implementing signal processing routines on real systems
Simulation
Experience designing/implementing simulations for physical models (think satellite orbits) or hardware systems
Telecommunications:
Knowledge of modulation schemes and modems
Knowledge of error correction and coding schemes, including linear block codes, convolutional codes, and Reed-Solomon codes