The main function of a Software Engineer is to design, develop, implement, test, and maintain business and computer applications software or specialized utility programs, including client/server applications, as well as major enhancements to existing systems.
Key projects:
- Fine‑tune and improve a variety of sophisticated software implementation projects
- Gather and analyze system requirements, document specifications, and develop software solutions to meet client needs and data
- Analyze and review enhancement requests and specifications
- Analyze existing complex implementations based on legacy APIs and develop design based on newer APIs
- Independently read and understand the architecture of complex systems software with a view to modernize it
- Implement system software and customize it to client requirements
- Prepare detailed software specifications and test plans
- Code new programs to client specifications and create test data for testing
- Modify existing programs to new standards and conduct unit testing of developed programs
- Create migration packages for system testing, user testing, and implementation
- Perform post‑implementation validation of software and resolve any bugs found during testing
- Write clean, maintainable systems‑level code in C and C++
- Work effectively in a Windows OS development environment (strongly preferred)
- Independently debug and fix issues in legacy software by adding instrumentation, traces, and using tools such as Windows Debugger
Candidate Requirements
Must haves
- Solid understanding of Operating Systems, preferably Windows
- Read and write C/C++ code.
- Ability to rapidly gain understanding of kernel driver APIs.
- Insufficient proficiency in reading and writing code is a main disqualifier for all related requisitions.
- Less than 3 years of relevant work experience is also a disqualifier, as the team cannot spend significant time training new hires.
Best vs. Average
- Bachelor's degree in a technical field such as computer science, computer engineering, or related field required
- 5–7 years of experience required
- A solid foundation in computer science, with strong competencies in data structures, algorithms, and software design
- Large systems software design and development experience
- Experience performing in‑depth troubleshooting and unit testing with both new and legacy production systems
- Experience in programming and experience with problem diagnosis and resolution
- Strong operating systems knowledge with hands‑on experience writing systems‑level code in C and C++
- Proficiency with debugging tools and techniques, including Windows Debugger, instrumentation‑based analysis, and WPP/ETW trace collection and analysis