As a member of the R&D team, the Software Development Engineer 1 is an entry level software engineer who develops, tests, troubleshoots, maintains, and debugs software components for existing or new products. The role works within a team of software engineers on problems of limited scope and complexity which are structured to develop knowledge and experience; receives general guidance and direction on work that may span multiple disciplines of software engineering; and follows established practices and procedures to achieve overall program performance, schedule and quality standards.
Duties:
- Under general guidance, performs technical work requiring application of basic software development methodologies to complete assignments to required standards of quality and timeliness
- Develop technology components that would integrate with larger SDS (Software Defined Storage) platform and product
- Performs specific and limited portions of a broader project assigned to a higher-level Software Engineer
- Solicits input and expertise to carry out assignment correctly
- Follows the software development process and adheres to standards to produce high quality software
- Applies DataCore’s software engineering processes and standards
- Communicates technical issues within scope of assignment
- Establishes and maintains thorough and accurate documentation of all work; communicates technical issues within scope of assignment; may assist with technical specification documentation and review
- Implements, unit tests, debugs, and integrates code of assigned projects
- Performs preliminary tests to verify the functionality, accuracy, and efficiency of developed or enhanced software
- Performs maintenance functions to correct errors as necessary; documents and reviews all results with higher level engineer
- Learns principles of continuous work practice improvement through involvement in post project review
- Implements and maintains quality improvements to process and products as they are introduced into the development process
- Coordinates own development activities on routine work and cooperates with other programmers and scrum team members on technical aspects related to the project
Knowledge, Skills, Abilities:
- Kernel development focus:Kernel or device driver experience with an understanding of low-level interactions between hardware and software Experience with Systems Software development over Windows OS.
- Windows services & desktop applications focus:knowledge / experience of designing, coding and debugging in Windows C++, C# .Net. Experience with systems software development over Windows OS
- Full Stack development focus:Knowledge / experience of tools/technologies including C#, Python, MVC, SPA, Java Script, CSS, HTML5, & Front-end frameworks like JQuery, Angular, TypeScript, etc. Thorough understanding of Object Oriented Programming principles. Knowledge / experience developing and consuming APIs (REST, SOAP)
- .Net development focus:Experience of developing and debugging in systems software domain on Windows with C++, C#, .Net programming
- UI developer focus:Strong understanding of front-end coding and development technologies. Mastery of C++, Java or other programming language
Education/Experience:
- Bachelor’s degree or equivalent in computer science, electrical engineering, or related field
- 3-5 years software development experience
- Demonstrated understanding of Computer Science fundamentals and basic proficiency in a programming language(s)
- Understanding of basic software lifecycle process
- Knowledge / hands on experience of modern DevOps practices for CI/CD.
- Knowledge / experience with multiple development processes like DDD and TDD
- Self-starter with extreme comfort in working with geographically dispersed teams
- Experience working with products in Storage and related domain will be a strong plus
- Knowledge of Storage related concepts (mirroring, encryption, snapshots, replication, etc.)
- Good general working knowledge of the SCSI specification and common transports