Investigate technical issues, assess the impact of proposed changes, and contribute to reliable, maintainable software solutions.
Collaborate with multidisciplinary teams to clarify requirements, review designs and coordinate software changes and integration activities.
Communicate technical information and maintain documentation to support shared understanding.
Job Requirements
Education
Graduation from a recognized community college or university with specialization in computer science or systems engineering or a secondary school diploma and an acceptable combination of education, training, and experience.
Experience
A minimum of 3 years' experience in software engineering and development for complex distributed applications.
Experience developing or maintaining object-oriented applications in C/C++, Java or a comparable programming language.
Experience developing scripts or automation using at least one scripting language, such as Bash or Python.
Experience developing, troubleshooting and supporting software in a POSIX-compatible environment, such as Linux or UNIX.
Experience in software integration, software configuration management, unit and integration testing.
Knowledge
Knowledge of the software development life cycle (SDLC), including detailed design, coding, testing, implementation and maintenance.
Knowledge of Linux or UNIX operating system fundamentals, including processes, services, permissions, system events and logs.
Strong expertise in network programming and client-server communications, including TCP/IP, connection management and communication failure handling.
Knowledge of software configuration management and delivery practices, including source control, automated build pipelines, dependency management, and software packaging.
Understanding of SAFe or Agile practices.
Abilities
Ability to formulate and evaluate proposals, design concepts, test cases, and implementation plans of large computer systems.
Ability to satisfy operational requirements and systems engineering integration objectives by analyzing and defining user, operational and technical requirements and preparing appropriate system specifications.