Software Engineer (Android Applications)
We are searching for an experienced KE - Software Engineer (Android) at our Panama facility.
Primary Roles and Responsibilities :
As a Software Engineer (Mobile) , you will assist in the development, and implementation of technology-based election solutions.
You will be implementing, testing and refactoring software applications based-on web technologies in embedded systems, and assisting in the design of these applications to meet both functional and technical requirements.
Within the engineering team you’ll also learn, teach, pair, review code, explore new technologies, implement best practices and help continuously improve the team in a fast-paced environment.
Lead periodic rapid refactoring that keep the applications’ code fresh, flexible and reusable.
Responsible for analysis of current programs including performance, diagnosis and troubleshooting of problem programs, and designing solutions to problematic programming.
Responsible for the maintenance of the development, build and deploy environment using the established toolchain, and continuous integrations tools.
Create clean interfaces and smooth interactions based on UI / UX designs.
Apply incisive design and exceptional coding skill to knock features off of the products' extensive and growing list of features.
Adopt and follow team development and engineering best practices and coding standards.
Review and repair legacy code.
Respond promptly and professionally to bug reports.
Work with the QA teams on defect resolution.
Required Skills and Qualifications :
Bachelor degree in Computer Science, Engineering, or related scientific field.
3+ years programming Android based applications.
Strong experience working with Android Studio.
Strong experience on Android debugging and tools.
Strong experience writing well-abstracted, both structured-like and object-oriented code.
Intermediate experience working with Gradle build tool.
Intermediate experience in web service (RESTful) development and integration.
Intermediate English written and spoken skills.
Experience with automated testing framework.
Knowledge of Android security architecture.
Experience on database development using popular libraries like SQLite and OrmLite.
Experience developing with JNI and NDK in Android applications.
Algorithmic design and implementation; reasoning through algorithmic tread-offs.
Knowledge of SOLID principles.
Knowledge of concurrency concepts and concurrency design patterns.
Knowledge of security and cryptography concepts.
Knowledge of computer hardware and software architecture.
Experience reverse engineering and finding vulnerabilities in code.
Experience programming globalized / localized applications.
Experience reading and writing UML diagrams.