The main function of a software engineer is to apply the principles of computer science and mathematical analysis to the design, development, testing, and evaluation of the software and systems that make computers work. A typical software engineer research, designs, develops and tests operating systems-level software, compilers, and network distribution software for medical, industrial, military, communications, aerospace, business, scientific and general computing applications.
Top 3 must-have HARD skills:
- Experience in performance modeling
- Fluency in programming with Python / C++
- Experience working with hardware acceleration (e.g., GPU, DSP, ML accelerator, CPU kernel library)
Good to have skills:
- Experience with machine learning or HPC workloads
- Experience in cross-group and cross-functional collaboration with excellent communication skills
- Experience in specific machine learning models
- Relevant experience: 5+ yrs., total experience: 10+ yrs. (not strict, grad school experience can count)
- Bachelor’s degree in computer science, similar technical field, or equivalent practical experience.
- Review and approve the modification of existing databases and database management systems.
- Instruct staff to write and code logical and physical database descriptions and specify identifiers of database to management system.
- Direct database development and approve project scope and limitations.
- Review project requests describing database user needs to estimate time and cost required to accomplish project.
- Plan, coordinate, and implement security measures to safeguard information in computer files against accidental or unauthorized damage, modification or disclosure.
- Approve, schedule, plan and supervise the installation and testing of new products and improvements to computer systems.
- Develop standards and guidelines to guide the use and acquisition of software and to protect vulnerable information.
- Verbal and written communication skills, problem solving skills, customer service and interpersonal skills.
- Expert ability to work independently and manage one’s time.
- Expert mentoring skills necessary to provide support and constructive performance feedback.
- Expert knowledge of the full software development lifecycle: from business/systems analysis, through requirements gathering and functional specification authoring, to development, testing and delivery.
- Expert ability to troubleshoot issues and make system changes as needed to resolve issue.
- Expert knowledge of computer hardware and software.
- Knowledge of computer development software as it relates to systems, such as SQL, VisualBasic, etc.
- Bachelor's degree in computer science, software engineering or relevant field required.