since 2001. • Started Singapore PHP User Group in 2006. • Co-founded iOS Dev Scout (2012). • Worked in startups: Foound (2010) and mig33 (2012). 4 Saturday, 31 August, 13
• Raised US$500K in Sept 2010. • Launched at DEMO Fall (in Silicon Valley). • Failed to gain traction beyond early adopters. • Relaunched as FoundApp in Sept 2011. X Saturday, 31 August, 13
have a killer idea (you supposes). • You've got some folks believing in your idea. • You've got good vibes on the idea from potential users. • Landing page received promising response. • What next? 5 Saturday, 31 August, 13
until your app is ready for a mainstream audience. • Get early adopters who can give you honest feedback (more from how they use your app, less from what they say). • Fine-tune and measure the product improvements in small iterations. 9 Saturday, 31 August, 13
each platform. • eg. iOS and Android ecosystem, UI conventions. • Google: mobile patterns, ui design patterns • Seek out open source libraries, services that can help you. Saturday, 31 August, 13
build features. • Easy and quick rollout of changes. • Allow for immediate and frequent updates. • Cons: • Sandboxed user experience - limited by what the web browser has access to on the operating system. 13 Saturday, 31 August, 13
user experience. • Apps that take advantage of the power of the mobile device's capabilities. • eg. Camera, GPS location, gyroscope, accelerometer. • Cons: • Updates might take time to propagate to all users. Users might not update their app for a long time. Some markets, people just uninstall the app (instead of updating) if it stops working. • Tendency to support different versions of your application simultaneously. 15 Saturday, 31 August, 13
apps are optimized for the mobile OS. Easily take advantage of OS capabilities. Predictable UX. • Hybrid apps are web apps masquerading as mobile apps. 17 Saturday, 31 August, 13
denominator support of handset capabilities. • Invent your own User Interfaces for cross platform usability. • Limited hardware acceleration support. Usually via clunky 3rd party intermediaries (e.g. JavaScript). 18 Saturday, 31 August, 13
as standalone & offline apps. • But modern apps are usually connected to some form of backend for data persistence and additional computation. • E.g. database storage, authentication, social interactions between users, computation of big data. 20 Saturday, 31 August, 13
to the next. • Low res mocks: Visualize the user interactions • High resolution mockups: Sense of proportion • Mock-ups: http://balsamiq.com/ 21 Saturday, 31 August, 13
your team? His weapon of choice is usually the fastest for your team to ramp up. • Are you willing to learn technical stuff? • Or would you prefer to hire / outsource? 23 Saturday, 31 August, 13
• Choices are pretty limited unless you want users to install extra plugins for the web browser. • Essentials: HTML5, CSS3 & Javascript • To a lesser extent: Flash (ActionScript) & Silverlight (C#, VB.net). 24 Saturday, 31 August, 13
server backend (eg. Rails, CakePHP, Django). • Whole page is pre-rendered in the server and sent to the web browser. • Eg. WordPress.com blogs X Saturday, 31 August, 13
web browser by JavaScript • Chunks of code are sent to the web browser and compiled for presentation by your browser's JavaScript engine. • Talks to backend application via RESTful API. Transfer small chunks of data in text format. X Saturday, 31 August, 13
you are getting smaller chunks of data without reloading the whole page. • Cons: • Limited support on older browsers. • Horrendously slow on some low powered machines/devices. X Saturday, 31 August, 13
• NokiaOS, Android, BlackberryOS: Java • iOS: Objective-C • Windows Phone: .NET (C# or Visual Basic) • Both platform supports some form of C or C++ codes as well. • UI Components: https://www.cocoacontrols.com/ 26 Saturday, 31 August, 13
build in any language. • For full web page rendering. • RESTful web service that returns structured data strings. • Differences can be negated by throwing servers (ie. money) at the problem. • Eg. Ruby, PHP, Python, Java, NodeJS (JavaScript) 28 Saturday, 31 August, 13
programming framework (eg. Rails, Sinatra, Laravel, CakePHP, Django, Express) as they have already solved many common problems faced in building an application. • Always use a separate server for testing. • Profile your code to gauge its performance. (e.g. Xdebug, NewRelic). Don’t pre-optimize. 29 Saturday, 31 August, 13
your strong & opinionated engineers to agree on a process for working together. • Trust in a process, not just people. • Model for sustainable growth • Industry best practices for *NOT* burning out. 31 Saturday, 31 August, 13
Feature requirements structured as a story of how user will use the app. • Building features in small rapid iterations. • Cycle to Test > Build > Feedback. Repeat. • Working app every step of the way. 32 Processes for rapid innovation Saturday, 31 August, 13
mouse, 1 computer (preferably with 1 massive monitor). • Counter-intuitive way of improving productivity. • Sharing the mental load in writing code. • 2 pair of eyes focused on a small batch of code changes. • Immediate code-review at time of writing. Improves code quality. • Tag-team approach to writing unit tests and codes to pass the test. 34 Processes for rapid innovation Saturday, 31 August, 13
establish the different "stages" that your code changes goes through. • Eg. Test is written, code is written, code passes tests, deliver to the server for acceptance by product owner, accepted by product owner, await deployment to production. Deploy to production. • Just-In-Time development. 35 Processes for rapid innovation Saturday, 31 August, 13
tendency of stepping on each other's "toes". • The sooner you discover the code conflicts and clashes, the better is is for your team. • An automated script that pulls together code from everyone in your dev team, runs automated tests on the code, and return the result. Merge conflicts, breaking tests, etc. can be discovered quickly and fixed (instead of at day of launch). 36 Processes for rapid innovation Saturday, 31 August, 13
deployed automatically without human intervention. • Minimizes bad deployment due to human errors. 37 Processes for rapid innovation Saturday, 31 August, 13
and discovering how users are interacting with your app. • Validated learning that leads to feature changes and/or pivots. 38 Model for sustainable growth Saturday, 31 August, 13
can be characterized as "low-high-low intensity". • The low intensity periods are meant for planning and reflection. 39 Model for sustainable growth Saturday, 31 August, 13
your feature changes in phases. We sometimes call this an "Iteration". This can last between 2-4 weeks. • As product owner, you decide on the features u wish to see. • The whole team comes together for an iteration planning meeting (IPM) where we discuss the features in more details and discover the complexities involved. 40 Model for sustainable growth Saturday, 31 August, 13
via Planning Poker. • Each team member is given a deck of cards (usually with numbers in Fibonacci progression). 41 Agile development as renewing cycles Model for sustainable growth Saturday, 31 August, 13
Product Manager ask for their assessment - the team members will put up a card from their deck with a number, signifying what they perceive to be the complexity of the feature. • The median number shall be the assigned complexity point. • More discussion can be had if there is a high difference between the perceived complexity points given by team members. • This could be a sign that they do not completely understand the requirements. 42 Agile development as renewing cycles Model for sustainable growth Saturday, 31 August, 13
period with a "Retrospective" - a kind of post- mortem/evaluation on the sprint. • This is a good time for you to discover weaknesses in your process. • It also allows your team to understand each other's working style better. 43 Agile development as renewing cycles Model for sustainable growth Saturday, 31 August, 13
product owner is. The product can only be effective when you have users. The business if sustainable when you have monetizing customers. • You point the direction of what to build, the team runs and builds them. • Building a process for rapid innovation will help you discover your product-market fit sooner. • Having a model for sustainable growth will help your team perform at peak levels. It also helps you scale up when need be. 44 Saturday, 31 August, 13