You are viewing a preview of this job. Log in or register to view more details about this job.

Software Engineer, Early Career - Embedded

One team. Global challenges. Infinite opportunities. At Viasat, we’re on a mission to deliver connections with the capacity to change the world. For more than 35 years, Viasat has helped shape how consumers, businesses, governments and militaries around the globe communicate. We’re looking for people who think big, act fearlessly and create an inclusive environment that drives positive impact to join our team.


Job Responsibilities


As a Software Engineer, you will have the opportunity to design and develop innovative architectures to support high-performance computing (HPC) embedded systems. In the HPC domain, you will help build an infrastructure that enables digital signal processing (DSP) algorithms and applications to be deployed across heterogeneous computing systems, including CPUs, GPUs, FPGAs, and other hardware accelerators. In the embedded domain, you will help develop applications within resource-constrained environments. 

You will be part of a small, growing multi-disciplinary team that encourages learning and development to solve our most pertinent and challenging problems. Based on background and interests, each team member builds on their strengths but also supports all phases of the development lifecycle. You will have the autonomy to complete your tasks and a core team of engineers to work with to help you succeed.


Requirements


  • Bachelor’s degree or higher in Computer Science, Computer Engineering, Math, or related field
  • Previous experience coding in C, C++, Python, Java, and/or Rust
  • Ability to travel up to 10% as needed
  • Ability to obtain a Secret Clearance

Preferences

The preferences below are listed from generic to specific and help describe the multi-disciplinary nature of the work. You will have the opportunity to broaden and deepen your skillset through a combination of project needs and personal interests. It is not expected that you will have deep knowledge of each of the areas on day one, but it is expected that you can demonstrate proficiency in a subset of them.

  • Master's degree or higher in Computer Science, Computer Engineering, Math, or related field
  • Demonstrated experience with software engineering:
  • Software development methodologies (e.g., Agile, DevOps, FDD,
  • Waterfall)
  • Continuous integration / continuous delivery (CI/CD) practices
  • Object-oriented programming and design patterns
  • Unit test frameworks (e.g., XUnit, GoogleTest) and end-to-end integration testing
  • Debugging (e.g., GDB, valgrind)
  • Agile development (e.g., Scrum, Kanban)
  • Build utilities (e.g., IDEs, make, CMake)
  •  Software configuration management (e.g., Git, Perforce)
  • Demonstrated experience with specific tools or domains:
  • Xilinx system development. e.g., RFSoC, MPSoC, Zynq, UltraScale, ACAP
  • Operating systems. e.g., RTOS, resource management, IPC
  • Containers and orchestration. e.g., Docker, Kubernetes
  • Message-based asynchronous networking. e.g., ØMQ, MPI, TCP, UDP
  • Real-time DSP applications for communications systems or related fields
  • Programming hardware accelerators. e.g., GPU, TPU, FPGA
  • Machine learning. e.g., unsupervised or reinforcement learning
  • Other useful experiences include:
  • RF technologies such as amplifiers and radar
  • Oscilloscopes, signal generators, and spectrum analyzers
  • Peripherals such as UART, SPI, and/or I2C

To learn more about this site and other office locations, please click here!