- Email: ponyets@outlook.com
- Phone: +86 18611694617
- Github: https://github.com/Ponyets
- Use Java / Scala in daily development, familar with javascript.
- Ability and habit to enter unconversant field.
- Experiened in app architecture.
- Have some experience in Scrum development process and continuous integration on Android.
- I participated in building the app from the beginning.
- I wrote common libraries used for http requests and image loading (There were no Volley or Picasso that days).
- Google Service cannot be reached in China, so I built our own push service with backend engineers using XMPP protocol.
This app provides movie information and cinema ticket booking.
- I leaded a team of 5 build an entreprise Whatsapp with XMPP protocol.
- I designed the app's architecture. It's event driven, and its models and controllers were totally divided by two event bus. I implement a state machine of connection.
- When I returned to the major app, I noticed the obvious drop of efficiency due to the increase of engineers and product managers. The raw process could not support a medium size team. I introduced Scrum to the team, help the team get over endless arguments, reluctant promises and destined delays.
- I pushed on automated testing and deployed continuous integration, decreased the crash rate from 0.5% to 0.15%, made times of emergency release from once per month to less than once per quarter.
- I organized a refactor to the app, indroduced IoC and DI to our project as well as some open source libraries, such as okhttp and picasso. I encouraged the use of fragments and loaders, that made our views more organized and reusable. That also help separate views from background operations. We turned to reactive programing and MVVM later, looking for efficiency and maintenance.
- I made several pull-requests to picasso and okhttp, used for webp image loading and bugfix.
- As the growth of the company, the number of enginners involved in the development of the app increased to more than 100. We decided to build an architecture team of 7 engineers focus on efficiency and maintenance.
- We found that RPC has some advantages in development efficiency and strong type guarantees. We choosed thrift considering many backend engineers were familiar with it. Cause the java code generated by original thrift generator was too huge to be used on Android, I wrote our own thrift code generator named Firefly using Scala. It shrinks the volume of generated code to 1% with little cost of performance, and it has convenient gradle plugin. It's open source now.
- Due to the absence of Google Play, the app distribution in China is in chaos. We have to distribute our app to hundreds of markets and analyse effect of every market. I built a service using Scala to solve the distribution problem.
- We created a development tool named Lancer. It's used to detect memory leak, resource leak, too deep view tree, long time operation in mainthread and some other performance problems at runtime during development and testing stage. It's gonging through our company's open source approval process.
- In order to avoid manual statistics code, we started to use AOP. We wrote a gradle plugin that introduces aspectj into Android build process.
- Recently we are focusing on React Native, trying to build a common facade on frontend, iOS and Android which may make code reuse on different platform possible.
Computer Science, Bachelor of Engineering
Fall 2007 - July 2011
Beijing University of Post and Telecommunications