Senior Software Development Engineer
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
- 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 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.
- 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.
- 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.