Software Engineer
The Software Engineer designs, develops, codes, tests, debugs, documents, implements, and maintains software applications and systems that support customer, business, and mission requirements. The Software Engineer analyzes technical and functional requirements and develops or modifies software solutions while considering system capabilities, limitations, operating requirements, performance, and desired results.
The position participates throughout the software development lifecycle, including requirements analysis, solution design, development, integration, testing, deployment, troubleshooting, documentation, maintenance, and enhancement of software applications.
Duties/Responsibilities:
Design, develop, code, test, debug, document, implement, and maintain software applications, components, interfaces, and supporting systems.
Develop and modify software procedures and applications to solve technical and business problems while considering system capabilities, limitations, operating requirements, performance, and desired results.
Analyze business, functional, and technical requirements and translate requirements into effective software solutions.
Participate in all phases of the software development lifecycle, including requirements analysis, design, development, testing, integration, deployment, maintenance, and enhancement.
Develop clean, efficient, maintainable, secure, and well-documented source code in accordance with established development standards and best practices.
Create and maintain software design documentation, technical specifications, process flows, diagrams, test documentation, and other system artifacts.
Develop, configure, and maintain application interfaces, APIs, web services, and system integrations as required.
Coordinate software requirements with existing and projected system capabilities and customer requirements.
Develop and execute unit tests and support integration, system, regression, and user acceptance testing activities.
Identify, troubleshoot, debug, and resolve software defects, application errors, performance issues, and integration problems.
Analyze existing applications and recommend modifications, enhancements, upgrades, or other improvements.
Support maintenance, sustainment, modernization, and enhancement of existing software applications and systems.
Participate in code reviews and technical reviews to improve software quality, security, performance, maintainability, and reliability.
Implement software changes and releases in accordance with established configuration management and change management processes.
Utilize source/version control tools to manage application code, changes, releases, and software baselines.
Support application deployments and software releases across development, testing, staging, training, disaster recovery, and production environments, as applicable.
Support automated build, test, deployment, and continuous integration/continuous delivery (CI/CD) processes, where applicable.
Develop and maintain database queries, stored procedures, data access components, and application/database integrations, as required.
Apply secure software development practices and support remediation of software vulnerabilities identified through security reviews, testing, scanning, or other assessment activities.
Monitor and evaluate application performance and recommend improvements to enhance reliability, scalability, usability, and efficiency.
Provide technical support and troubleshooting for applications and software components in development and production environments.
Support root-cause analysis and resolution of application incidents and recurring technical issues.
Collaborate with customers, users, system engineers, database administrators, infrastructure teams, cybersecurity personnel, quality assurance personnel, and other technical resources.
Estimate level of effort, technical complexity, dependencies, and development timelines for assigned tasks and software enhancements.
Participate in Agile/Scrum, DevSecOps, or other established software development methodologies, as applicable.
Communicate technical concepts, risks, issues, and recommendations to technical and non-technical stakeholders.
Maintain current knowledge of software development technologies, programming languages, frameworks, security practices, and industry best practices.
Perform additional duties as assigned based on contract requirements.
Required Skills/Abilities:
Knowledge of software engineering principles, methodologies, design patterns, and software development lifecycle practices.
Demonstrated ability to design, code, develop, test, debug, document, and maintain software applications.
Proficiency with one or more programming languages such as Java, C#, C/C++, Python, JavaScript, or comparable technologies.
Experience with software development frameworks, libraries, development tools, and integrated development environments appropriate to assigned applications.
Experience developing and/or integrating APIs, web services, or other application interfaces.
Working knowledge of relational databases, SQL, data structures, and application/database integration.
Experience with source/version control systems such as Git or comparable technologies.
Knowledge of software testing practices, including unit, integration, regression, and system testing.
Understanding of secure software development principles and practices.
Ability to analyze functional and technical requirements and translate them into software solutions.
Ability to troubleshoot software and application issues and perform root-cause analysis.
Strong analytical, critical-thinking, and problem-solving skills.
Excellent organizational skills and attention to detail.
Excellent verbal and written communication skills.
Ability to create and maintain clear technical documentation.
Ability to work effectively independently and as part of a multidisciplinary technical team.
Ability to manage multiple assignments and priorities while meeting established deadlines.
Regular and predictable attendance.
Education and Experience:
Bachelor’s degree in Computer Science, Software Engineering, Computer Engineering, Information Technology, or a related technical field and a minimum of four (4) years of relevant software development/software engineering experience; OR
High school diploma/equivalent and a minimum of eight (8) years of relevant experience; OR
Master’s degree in Computer Science, Software Engineering, Computer Engineering, Information Technology, or a related technical field and a minimum of two (2) years of relevant experience.
Physical Requirements:
Prolonged periods sitting at a desk and working on a computer.
Must be able to lift up to 15 pounds at time
Other Requirement:
Ability to obtain a public trust
Pay: $95,000.00 - $115,000.00 per year
Benefits:
401(k)
401(k) matching
AD&D insurance
Dental insurance
Disability insurance
Flexible spending account
Health insurance
Health savings account
Life insurance
Paid time off
Vision insurance
Application Question(s):
What is your highest level of education?
Do you have professional experience supporting a U.S. Federal Government agency or performing work under a federal government contract?
How many years of professional software development/software engineering experience do you have?
Which programming languages have you used professionally?
Do you have experience working in Agile, Scrum, DevSecOps, or CI/CD environments?
Are you legally authorized to work in the United States?
Are you able to successfully complete and maintain the background investigation, suitability determination, Public Trust, or other access requirements required for the position?
Work Location: Hybrid remote in Tysons Corner, VA 22102