Position: Linux Developer (C++) for Canadian product company
Company: SOTI
Experience required: 5y
English level: upper

What’s in it for you?
- The People - From our humble origins in our founder’s basement, to our industry leading position today, SOTI has worked hard to foster a company culture that we can all believe in. A culture that emphasizes personal growth, continuous innovation and fun. 
- The Growth - Our environment fosters new ideas, fresh perspectives, and the ability to take them over the goal line. SOTI is a fast-paced environment with a global reach that encourages you to make your mark and be part of something big!
- The Technology - You’ll get the chance to work with leading edge technologies and take on complex and interesting projects, as part of highly collaborative and agile teams. You will work alongside SOTI’s partners which include leading tech giants that will keep you on the cusp of emerging technologies. 

What You’ll Do
- Collaborate closely with IoT software and QA developers in an integrated geographically dispersed team.
- Design, implement and maintain Linux software in C/C++ utilizing industry standard methodologies and best practices, based on business, customer and technical requirements.
- Scope and analyze business and technical requirements to derive implementation estimates and plans in an agile development environment.
- Verify software and configuration defects and ensure appropriate automation is in place to improve unit and regression testing.
- Identify design and implementation issues across multiple Linux distributions and OEM IoT technology stacks to improve overall system design.
- Implement designs with a high level of code coverage utilizing a comprehensive set of unit and integration tests in collaboration with QA colleagues.
- Work closely with a team of software development, QA, and management colleagues to reach defined goals and meet deadlines.
- Commit to ongoing learning and development.
- Advocate for Object-Oriented design concepts, system robustness and reliability of implementation.
- Communicate clearly and effectively across all levels of the organization.
 
Experience You’ll Bring
- Post-secondary education in Computer Science or Computer Engineering.
5-10 years of experience as a software Linux IoT or systems software developer.
- Demonstrable experience developing software in C, C++, shell, and scripting languages on Linux systems and distributions.
- Demonstrable knowledge of Linux system architecture and components, software deployment and lifecycles, and knowledge pertaining to network configuration, DNS, and TCP/IP.
- Demonstrable experience with git, Linux development toolchains such as gcc/g++, make, CMake, Linux distribution package managers.
- Experience developing software in an Agile environment.
- Experience with automated test tools and frameworks for Linux environments.
- Superior analytical skills for diagnosing and troubleshooting software functional and performance issues on Linux systems using standard tools such as gdb and strace.
- Aptitude for quickly learning different IoT OEM vendor technologies and tools.
 
Nice to have 
- Deep understanding of the Linux process model, file system and permissions, socket programming, OSI network model, systems programming, and security.
- Exposure to CI/CD tools such as GoCD/Jenkins.
- Experiencing porting Linux code to esoteric Linux IoT platforms such as Tizen.
- Experience utilizing Jira in Scrum or Agile based development environment.