Ask HN: What does a C++ fullstack mean to you?
Found the job posting, &quot;Sr Engineer - Embedded Software in Santa Barbara, CA at Arthrex&quot;.<p>Here&#x27;s the full text:<p>JOB DESCRIPTION<p>Requisition ID: 24241<p>Title: Sr Engineer - Embedded Software<p>Division: Arthrex California Tech<p>Location: ACT Santa Barbara, CA<p>We at Arthrex are looking for an amazing Embedded Application Developer with a solid background in modern embedded application development to join our growing team. We are looking for someone who is self-motivated and who strives for greatness in all aspects of embedded development from low level systems all the way to front-end development. You will be joining a talented group of software developers at a global medical device company and deliver products and tools that help surgeons and their staffs provide great surgical outcomes for their patients. This is an opportunity to make an immediate and lasting impact in all phases of the application development lifecycle.<p>Candidates must take extreme pride in delivering software that provides great value, is scalable, and easy to maintain. Applications are typically written for Linux in C&#x2F;C++, but we do also use some Python and Java (specifically Android) for our User Interface. We are big proponents of open source technologies and other technologies that we are currently using include SQLite, Redis and JSON. An ideal candidate will feel comfortable contributing to all aspects of our stack. We work closely with all members of the larger team including Operations, Mobile Developers, UI&#x2F;UX, QA and project management teams.<p>About You:<p>Passionate about software development, specifically web technologies and web services Motivated, loves to learn, and thrives in a dynamic environment Has a track record of building applications and bringing them to production Wants to be part of a high performing team that makes a difference Some Details:<p>Likes to take an active role in all stages of the application development: conceptualize, design, build, test and release Excellent C&#x2F;C++ programming language skills with Python experience a plus Strong experience with multi-threaded application design Knowledge of embedded programming environment with open source tools Strong Linux operating system skills Java programming for Android would be great, but not required Comfortable using Git Experience with Agile development methodologies About Us<p>Arthrex is a global medical device company and a leader in new product development and medical education in orthopedics. As the software development team, we create innovative products to help support the company in education and research opportunities for our customers.<p>Main Objective:<p>Responsible for full life cycle development of Class I and II medical devices, which includes architectural design, interface design, analysis and simulation, prototyping, design assurance testing, development through production release, and product maintenance. Recognized as technical leader and resource.<p>Essential Duties and Responsibilities:<p>Lead software architect and specification developer to ensure robust, sustainable and scalable design approaches that meet design intent. Lead the design &amp; development of various subsystems of complex multi-process architecture. Effectively identify &amp; mitigate potential risks during course of projects Define &amp; develop reliable, efficient &amp; reusable software components in C&#x2F;C++ for Linux targets Identify key system performance bottlenecks, propose effective and scalable strategies to address them, and incorporate these strategies into a programming environment, with emphasis on run-time software layers including drivers, middleware, and APIs. Architect, develop and maintain defined software interfaces with hardware components and firmware. Design optimization through modeling, simulation and analysis. Experience with agile methods as they relate to software development and SCM practices. Input and direction to other members of the engineering staff to assist them in their assignments and provide them with learning experience. Support the development team to ensure the team exceeds expectations &amp; delivers high quality solutions on schedule. Coordination with in-house and contract developers in distributed development environment. Provide expert consultation in one or more areas of design, development, and implementation of technical products or systems. Recommend alterations to development and design to improve quality of products and&#x2F;or procedures. Support development of budgets and timelines for projects. Key technical contributor to multifunctional new product project teams through project technical feasibility analysis, initiation, planning, execution, and termination, adhering closely to project timeline and budget. Support design history file deliverables for assigned projects, adhering to design control procedures. Provide Regulatory department technical support for assigned projects as needed. Support Marketing and Product Management with technical information to be used for training and marketing of assigned products. Support surgeon and distributor customers by training and&#x2F;or educating on technical aspects of assigned products as needed. Report progress and status of assigned projects on a timely basis. Some required domestic travel to attend trade shows and visit established accounts as well as prospective accounts. International travel may be required. Incidental Duties:<p>The above statements describe the general nature and level of work being performed in this job. They are not intended to be an exhaustive list of all duties, and indeed additional responsibilities may be assigned, as required, by management.<p>Education and Experience:<p>Minimum of a Bachelor of Science Degree in Computer Science or a related technical discipline required; MS preferred.<p>Minimum of 7 years of relevant product development experience is required.<p>Knowledge and Skill Requirements&#x2F;Specialized Courses and&#x2F;or Training:<p>Expert experience in Linux OS Experience in embedded system design, bring-up, debugging, analysis and performance tuning. An understanding of the design issues and tradeoffs at the hardware&#x2F;software boundary in real-time, high-performance systems Expert C&#x2F;C++ programming and problem solving skills. Python and Java experience desired but not required. Database (SQL) experience desired but not required. Multithreaded Linux systems programming experience Strong troubleshooting skills on hardware, Linux configuration, peripheral device and network configuration Knowledge of embedded programming environment using open source tools. Expert skills in debugging, troubleshooting, and system optimization Well-versed in Unit Test Creation and working with continuous Integration environments (Jenkins) Experience with, knowledge of and discipline in standard System Development Lifecycle practices including translation of business requirements into a System Design document, Source Code Version Control (Subversion, Git, etc.), and maintenance. Experience working in an Agile environment (Scrum, Lean or XP) Experience with Test-Driven Development desired but noe required. Experience conducting and participating in Code Review sessions Excellent problem solving skills and strong verbal&#x2F;written communication skills Machine, Tools, and&#x2F;or Equipment Skills:<p>Knowledge of surgical equipment and instrumentation, hardware deguggers, software development environments and degugging tools, static code analysis, network protocols and hardware interfaces..<p>Bench top testing and troubleshooting with typical lab equipment.<p>Reasoning Ability:<p>Ability to define problems, collect data, establish facts, and draw valid conclusions. Ability to interpret an extensive variety of technical instructions in mathematical or diagram form and deal with several abstract and concrete variables.<p>Mathematical Skills<p>Ability to comprehend and apply mathematical principles to the degree required to perform the job based upon job requirements.<p>Language and Communication Skills:<p>Ability to comprehend and apply language skills to the degree required to perform the job based upon the job requirements listed above. Ability to verbally communicate ideas and issues effectively to other team members and management. Ability to write and record data and information as required by procedures.<p>All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, disability or protected veteran status.