Senior Software Engineer - 1224
The Sr. Software Engineer designs, builds, and implements robust software solutions to advance organizational goals and objectives, including support of the network.
The position provides advanced-level programming expertise for a variety of systems integration, tools development, software support and troubleshooting activities. Actively works on multiple complex tools and software projects simultaneously. Therefore, the position requires the ability to prioritize and execute tasks in a dynamic environment, managing multiple projects in order to complete them successfully and within expected timelines.
- Work with stakeholders to define requirements and implement software used to instrument, manage, and troubleshoot large-scale diverse networks
- Use robust and secure software development principles: robust exception-handling, input validation, proper application and use of cryptographic algorithms and libraries, proper handling of concurrency issues
- Identify, troubleshoot, and resolve problems relating to internal mission-critical software applications
- Document code consistently throughout the development process
- Responsible for communicating with customers, network engineers, systems administrators, and vendor’s technical support staff regarding programming needs and performance, as well as end user support for related tools developed
- Coordinate debugging and problem resolution work with users and testers as needed
- Review, to the extent possible, changes in code and the environment that will affect security and system performance
- Provide recommendations to leadership and stakeholders concerning issues with the software development management stack
- Maintain code bases, releases and derivations in modern revision control systems (e.g., git, SVN).
- Tracking of identified software bugs (including vulnerabilities) in a structured manner and reporting upon both bug severity and closure statistics
- Review and maintain legacy code
- Work closely with security to identify, discuss, and implement software tools and solutions in support of the networks, networksecurity designs, and implementations of networksecurity policies, procedures, and technologies.
Experience & Qualifications
- A Bachelors Degree in computer science or related field or equivalent work experience
- Solid understanding of the principles of routing, IP network and server performance monitoring and management using technologies such as SNMP v2/3, and client/server programming.
- Expert knowledge of maintaining and debugging live software systems.
- Expert knowledge of writing program documentation.
- Expert knowledge of networking technologies from the Unix programmer's perspective.
- Expert knowledge of robust and secure software development: CERT, BSIMM, etc.
- Expert knowledge of Python, Perl, and PHP in Linux-based environments
- Expertise using static and dynamic source code analysis tools: Fortify, Coverity, Vericode, valgrind, etc.
- Foundational knowledge of computer security, application of cryptographic techniques, and encryption.
- Familiarity working with MySQL/MariaDB, NoSQL (e.g., Cassandra, Elastic), PostgreSQL, and Microsoft SQL databases and building database-backed web applications
- Experience in the use of cloud platforms including both compute and storage aspects of Amazon AWS and/or Google’s Cloud Platforms
- Familiarity with Java, C++, and object-oriented programming concepts
- Familiarity with authentication methods including LDAP, OAuth2, and SAML.
- Familiarity with programming applications allowing for a hierarchical group and permissions inheritance.
- Familiarity with TLS-based security mechanisms and certificate management.
- Familiarity with implementing change control, QA, regression testing procedures and methodologies including the setup and use of source code version control (e.g., SVN, GitHub), and test harness integration used for automated regression testing
- Familiarity with logging frameworks and methodologies
- Experience migrating legacy code to new platforms and writing technical documentation for migrated code.
- Experience writing robust software to integrate data and functionality across applications from different vendors
- Experience working and coordinating with network engineers, systems engineers, and cybersecurity teams.
- Strong understanding of network tools and data formats such as rrdtool, NetFlow, sflow; standard networking and host MIBs.
- Experience with commercial and custom software integration using standards-based protocols and interfaces
- Experience in all aspects of the software development lifecycle from formal user requirements definition through support of developed applications
- Experience working in a diverse, team-oriented, collaborative environment
- Possess excellent communication skills, including both verbal and written.
- Occasional overnight travel may be required.
- Participate in on-call rotation for escalation support of technical issues, supporting the 24x7x365 production environment.