Position ID
SE
Job Title
Software Engineer
Description
- Involving in development of Nerve Integrity Monitor (NIM_4.0) which is used during surgery to monitor electromyography(EMG) activity from muscles.
- Determine systems software design requirements.
- Gathering requirements by discussing new features with product owner & going through the features from existing product NIM_3.0 and logging those requirements as product backlogs into Visual Studio Team Services.
- Responsible in various phases of project’s lifecycle: which includes requirements gathering, analysis of existing system, design flow, research and development, unit testing.
- Involve in sprint retrospectives to discuss what went well and what should be improved together as a team as going forward in development.
- Designing user interface to make it maintainable using MVVM pattern, converters and threading.
- Creating user controls for the UI using WPF/XAML to give standardized look and feel and to make the user interface more user friendly.
- Creating user controls and custom controls like toggle switches, sliders, radio buttons, combo boxes, dialog boxes that could be used across the whole project.
- Designing the UI by following design standards for text visibility, visibility of the icons used, touch areas for buttons, defining specific colors to be used for displaying messages/alerts in overall project.
- Using Managed Extensibility Framework (MEF), Reactive Extensions and following the Model-View-View-Model (MVVM) pattern by binding properties to XAML and implementing the core business logic in C#.
- Using the concept of Reactive Extensions (Rx) to decouple and simplify code, especially regarding events and data subscriptions so, the UI will respond immediately on any changes from the hardware devices based on the subscriptions from properties and events and behave accordingly.
- Supporting in integrating the software with hardware along with wired/wireless accessories.
- Using AMQP messaging protocol embedded in RabbitMQ server is the communication between the software and hardware.
- Interacting with firmware engineers to evaluate interface between firmware and software for the overall system. So, the designing of the code can be reusable.
- All the properties are saved in XML file with its default value, minimum & maximum value, its data type
- Logging all the exceptions, page navigations, property changes, time stamps for every change, connections statuses and device type of peripheral devices.
- Translating of texts to different languages through use of Advanced WPF localization library. Pulling the string translations from the culture-specific resource file which matches the CurrentUICulture of the main application and applying them to .xaml using “Loc” markup extension.
- Participating in technical code reviews with the team in between sprints to discuss ongoing development tasks taking suggestions on what can be improved, new ideas and transferring knowledge on different concepts on how to use and where to use different concepts which we can make use while developing the code.
- Using visual studio 2017 for developing the source code, GIT for committing our changes to source code and a pull request for the latest.
- Unit testing all the class files, methods using moq by basically creating a mock object which wraps around interface and define how the mock object should respond.
- Supporting test team on what needs to be tested providing them with all the information needed
Qualification
Bachelor’s degree in Computer Science or a closely related field
Location
USA