The Role
Rakuten Kobo's eReader team is looking for an experienced Software Developer to work on our range of eReader devices. You will be joining a software delivery team of ~15 to work on building and enhancing some of the top eReaders in the market.
Here are some of the things we do and strongly believe in :
- We follow an Agile development process and teams are encouraged to try new things and make suggestions to continuously improve
- We’re dedicated to crafting high quality, peer reviewed code and we’re working on growing our automated test suite
- Every member on the team has a voice and is welcome to contribute to planning and designing
- QA is embedded on our development teams and are involved in projects from day one
- We host regular learning sessions on various engineering topics hosted by members of the team
Responsibilities :
As a member of an Agile development team :
Design, implement, and test new functionality for Kobo eReader devicesPropose and carry out refactoring within the codebase to improve design and qualityDebug and fix defects found by QA and customersReview code for other developers on the teamEstimate the effort for future work as an input to planningCollaborate within the eReader team on improvements to our processes and code base.Share your knowledge to help grow other members on the team and in turn learn from other members on the team.Requirements :
Strong object-oriented design skills, incorporating design principles and patternsStrong in identifying and explaining trade-offs and rationaleConverting final state designs into a sequence of smaller testable incremental stepsStrong skills in reviewing code and providing feedback (with rationale) to improve codeFollowing modern development best practices in C++11 (or newer)Experience developing graphical user interfaces in C++ using Qt or a similar libraryExperience with embedded development, preferably on Linux5+ years of experience as a developer in an Agile development environmentStrong written and verbal communication skills in EnglishFamiliar with : Multi-threaded applications development, Web technologies (JavaScript / CSS / HTML / HTTP / etc.)Bonus points :
Experience with GCC, ARM toolchains, and shell scriptingExperience with writing and maintaining automated tests in C++, ideally including :Use of dependency injection and mocking frameworksUse of test frameworks such as Google TestUser interface testsExperience with TDDFamiliarity with the EPUB format / standardEInk screen experienceDatabase experience with SQLite