Senior Software Development Engineer

Employer
ARIN
Location
Chantilly, Virginia
Salary
ARIN offers competitive salaries, comprehensive benefits, training, education, and generous 401K.
Posted
Apr 01, 2019
Closes
May 06, 2019
Industry
Nonprofit, Other
Hours
Full Time

We are currently seeking a Senior Software Development Engineer who will participate in the full life cycle of software development while supporting the functionality and mission of ARIN.  This includes research, design, development, testing, debugging, maintenance and documentation.  The functionality of ARIN includes domain name services, public key certificate services, registration software, billing/accounting solutions, customer record management, data research and analysis, web-based systems including REST, electronic publication of ARIN data and any future technical growth and implementations at ARIN.

Job Description and Responsibilities

  • Research, design and develop software systems to meet with user requirements using Kotlin, Java, Javascript, C, Ruby and other languages as deemed appropriate by the Chief Technology Officer and/or Chief Engineer and applying principles and techniques of computer science, engineering, and mathematical analysis.  Test, debug, and maintain the systems.
  • Follow configuration management practices of ARIN including source control using Git, coding standards and release packaging using Ansible, Docker, and Kubernetes in a Linux environment. Provide packaged releases for all application releases and bug fixes. Support Quality Assurance (QA) efforts.
  • Design, develop, test, debug, maintain and document web-based systems that can operate on a variety of computer platforms and operating systems using modern web technologies such as HTML, CSS, Javascript, Angular, React, Bootstrap, and Web Assembly.
  • Design, develop, test, debug, maintain and document applications against various ARIN databases in PostreSQL and MariaDB. Create utilities to modify records, produce statistical analysis and timely reports, and scan the database for integrity. Develop proposed relational database schemas to support application development.
  • Participate in a scrum-based, Agile software development process and present results of individual and team work to supervisors and product owners on a regular basis.
  • Participate in requirements gathering process. Produce, contribute to and/or review project specifications, design documents, flowcharts and diagrams. Analyze software requirements to determine feasibility of design within time and cost constraints. Consult with customers concerning requirements, enhancements and operation of systems.
  • Consult with system operations and other engineering staff to evaluate interface between hardware and software, and operational and performance requirements of overall system.
  • Design, develop, test, debug, maintain and document application programming interfaces for external, third-party systems or software. 
  • Participate in code reviews of own and others software.
  • Research, recommend and make changes to improve systems and/or database performance.

Additional Duties

  • Perform other related duties as required and assigned.
  • Ability to travel to various locations to attend industry related conferences.

Background / Skills Required

  • 4-year college degree preferably in an information systems or computer science related discipline OR equivalent work experience.
  • Seven or more years job-related experience, including functional programming techniques, object-oriented techniques, structured analysis and design and application troubleshooting and support.
  • Knowledge of Java, C, and Javascript in a Linux environment.
  • Experienced with client/server network programming (TCP/IP and UDP). Demonstrated proficiency in dealing with such issues as multithreading, non-blocking and asynchronous I/O.
  • Experience and knowledge of REST based systems.
  • Experience and knowledge of systems configuration management such as Ansible or Puppet.
  • Experience and knowledge of Java application containers such as Jboss/Wildfly.
  • Experience and knowledge of Docker, Kubernetes or other container and container orchestration technologies.
  • Knowledge of relational databases and SQL, preferably MariaDB and PostgreSQL
  • Ability to understand complex instructions and to work independently.
  • Strong interpersonal, verbal, presentation and written skills.
  • Excellent problem-solving skills.

Background / Skills Preferred

  • Familiarity of IPv4, IPv6, PKI, RPKI, Whois, RDAP, RPSL, routing and networking issues and protocols.
  • Familiarity with the DNS protocol and its particulars.
  • Experience and knowledge of Kotlin, Gradle, Angular, and/or React.