Principal Software Engineer
Marlborough, Massachusetts, United States
Doble Engineering Company
Understand asset health through Doble diagnostic test equipment, software & services for the electric power industry.JOB SUMMARY
We are seeking a Principal Software Engineer for Embedded Application Development who will be responsible for providing leadership in the development of cutting-edge test and monitoring products used in the power industry. This position requires the application of technical expertise to lead the team in the development of new products and features for our instruments. The technical leader will be required to work with minimal direction and will be given considerable latitude in determining the technical objectives of assignments with the cooperation of development managers. This role will be based in our Marlborough, MA office reporting to the Firmware Development Manager.
ESSENTIAL JOB FUNCTIONS
- Design, develop, test and document software components and applications
- Focus on embedded real-time, multi-processor systems but comfortable with design of PC based applications
- Work with engineering project teams to provide architectural leadership
- Lead technical requirements gathering, estimating, and planning efforts
- Leverage internal component reusability and open source solutions to improve time to market
- Develop products to promote the ease of implementing automated test suites
- Familiar with message bus technologies and implementations
- Develop clear development metrics for testing status and progress monitoring dashboards
- Develop a skill set to be a key person to technically triage customer issues, as needed interface to the customer
- Mentorship of junior engineers and on-going professional development activities
- Interface with mechanical, electrical, systems, and test engineers
- Identify and implement process and development environment improvements
- Responsible for working with development and project managers to assist in technical decision making
- Ensure cross product implementation consistency
- Work with other product teams on solutions
- Travel requirement: less than 5%
QUALIFICATIONS
EDUCATION:
- Bachelor’s Degree in Electrical Engineering, Computer Engineering or Computer Science or equivalent.
REQUIRED EXPERIENCE:
- 15+ years of work experience in firmware and software development on embedded devices
- 5+ years of work experience in a technical leadership role
- Expertise in multi-threaded and multi-core application development with C++11 or higher version
- Solid understanding and experience in object-oriented analysis, design and implementation
- Familiarity and experience working with Linux based application development, Device drivers, Makefiles, build system and scripting languages such as python and bash
- Basic understanding of networking, TCP/UDP/IP, DHCP, Ethernet frames, IP packets, VLANS and COS
- Working experience with DMA engine, I2C, SPI, network switches, and designing hardware and software interfaces
- Experience managing code management systems such as Bitbucket
- Team communication and collaboration experience (Such as a wiki)
- Experience working with hardware teams to isolate failure causes
- Proven track record of proactively working with the development and QA stakeholders
- Strong technical capabilities of a developer combined with a passion for assuring product quality
- Project management skills, including planning, estimation and requirements management
PREFERRED EXPERIENCE (Not Required):
- Experience working in an agile engineering environment
- Experience Windows applications with C#
- Experience working with Atlassian Jira, Confluence
- Knowledge of network equipment including protectors, relays, transformers and power cables
- Knowledge of IEC 61850 communication protocols
- Strong communication skills that interweave presentation skills with the problem-solving process
- Strong interpersonal skill set
- Strong computer skills including network load flow software
- Well-developed technical writing skills
KNOWLEDGE, SKILLS & ABILITIES:
- Expert knowledge of scripting and programming languages including C/C++ and Perl/Python
- Expert knowledge of embedded multiprocessor systems, software/hardware test and validation, bug life cycle management, software development methodologies (waterfall and agile)
- Ability to express ideas clearly in written and oral communications
- Willingness and motivation to assume increased responsibility
- Ability to quickly prototype new concepts and ideas
- Ability to provide creativity while solving complex problems without known solutions
PHYSICAL REQUIREMENTS:
While performing the duties of this job the employee is often required to stand, sit, use computers, read, write, type, use copy machines, file paperwork, use telephones, and utilize written and oral communication to interact with clients, co-workers, and customers. Reasonable accommodations may be made to enable individuals to perform the essential functions of this job. Must be capable of lifting 30 pounds. Must use assistance when lifting 50 or more pounds.
Actual base salary offered to the hired applicant will be determined based on their work location, level, qualifications, job related skills, as well as relevant education or training experience.
Salary Pay Range Minimum $137,042.07 - Midpoint $171,302.58
Equal Opportunity Employer/Protected Veterans/Individuals with Disabilities
We are an Equal Employment Opportunity employer that values the strength diversity brings to the workplace. All qualified applicants, regardless of race, color, religion, gender, sexual orientation, marital status, gender identity or expression, national origin, genetics, age, disability status, protected veteran status, or any other characteristic protected by applicable law, are strongly encouraged to apply.
The Americans with Disabilities Act of 1990 (ADA) prohibits discrimination by employers, in compensation and employment opportunities, against qualified individuals with disabilities who, with or without reasonable accommodation, can perform the “essential functions” of a job. A function may be essential for any of several reasons, including: the job exists to perform that function, the employee holding the job was hired for his/her expertise in performing the function, or only a limited number of employees are available to perform that function.
Tags: Agile Bitbucket C++ Computer Science Confluence Engineering Jira Linux Open Source Perl Python Testing Transformers
Perks/benefits: Career development
More jobs like this
Explore more career opportunities
Find even more open roles below ordered by popularity of job title or skills/products/technologies used.