Position: Senior C++/Embedded Android Engineer
Company: Waverley Software
Category: Android
Experience required: 5y
English level: intermediate

Our client is a Smart terminals and open commerce platform provider based in the USA. 
Customer’s real-time data pipeline ingests, normalizes, and aggregates billions of events from the apps and Smart Terminal, and deliver instant insights and trigger alerts on web/mobile apps for each of our customer types. They constantly tread the line between performance and scalability, using many different backend tools and optimizations to produce the most useful yet fastest interfaces and alert.

Responsibilities:
-Work on customer and merchant reported issues
-Identifying and re-architecture key modules
-To fix bugs and stabilize the client's Android OS
-Possible rewriting of certain features so core functionality is portable between different versions of OS:  KitKat, MarshMallow, Pie, etc
-3rd party HW and SPI software/SDK support
-The areas of the OS to work on are:  from the HAL to SDK, some application work, very little UI work, and SDKs created in Java
-Help implement unit tests and automate them where they are lacking

Hard skills:
-6+ years of experience of commercial in development
-Ability to write and understand C++ code is critical
-Linux kernel, drivers, interrupt structure, HW/SW interaction
-Very strong computer science skills and approach problems from a theoretical point of view.  (e.g.: threads, Linux OS, OSI model, data structures, optimizations for performance and power, compilers)
-At least Intermediate English (verbal and written)

Nice to have:
-Experience with development of payment systems (including payment terminals)
-Knowledge of the AOSP build system or ability to get up to speed quickly.
-Comfortable in working with scripted makefiles and gradle build systems
-Expertise at Java, Python or other  scripting language
-Expertise in Android app developmen
-Ability to use source control systems such as Gerrit, Github, make branches, merge branches, resolve conflicts, etc

Soft skills:
Ability to get up to speed quickly, mental agility, ability to work on multiple areas of the code.  For example:  using your CS background and general curiosity, be able to identify optimizations for power (battery life) and speed of execution
Extremely proactive to resolve issues quickly