Worker Type
Regular
Job Description
Summary
As a Principal Software Engineer, leads and mentors a talented group of software developers in a fast moving, collaborative Agile development environment. In this role, one oversees plans, design, development and testing of software systems or applications for software enhancements and new products to support autonomous unmanned aerial vehicles. As an expert in the field, one uses professional concepts in developing resolution to critical issues and broad design matters.
Position Responsibilities
Works on defining software life cycle development process and requirements
Supervises and oversees technical software development in support of programs
Presents at and leads internal and external software design reviews
Oversees creation of software design documentation according to software process requirements
Contributes to process improvement efforts and ensures compliance with coding standards
Ensures team delivers work on-time according to agreed completion dates and within project schedule and budget
Derives software architecture and algorithm design from detailed software requirements
Works closely with multiple teams of software developers and reports updates to senior management
Operates in a continuous learning environment and provides knowledge transfer and mentoring to less experienced engineers
Acts independently to determine methods and procedures on new or special assignments.
May supervise the activities of others
Basic Qualifications (Required Skill s & Experience)
Advanced degree in Computer Engineering, Computer Science, Electrical Engineering, Math, or Physics is required or equivalent combination of education, training, and experience
Minimum 15+ years of relevant experience in Windows or Linux application software development. Object Oriented Design experience is required
Experienced with formal and structured software lifecycle development process
Familiar with software design patterns, SDLC, and STLC
Expertise in one of the following: C# .Net, C++, C, and/or Python
Experienced writing unit tests and debugging code
Experienced with Agile Software Development Process Management
Demonstrated mathematical and analytical skills are required
Demonstrated familiarity with source code configuration management tools such as Git as well as familiarity with CI/CD tools, IDEs and debuggers
Willingness to travel locally (Occasionally)
Other Qualifications & Desired Competencies
M.S. or PhD is preferred
Experience with computer vision and machine learning, especially on embedded systems
Experience with UAS, drones, robotics, autonomous vehicles, or other embedded systems
Familiar with real-time control systems, especially advanced estimation techniques
Demonstrates capacity as an innovator and subject matter in the field
Demonstrates understanding of object-oriented design, data structures, database, and operating systems. A basic knowledge of networking is preferred
Demonstrates leadership skills and sound judgment in selecting methods and techniques for obtaining solutions
Demonstrates effective listening, questioning, clarifying and summarizing skills to effectively communicate in one-on-one and small group settings
Able to excel in a fast-paced, deadline-driven environment, where small teams share a broad variety of duties
Displays strong initiative and drive to accomplish goals and meet company objectives
Takes ownership and responsibility for current and past work products
Is committed to learning from mistakes and driven to improve and enhance performance of oneself, others, and the company
Has effective problem-solving, analytical, interpersonal and communication skills
Focuses on teamwork, collaboration and puts the success of the team above one's own interests
Physical Demands
Ability to work in an office environment (Frequent)
Required to stand and sit for long periods; talk, hear, and use hands and fingers to operate a computer and telephone keyboard…