Embedded C++ Programmer
|Job Location:||Toronto, Ontario
General Mission: To perform design, analysis, programming and integration activities in the development of software for train control systems
- Understands the customer's needs and through life cycle concerns whatever the used means (e.g. advanced studies, simulations, mock-ups, models, prototypes, etc.).
- Contributes to the formalization of mission/function description, architectural & algorithms design and the refinement of functional and non-functional requirements.
- Designs, codes, debugs, write test procedures and tests software code, chairs design reviews.
- Reviews code, test procedures and test results
- Analyses and implements correction for defect reports
- Perform engineering testing in the field and investigates problems in the field.
- Contributes in co-engineering activities with the Systems Engineering team in order to ensure system- software consistency and the right refinement of software components and compliance with the software architecture.
- Solves tasks in the best technical and timely manner. Looks for opportunities and make suggestions for improvements.
- 5+ years of working experience in software development in C++
- Command of scripting languages, preferably Python
- Experience with black box and white box testing and continuous integration frameworks
- Familiar with source control tools (git, ClearCase, etc.), static analysis (PC-lint, Coverity, etc.), build system automation
- Excellent analytical skills, able to diagnose issues based on field logs & correlate events to failures
- Strong technical writing & communication skills
- Excellent team collaboration skills, writing & verbal skills
- VectorCAST/C++ or other unit/component test tools
- Embedded development for ARM based microcontrollers or other embedded platforms
- Familiar with Linux, GCC, Eclipse, ARM/Keil tools, TCP/IP, Ethernet, SDLC/HDLC, CAN Bus, RS-232, RS-485, National Instruments products
- Familiar with agile work environments, test-driven development, & continuous integration
- Working knowledge of modern software engineering practices, methods & tools
- Experience developing for safety critical systems (CENELEC, DO-178B/C, etc.)
- Experience with large mission-critical & multi-platform heterogeneous systems
- Comfortable with oscilloscopes, multi-meters, logic analyzers, electrical schematics, lab environments, on-site test & debug