Perform software design based on input from clinical users, characteristics of the existing software base, consultation with other engineering staff, and system functional requirements
Perform software implementation, following coding guidelines and taking into account system characteristics to produce optimal performance, reliability, and maintainability
Conduct software evaluation and testing of own software, software from other engineering staff, and third-party software
Provide a test plan for use by other engineering staff, quality assurance and support departments in validating a new implementation
Provide technical documentation for the design, implementation and testing of the software
Attend design review meetings as needed to adhere to the software development procedures
Support the software by handling escalated service calls
Document and repair errors related to software
Enhance professional growth and development through participation in educational programs, current literature, in-service meetings and workshops
Assist the engineering staff in clarifying requests for software changes and understand reported problems
Responds to requests via CliniComp\'s engineering and support ticket systems in a timely manner
Perform other special projects, duties or changed duties to accommodate customers or to meet schedules as needed or directed
Basic Qualifications:
Bachelors degree in Science or Engineering. For example: Computer Science, Physics, Electrical Engineering, Cognitive Science or Mathematics. 5 years of relevant work experience will be considered in place of the degree.
5 - 7 years of relevant work experience to be considered for Software Engineer, Embedded.
8 or more years of relevant work experience to be considered for Sr. Software Engineer, Embedded.
Ability to obtain ADP-II clearance
Strong written and verbal communication skills. Can tailor communication for engineers or non-technical staff.
Passion for software and hardware development
Efficient worker who leverages the latest technology and tools to improve productivity
Committed to constant self-improvement, stretches into new areas of technology, constantly learning
Focused on product quality, user experience and customer service
Follows software development process, requirements, review, verification and validation.
Resilient personality, able to thrive in a challenging environment with aggressive goals.
Resourceful, not afraid to ask questions. Uses books, internet resources, other employees and their professional network to proactively find answers.
Good work ethic, completes tasks on time, meets commitments, accountable, takes responsibility, shows initiative.
AT TIME OF HIRE:
C / C++ programming
Working with Linux in a command line environment using the following utilities: bash, sed, awk, grep, find, vi, diff, strings
Linux software development tool chain: gcc, make, ld, nm, ldd, ar, gdb
Reads and correctly interprets specifications
Can install, configure and maintain at least one major Linux distribution
Understands TCP/IP network concepts: IP address, netmask, sliding window, UDP, MAC Address, arp, framing
Computer science concepts: Queuing theory, data structures, processes/threads, inter process communication, file systems, matricies, Big O notation, sorting, searching
3 MONTHS AFTER HIRE:
SQL (especially SQLite)
Android software development including NDK
Eclipse IDE
Reads and understands electronics schematics and board layouts
HTTPD, SSL certificates, certificate databases
Can install, configure and maintain RedHat Enterprise Linux 7