SOFTWARE DEVELOPMENT Notes for Startup Founders March 25 th, 2015
Brian Pham Professor, School of Applied Computing, Sheridan College Adjunct Professor, School of Computer Science, University of Guelph brian.huy.pham@gmail.com YuFan Dong Computer Science Student, University of Waterloo QA Analyst, Oracle Eloqua yufandong@hotmail.com Rahil Shah Computer Programmer Student, Sheridan College Android Developer, Freelancer rahil2952@gmail.com Yash Tilva Computer Programmer Student, Sheridan College Web Developer, Freelancer tilva.yash@gmail.com
AGENDA Managing a software endeavor Useful tools Choosing the right dev platform
MANAGING A SOFTWARE ENDEAVOR
SOFTWARE: BRIDGE OR GARDEN?
PROBABLY GARDEN! Never complete Launch is just the first release Change is inevitable: New features Competitors Business Strategy etc. Incremental design vs Big design upfront Continuous release The Agile Samurai
AGILE DEVELOPMENT The Agile Samurai http://it-ebooks.info/book/75/
The Agile Samurai AGILE DEVELOPMENT PROCESS
YOUR DEVELOPMENT TEAM Gardeners vs Builders Generalists vs Specialists Masters vs Journeymen vs Apprentices Front enders vs back enders How to recruit and hire great software engineers http://it-ebooks.info/book/2356/
USEFUL TOOLS
WEBSITE & BLOG Design Template Monsters {Wrap}Bootstrap CMS Magento SEO Google Analytics http://www.templatemonster.com/demo/53155.html http://riotdesign.eu/en/
WIREFRAMING / MOCKUP
VERSION CONTROL Collaboration without conflicts Branching and Merging History/Journal
TESTING & TEST AUTOMATION Required for continuous delivery Dedicated Quality Assurance Issue Tracking Regression Testing
CHOOSING A MOBILE DEV PLATFORM
CLOUD-INTEGRATED MOBILE APPS Few mobile apps are stand-alone Sharing data between users Making use of complex computations/services Client-Server model is often used Aka front-end and back-end
CLOUD-INTEGRATED MOBILE APPS Server (aka back end) Runs on the cloud, processes data, might call other web/cloud services Completely under your control Client (aka front end) Runs on customer s device, displays UI, sends data to server Many types of device Cross-platform is often desirable The dreaded Web vs Native debate
WEB VS NATIVE Two opposite ends of the spectrum Native Rich user experience Snappy Can utilize latest hardware capabilities Can take advantage of new OS features Expensive for cross-platform apps
WEB VS NATIVE Web/HTML5 Write once, run anywhere (WORA) Not as sleek Good for Information-based applications Form-based applications Online content viewing Wikipedia, Facebook, Twitter, Yelp, etc. Apps that don t want to go through the app stores Apps that don t need advanced access to hardware
COMPROMISE #1: Main Ideas: Mask the differences between platforms using a specialized browser: The PhoneGap browser More advanced hardware access can be enabled via the PhoneGap browser: The PhoneGap API Your web app is bundled with the PhoneGap browser, and the entire package is then distributed as a native app via app stores
PHONEGAP (CONT) Pros Is a web app WORA With more hardware access (than reg browsers) Web developers feels at home Cons Is (still) a web app Not as sleek and snappy Hardware access is limited to those allowed by the PhoneGap API
COMPROMISE #2: Main Idea: Mask the differences between platforms with an interpreter Programmer writes app code in JavaScript Code gets interpreted on mobile device by a modified JavaScript engine JS Engine call native API
TITANIUM (CONT) Pros Is faster than web apps Is sleeker than web apps Native looking UIs More hardware access than web apps and PhoneGap WORA Cons Not as fast as native Interpreter engine Hardware and graphics API is limited to that allowed by Titanium
COMPROMISE #3: Main Idea: Mask the differences between platforms using a cross-platform execution engine (VM/Runtime)
XAMARIN (CONT) Pros Compiled code Higher performance Closest to native (Almost) full hardware access C#/.NET: Large dev comm WORA??? Semi-wora Cons Require more knowledge of native Oses Some UI code need to be platform specific App Logic is still common! Tools licences
OTHER THINGS WORTH CONSIDERING Time to market Stage of product Your own expertise Talent pool Development cost
FURTHER REFERENCES Pro Git http://git-scm.com/book/en/v2 Selenium Testing Tools Starter http://it-ebooks.info/book/3123/ Building cross-platform apps using Titanium http://it-ebooks.info/book/4475/ PhoneGap for Enterprise http://it-ebooks.info/book/4763/ Xamarian Mobile Application Development for Android http://www.it-ebooks.info/book/3892/
THANK YOU!