A

Software Development Engineer II

Adtn Us Bu
Full-time
On-site
Huntsville, Alabama, United States
Description

The Software Engineer will be a member of a team responsible for designing, analyzing requirements, developing, implementing, testing, debugging, and maintaining software solutions for ADTRAN products including but not limited to the following:  driver development, application development, system software architecture, software test development, and customer assistance. 

Duties and Responsibilities

  • Example target projects:
    • Design or assist in the design and development of multiple L2 and L3 networking protocols running on real-time embedded network devices.
    • Design or assist in the board bring-up activities for SDX Aggregation Switches and writing low level drivers including some open-source components, such as ONIE, ONL.
  • Perform or assist in high-level and low-level software design and implementation of new modules and enhancements to existing software. 
  • Perform or assist in feasibility studies of needed software development. 
  • Document the design including features definition and provisioning models. 
  • Help to model and define APIs using MIBs, CLI, YANG or similar standards.
  • Conduct and participate in design reviews and code reviews.
  • Plan and perform unit and system level testing of implemented software modules and enhancements.
  • Help fix software bugs found during all testing phases.
  • Work with team to deploy and test incremental software releases.
  • Organize and coordinate development activities within schedule and product constraints.
  • Other projects and assignments may result and be assigned to accommodate the changing needs of the department and the Company.

Basic Qualifications

  • Bachelor’s degree in Computer Science, Computer Engineering, Computer Information Science, Electrical Engineering, or equivalent education required.
  • 2-5 years of professional experience is preferred. 
  • Familiarity with Ethernet and networking protocols and experience with embedded software design, implementation and debugging ranging from the driver/interrupt level up to the application level including interprocess communication and multi-threading techniques is required.
  • A solid foundation in computer science, with strong competencies in data structures, algorithms, software engineering, and functional programming techniques is required.
  • Experience with at least one modern functional programming language (Scala, Erlang, Elixir, Haskell).
  • Experience with a JVM language (Java or Scala) including, but not limited to, JVM tuning and memory management.
  • Experience with C/C++
  • Experience developing containerized applications (Docker or equivalent).
  • Experience developing and deploying large scale applications.
  • Familiarity with lab test equipment that would be needed to unit or system level test the software component designed is required.
  • No travel is expected in this position.

Preferred Qualifications (Optional)

  • Knowledge of Jenkins, CI/CD, TCP/IP, IP protocols, Datacom technologies, VxWorks, QNX, embedded Linux, L2 and L3 protocols, Ethernet switching, networking protocols experience preferred.