Software Engineer - Senior
Analyzes user interfaces, maintain hardware and software performance tuning, analyze workload and computer usage, maintain interfaces with outside systems, analyze downtimes, analyze proposed system modifications, upgrades and new COTS. Defines the problem, and develops system requirements and program specifications, from which programmers prepare detailed flow charts, programs, and tests.
Coordinates closely with programmers to ensure proper implementation of program and system specifications. Develops, in conjunction with functional users, system alternative solutions.
Duties, tasks, and responsibilities include:
- Advise customer about, or perform, maintenance of software system.
- Analyze information to determine, recommend, and plan computer specifications and layouts, and peripheral equipment modifications.
- Analyze user needs and software requirements to determine feasibility of design within time and cost constraints.
- Confer with data processing and project managers to obtain information on limitations and capabilities for data processing projects.
- Confer with systems analysts, engineers, programmers and others to design system and to obtain information on project limitations and capabilities, performance requirements and interfaces.
- Consult with customers about software system design and maintenance.
- Consult with customers or other departments on project status, proposals and technical issues such as software system design and maintenance.
- Consult with engineering staff to evaluate interface between hardware and software, develop specifications and performance requirements and resolve customer problems.
- Coordinate installation of software system.
- Coordinate software system installation and monitor equipment functioning to ensure specifications are met.
- Design, develop and modify software systems, using scientific analysis and mathematical models to predict and measure outcome and consequences of design.
- Develop and direct software system testing and validation procedures, programming, and documentation. Estimate software development costs and schedule.
- Evaluate factors such as reporting formats required, cost constraints, and need for security restrictions to determine hardware configuration.
- Modify existing software to correct errors, allow it to adapt to new hardware, or to improve its performance.
- Monitor functioning of equipment to ensure system operates in conformance with specifications.
- Obtain and evaluate information on factors such as reporting formats required, costs, and security needs to determine hardware configuration.
- Prepare reports and correspondence concerning project specifications, activities and status.
- Review existing programs and assist in making refinements, reducing operating time, and improve current techniques.
- Specify power supply requirements and configuration.
- Store, retrieve, and manipulate data for analysis of system capabilities and requirements.
- Supervise the work of programmers, technologists and technicians and other engineering and scientific personnel.
- Train users to use new or modified equipment.
- Utilize microcontrollers to develop control signals, implement control algorithms and measure process variables such as temperatures, pressures and positions.
Knowledge, skills, and abilities include:
- Active Learning
- Complex Problem Solving
- Computers and Electronics
- Critical Thinking
- Deductive Reasoning
- Design
- Engineering and Technology
- English Language
- Inductive Reasoning
- Information Ordering
- Judgment and Decision Making
- Mathematics
- Operations Analysis
- Oral Comprehension
- Oral Expression
- Problem Sensitivity
- Programming
- Reading Comprehension
- Speech Clarity
- Speech Recognition
- Systems Analysis
- Technology Design
- Telecommunications
- Troubleshooting
- Written Comprehension
Minimum education and experience guidelines:
General professional years of experience may be substituted for specialized years of experience at a ratio of three (3) years of general experience within an occupation for one (1) year of specialized experience.
Relevant certifications will be considered equivalent to three (3) months of specialized experience.
An Associate's degree in Computer Science, Information Systems, Engineering, Business, or a scientific or technical discipline related to the specific skill will be considered equivalent to eighteen (18) months specialized experience.
A Bachelor's degree in Computer Science, Information Systems, Engineering, Business, or a scientific or technical discipline related to the specific skill will be considered equivalent to three (3) years specialized experience (total equivalency is not cumulative when combined with an Associate's degree).
A Master's degree in Computer Science, Information Systems, Engineering, Business, or a scientific or technical discipline related to the specific skill will be considered equivalent to two (2) years specialized experience (up to a total of five (5) years when combined with a Bachelor's).
A Doctorate in Computer Science, Information Systems, Engineering, Business, or a scientific or technical discipline related to the specific skill will be considered equivalent to two (2) years specialized experience (up to a total of seven (7) years when combined with a Master's and a Bachelor's).
Minimum experience:
Senior: A senior level practitioner. Someone that has extensive experience or training related to a particular skill, language, system, or technology and is capable of not only delivering a capability tied to that skill, but passing their knowledge on to others. Requires a minimum of six (6) years of experience specific to the skill. Ability, training and actual work experience with the specific computer language, systems, and/or technology is significantly more important than the number of years of experience. This is especially true with emerging technologies.