A Senior Software Engineer is a skilled and experienced software engineer responsible for the detailed design, implementation, and testing of subsystems and system components. A Senior Software Engineer is able to build a wide variety of software subsystems and components efficiently and effectively, given only a requirements specification and constraints. A Senior Software Engineer is able to develop and sustain these subsystems and software components in complex, multi-vendor, multi-platform environments. Tasks may include design, maintenance, and working closely with both internal and external customers.
Take initiative in performance, working independently and with groups to effectively accomplish project objectives and engage in the following:
- Interact with fellow software engineers, technical leaders and Product Owners to understand component specifications and recommend changes to facilitate efficient and effective development.
- Interact with representatives of other industrial and government groups to understand and/or recommend data interchange formats, APIs, messaging strategies, application server software, as well as hardware and virtual machine requirements.
- Design and document subsystems and system components consisting of several objects working together to execute an encapsulated function of the larger system.
- Implement and debug subsystems and components.
- Write and execute tests for subsystems and components.
- Participate in integrated test sessions of components and subsystems on test and production servers
- Determine and communicate the implications of system-level decisions on subsystems and components and help determine how best to mitigate or take advantage of these implications.
- Determine and communicate the requirements and capabilities of components within the context of the larger system, project, and team.
- Support management of the team’s technical infrastructure (e.g., repository, build system, testing system) under guidance from the systems engineer or other project leader.
- Participate in efforts to share software technology and expertise within the company; mentor junior and aspiring engineers.
- Write code to create single thread, multi-threaded, or user interface event driven applications
- Use source debuggers and visual development environments
- Write, modify, and debug software for client applications
- Design, deploy and support best in class software development processes and tools
- Test and document software for client applications
Required Skills and Experience:
Includes the responsibilities of the Software Development position and individuals having the ability to and competency of performing the tasks from that prior level.
- A bachelor’s degree in Computer Science or equivalent work experience.
- Five + years of experience independently designing and implementing small or medium-sized software systems and components.
- Knowledge and experience with data exchange formats such as: JSON, and XML.
- Knowledge and experience working with and/or developing REST APIs.
- Knowledge and experience with a continuous integration and continuous delivery (CI/CD) tool (e.g. Jenkins, TeamCity, Bamboo, GitLab).
- Experience in maintaining ASP classic web applications
- Leadership skills
- Successful design and implementation of multiple software components and subsystems.
- Strong attention to detail and ability to multitask
- Ability to communicate the design and implementation of software systems including relevant strengths/weaknesses and reasons for implementation decisions.
- Knowledge and experience of T-SQL and Internet Information Services (IIS)
- Experience working in an Agile SCRUM methodology is a plus.
- Experience with Agile project management tools (e.g. JIRA) is a plus