Job Description
The Sr. Software Engineer sets the direction for the design and implementation of software features/functionality/enhancements, correction of defects, and/or the creation of new products. Develops software tools including operating systems, compilers, routers, networks, utilities, databases, and Internet-related tools. Determines softwares compatibility with hardware and/or influences software's design in relation to hardware.
Essential Duties and Responsibilities:
- Acts as the subject matter expert in multiple product domains
- Responsible for one or more products
- Synthesizes multiple internal and external sources of input into product requirements
- Advises about requirements impact on key aspects of product and business and makes a corrective recommendation
- Guides and reviews testing strategy
- Documents and communicates on complex technical topics across the company
- Works well with all groups involved in the software development process to influence code and design to consider downstream implications for code
- Provides thought leadership and innovation within a technical domain
- Regularly puts forth ideas and implements them into the product
- Identifies, socializes and drives improvements having an impact across teams
- Knows how to innovate and refactor complex codebases in practical ways
- Able to select optimal data structures and algorithms to attain the best overall solution in respect to performance, reliability and security considerations
- Capable of architecting application modules
- Provides forward-thinking design to leverage platform in novel and optimal ways
- Actively participates in scoping features, developing work estimates, and plans for the team
- Works with software architects and product owners to ensure backlogs are populated and kept updated
- Works effectively with all stakeholders across all functions
- Communicates effectively across the organization, including with the leadership team
- Able to manage multiple competing priorities while remaining cool and collected
- Shows a sense of urgency while instilling confidence in other team members
- Excellent rapid prototyping skills, and produces high-quality code
- Acts as the technical subject matter expert across product domains
Required Qualifications:
- Minimum 9 years of software engineering experience
- Experience on C++ programming language with enterprise application development exposer.
- Good understanding of Linux/Windows operating systems.
- Must have experience on Multithreading, Databases & Memory management concepts
- Track record of successful software innovation, problem-solving, and product delivery at increasing scale and complexity
- Understands software development principles at a very deep level
- Expert knowledge of target operating system, common pitfalls, best practices for Reliability, Availability, and Security
- Able to think and code simultaneously, design on the fly and create rapid prototypes
- Able to take ownership of the design and development of entire components
- Able to define components and their interactions
- Able to identify and initiate improvements in component/module design
- Able to review designs and anticipate performance and reliability issues based on design and platform
Preferred Qualifications:
- Recognized by peers as a superior technical contributor
- Exemplary at dealing with uncertainty and ambiguity
- Proven success mentoring and developing more junior software engineers
Education:
- Bachelors degree in Computer Science, Engineering, IS, or related technical discipline
- Advanced degree, such as Masters in Computer Science, preferred