Software Engineer

advertisement
Software Engineer Job Responsibilities:
The Software Engineer (SWE) develops, maintains, and enhances software systems based upon
requirements, design documentation, and guidance. The SWE works individually or as a part of a team
as necessary. Additionally, the SWE reviews and tests software components validating adherence to the
design requirements, software standards, and software practices, and generates resultant
documentation. The SWE resolves software defects as well as utilizes software development and design
methodologies appropriate to the development environment. Where appropriate, the SWE provides
input into the design of software components and data flows and assists in software requirements
derivation, specification, and documentation.
Software Engineer Job Duties:






Analyze user requirements to derive software design and performance requirements
Design and code new software or modify existing software to add new features
Debug existing software and correct defects
Integrate existing software into new or modified systems or operating environments
Develop simple data queries for existing or proposed databases or data repositories
Provide recommendations for improving documentation and software development
process standards
Assist with developing and executing test procedures for software components
Write or review software and system documentation
Modify existing software to correct errors, to adapt to new hardware, or to improve its
performance



Software Engineer Skills and Qualifications:











A Bachelor’s degree from an accredited college or university in Computer Science or Computer
Engineering
Understanding of the need for software requirements specification and derivation as they apply
to the software development process
The ability to analyze a problem space via decomposition and subsequently contribute to the
creation of a properly abstracted solution
Understanding of software life cycle, management, and development processes
Understanding of good software development practices and concepts
Experience with software development on Unix / Linux platforms
Experience developing software in C, C++, and Java. Additional experience with Python, TCL, and
shell scripting are desirable
Understanding of software concepts such as memory management, threading, IPC, OOP, build
systems, and configuration management
Basic understanding of System Administration concepts on Unix / Linux
The ability to work in a team environment to understand and solve software problems,
collaborating to create systems and components that are integrated into an overall solution
An understanding of the role of software test as it relates to software development and of the
relationship between software developers and testers
Download