Welcome back to our Meet the Devs segment! In this piece we take a little time to get to know the people who really make Android what it is today and that is the app developers. In this week’s developer interview, we are talking to Zhengquan Qin.
Name: Zhengquan Qin
Developer Name: Qin Zhengquan
Website: Official Website
Google+ Profile/Page: Zhengquan Qin G+
How many people on your team? 3
About your company?
Makan Kaki started at a hobbyist project in December 2012 when we decided there had to be a better way to organize gatherings. Before Makan Kaki, organizing gatherings on current messaging applications was a real hassle between large groups of people when there would be schedule conflicts, debates on places to go or confusions about the venue location. This resulted in long chat conversations, or disparate pieces of information. For example, users had to browse for the venue location on other applications as well as manually tally the most agreeable venues and schedules.
We decided that venue content management, appointment scheduling tools and social media could form the perfect synergy in creating the perfect gathering planning application. This was what we accomplished with Makan Kaki. For example, Makan Kaki allows users to easily browse, suggest and vote on information rich venues from Foursquare. We also used interactive calendar widgets that enhanced the user experience quality in suggesting and voting on schedules.
Makan Kaki also integrates well with 3rd party messaging applications to allow users to easily share and join gatherings. For example, users can simply join and participate in the gathering planning by clicking on a url on WhatsApp. No registration is required and all the user needs to do is to enter their names to register their vote or suggestion.
At present, Makan Kaki has accomplished the following milestones:
– Release of iOS, Android and Web applications.
– Secured funding of 10, 000 SGD in Validating Startup Grant from the National University of Singapore.
– Admitted into Microsoft Bizspark and Google Developer Startup Launch program.
– Featured on Yahoo Singapore Finance and Singapore Straits Times Start Singapore Column on 3rd April 2014.
What level of experience do you have with coding and development?
I started programming back in 2007 when I joined the Bachelor of Computing, and subsequently the Master of Computing program at the National University of Singapore (NUS). On top of student development projects that made heavy use of Enterprise Javabeans (EJB), I also participated in Google Summer of Code 2011 that did a major migration of DuraSpace legacy JSP projects to conform to the Spring MVC framework. When I was in the graduate program, I deepened my development expertise into mobile applications where I built my first iOS app (CloudMarket) that made heavy use of Cloud Commerce technologies.
Makan Kaki was my first venture where I decided to leverage on my current technical expertise to build an application that I believed to be useful. Dr Lek Hsiang Hui, my co-founder built the backend and web development support in CakePHP while I built the mobile applications for both iOS and Android, and the venue content portal on the web.
What languages do you know? How and where did you learn them?
I am extremely well versed on Java and Objective C. Java was the first programming language I had to learn when I was a computing student at NUS. Objective C, was a language I picked up when I was developing the iOS app as a research assistant (note: I have to pick up swift soon!). I am also familiar with R programming, C and Assembly code. During a systems security module, I demonstrated how return oriented programming can occur on older Ubuntu builds. I made heavy use of R programming to construct an MBA admissions and Stock prediction tool in my data mining and business analytics courses.
Speaking of my sources of learning, my favourite technical books to date, are iOS and Android programming from Big Nerd Ranch. They are seriously phenomenal. The books not only taught me programming in a manner that I could easily relate to (something I always had difficulty when I was starting programming), they develop an undying passion in me to find out more about the technology applications.
What level of experience do you have with design?
The user experience of my first iOS was horrible. At that time, I had no knowledge about the difference between web applications and native mobile applications. I initially thought that a mobile app was simply a portable version of a web app. This resulted in my app becoming hogged with information that was too technical for the average user to use.
My 2nd iOS app design (Makan Kaki 1st version) had a somewhat better user experience, but it was equally horrendous because it not only required users to register an account in order to perform basic app functionalities, it totally compromised the core value proposition of the app when users found it confusing to invite their friends to use the app.
I was during this period where I decided to take the whole user experience of app development very seriously, rather that put bunch of quick hacks together. I also experience the pain of messy code design. The two books that have heavily shaped my thoughts were Android Design Patterns: Interaction Design Solutions for Developers by Greg Nudelman and Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin. These two books encouraged to adopt a minimalistic approach in developing my subsequent iterations of Makan Kaki as well as maintaining a clean reusable and loosely coupled code base where I could easily pivot or upgrade the app without breaking existing functionality.
I also read lean startup Eric Ries and The Startup Owner’s Manual: The Step-By-Step Guide for Building a Great Company by Steve Blank to understand how to craft my minimal viable product that yet offered the best user experience on the core value proposition.
What apps have you made?
To date, I have made 3 complete apps. Cloud Market, Makan Kaki (1st and 2nd version) iOS and Android.
How do you monetize your apps?
Makan Kaki aims to partner with venue owners to promote their venues to our users. Currently, Foursquare forms the basic platform in providing rich venue information to our users, but we believed that the quality of the data can be enhanced with future partnership.
We are also planning to integrate advanced booking features that allows users to make reservations at a venue once they have confirm the gathering details. We are working on possible solutions to integrate and send important user information such booking details or menu preferences to our vendor partners.
Do you consider yourself successful?
Although I cannot say with certainty that Makan Kaki will necessarily be a huge success, the knowledge that I have acquired in the process was incredible. Within a short span of 1 year, I not only acquired in depth technical knowledge in building iOS and Android apps, I also learned invaluable knowledge about the startup methodological process and how difficult it was to generate demand for a concept that I found to be so useful and yet so tedious to execute.
What can Android do to improve?
Device fragmentation and OS incompatibility is seriously a pain. I had no knowledge about the seriousness on this until I tested Makan Kaki on an older device that was running API 15 (Ice Cream Sandwich). I initially built Makan Kaki on API 19 (KitKat) on LG and it was working fine. Just when I ready to publish the app, I decided to test the app on an older built and to my dismayed, the app completed crash at the beginning. Not only did the app looked terrible on my smaller older device, the code that worked on API 19 (Passing Intent Data on Parent Activity) failed completely on API 15.
This was something I had never experienced with iOS where the SDK was very stable and robust. The IDE, Android Studio, although was much better than Eclipse, was also much slower than XCode. The Emulator, which which was running the Intel HAXM was still slower than the XCode iOS Simulator.
Why did you choose Android? Do you develop for other platforms? What are the differences between them?
As an iOS developer, I dreaded building an Android version because of the whole fragmentation issues when I was starting out. However, now that I have built the Android version, I am absolutely in love with it. Android offers a lot of flexibility and feature rich APIs that are aptly suited for Makan Kaki. I love the concept of implicit Intents and how well it worked with 3rd party applications, unlike the iOS UIActivityViewController that offers very limited functionality in integrating 3rd party applications. In this aspect, I feel that the implicit intent concept was a far superior implementation as compared to the custom url handling scheme of iOS.
However, I actually preferred how iOS handles the location and background data using the Core Location Framework and background activities using NSURLSession. I certainly found the location manager and the handler thread for repetitive background work to be very tedious in implementation. They also made my code more verbose. Unlike the delegate call backs methods in iOS, I also have to implement a broadcast receiver in android to handle receive messages.
I also do not like how data is passed from one activity or fragment to another on Android as this made my code very complex. In iOS, view controllers can simply pass data or implement call back data via the use of blocks. This makes the code a lot simpler and readable as compared to Android.
Lastly, I also like the use of Auto-Layouts on the XIB builder on iOS as compared to the XML layout attributes on Android. I found the former to be a lot intuitive, visual and less complex as compared to Android. I also appreciated how Android provides the use of support libraries to maintain background support with older builds.
What are your favorite apps?
I love they appear so simple and intuitive for the user.
What has been your experience been like working with Google?
An absolutely joy in publishing and updating apps as compared to the strict app review system of Apple.
What does the future of development look like?
I think networking apps are huge! I don’t get the whole iOS versus Android debate. In my opinion, the apps of the future rarely provide value on an isolated platform but rather syncs and communicates data on a cloud. Every mobile developer will need to master a back end framework like Node.js, Rails or PHP and implement the use of web services for networking apps to be accomplished.
What tips do you have for aspiring developers?
Be patient when trying to master a new framework or technology. I used to be impatient and resorted to quick hacks by researching and experimenting with code samples to create a quick prototype of my project. Now, I take a more patient approach by attempting to completely learn and understand a framework or platform including the best practices.
This approach has boosted my productivity immensely and allowed me to scale my apps accordingly. And of course, write clean reusable code! Writing clean and test driven code should be inculcated from the moment your write your first line of code. The joy of churning out a quick hack will be shortened quickly once the code grows in bulk and you have to make changes.
Developer interview wrap up
We want to thank Zhengquan Qin for chatting with us in this week’s developer interview! If you’re a developer and this looks like something you’d like to do, check out our Meet the Devs form! We look forward to hearing from you.