Detailed design component:
Use your specialist skills and experience as a Developer to design the software in detail, working with the Architect on a product team.
Design classes, interfaces, data structures and algorithms that are elegant, efficient, modular, reusable, testable, maintainable and follow good software design practices.
Keep abreast of industry design best practices, such as the use of design patterns and frameworks.
Undertake technical investigations and produce proof-of-concepts prototypes with the Lead Developer where required to solve problems and resolve technical challenges.
Keep abreast of good programming practices, new software language features, tools and libraries.
Have a thorough understanding of the languages, tools and libraries on the company technology stacks for desktop and server-side web service development, particularly specialising in those related to C#; and/or MFC, ATL COM and C++/CLI for those specialising in C++. Aim to gain specialist expertise in one or more libraries used at CADS such as Developer Express, DirectX and/or OpenGL.
When developing software, ensure the relevant parts of the Software Requirements Specification and the Software Architecture are understood, raising queries to the Lead Engineer and the Lead Developer as required.
Develop source code in accordance with the company Coding Standards.
Skilled in designing and implementing testable code
Doing design review, code review and unit testing of software features
Interacting with Engineering and Marketing teams to understand the requirements and implement them.
Fixing of defects raised by testing teams and customers .
Ensure that unit tests provide 100% coverage of your code (of the modules under test) and ensure they cover the relevant combinations of inputs, outputs and error conditions.
Using mocking frameworks on the company technology stack, such as Moq, where required.
Bachelors or Masters degree or appropriate experience
Hands on Experience in C#/.NET, WinForms, server-side web service development
Experience in Object Oriented design and Design patterns.
Ability to learn new technologies and solve problems effectively
Proven experience as a professional software developer
Excellent analytical ability and an eye for detail and quality
Experience in using Developer Express, DirectX and/or OpenGL will have added advantage