Job Opportunities

The position of Software Engineer is a demanding one, requiring the skills of a professional with a minimum of a bachelor’s degree in Computer Science or a related field.

JOB TITLE: Software Engineer at NimbleDroid
Job Role: We are seeking a Software Engineer with strong programming fundamentals and a keen attention to detail to join us. We are particularly interested in finding a talented candidate who is a self-starter, with a proven track record of developing mobile applications. Candidates should have an enthusiasm for the mobile ecosystem, and an interest in dabbling with the full technology stack.
Job Responsibility:
  • Design and implement the profiling software to measure, diagnose, and optimize the performances of mobile applications using the C/C++ programming languages. Create, develop, and manage the technical architecture including software stack configuration; measurement, diagnosis and optimization algorithm design; API development; and deployment. Specifically, this task involves designing algorithms that can measure performance accurately without causing high overhead, implementing the algorithms in C/C++ programming languages, integrating with Android’s Dalvik VM which itself is written in C/C++, and deploying the resultant system into our NimbleDroid Performance-Diagnosis-as-a-Service.
  • Porting the profiling software to different Android devices. Due to the open source nature of Android, different OEMs often customize Android for their devices, so that NimbleDroid’s profiling software needs to be customized accordingly. Use open source tools and technologies to extend and improve the functionality of NimbleDroid’s platform.
  • Design and implement algorithms to analyze a large set of performance data and pinpoint which application methods are inefficient using the Python programming language. Establish a knowledge base of mobile application performance issues and suggested fixes to these issues. Perform analysis of mobile application developer requirements for performance, development task estimation, adherence to architecture and design, generation of technical documentation and coding, unit and systems testing. Provide support in clarifying requirements and overcoming obstacles to meet the developers’ goals. Accountable for solution strategies which support mobile app productivity, maintainability, interoperability, and product growth.
  • Architecture, maintain, and secure NimbleDroid’s product in Amazon Web Services using Amazon Elastic Cloud, Amazon Simple Storage Service, open source key-value store Redis and document store Rethinkdb.
  • Design, implement, and maintain NimbleDroid’s product’s web frontend and backend using the Ruby-on-Rails framework; apply a set of Ruby gems including Devise for user management, Sidekiq for distributed job queue management, carrierwave for dual file system and Amazon Simple Storage Service access; apply HAML, LESS, and Coffee Scripts for writing HTML, CSS, and Javascript pages; apply Bugsnag for crash reporting; and apply Newrelic for performance monitoring. Develop and improve NimbleDroid’s UI/UX and Android app, help develop automatic test tool and performance benchmark tools, and conduct troubleshooting of application issues.
  • Develop an early understanding of NimbleDroid’s product, hosting design review sessions, documenting design and code details and participating in periodic peer code-reviews using Github’s or Bitbucket’s code review service. Promote NimbleDroid’s values and culture while setting a visible standard of outstanding performance with external Web APIs, including Google Plus API, Github API, Bitbucket API, and Facebook API.
  • Coordinate with developers of other aspects of NimbleDroid’s product regarding product design and implementation, mentor and train junior software engineers or engineering interns, communicate with NimbleDroid’s management about technical progress, challenges, and plans.
  • Ensure that code written is maintainable, write test cases to thoroughly test NimbleDroid’s product and achieve high test coverage, and conduct stress tests to ensure that NimbleDroid’s product is scalable to a large number of requests.
  • Porting the profiling software to Android’s ART VM, a new version of Android’s Java Virtual Machine that’s available since version 4.4 of Android. ART VM is getting more popularity and will replace Dalvik VM as Android device OEMs upgrade to later versions of Android.
About You:
  • Bachelor's degree in computer science or a related field
  • Excellent programming skills
  • Excellent interpersonal and communication skills
  • Strong analytical thinking skills and results driven personality
  • Ability to understand and implement complex algorithms and features
  • Known for smart, logical thinking, interest and enthusiasm
  • Detail oriented, flexible in the way a startup requires, and comfortable collaborating in a team
JOB TITLE: Software Engineer
JOB DUTIES: Analyze the functionality and performance requirements of product’s service backend, web frontend, and mobile application; design service backend using the Ruby-on-Rails framework, applying tools including Devise, Sidekiq, carrierwave, Bugsnag and Newrelic; develop and improve mobile application for both Android and iOS; develop tests and performance benchmarks, and conduct troubleshooting of issues in our applications; design and implement the user interface and experience to keep the user interface intuitive and consistent across the company’s web frontend and mobile application; secure the company’s product in Amazon Web Services; host design review sessions and document design and code details; coordinate with developing team regarding product design and implementation.
JOB REQUIREMENT: Master’s degree in Computer Science, Computer Engineering, or Electrical Engineering.