Programming for non-tech Entrepreneurs AKA Programming Kindergarten
May 15, 2015
Programming for non-tech Entrepreneurs
AKA Programming Kindergarten
Introduction - Who am I!
Founder Mycrogifts
Rodrigo Gil
Founder DigitalAger
T +351 967 566 932E [email protected] [email protected] @rgilpt
Introduction - What is Programming Definition:
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer.
Introduction - Programming History IIn 1801 Joseph Marie Jacquard created Jacquard Loom that simplifies the process of manufacturing textiles with complex patterns. The Loom is controlled by punched cards.
● Ada Lovelace● Turing Machine ● IBM● Apple● Microsoft
Introduction - Programming History II
1957 FORTRAN first compiler
1959 COBOL Still used a lot in business applications
1964 BASIC
1972 C Unix, Linux and Windows OS
1978 SQL Database main language
1980 C++ Object oriented language used in many fields
1986 Objective-C iOS, Mac OS
1991 Python Django used a lot for web apps Youtube, Google
1991 HTML Web
1993 Ruby Ruby on Rails used a lot for web apps Twitter, Groupon, Hulu
1995 Java Web, Android, etc...
1995 PHP Wikipedia, Facebook
2001 C# Microsoft
Programming Languages
Architectures● Landing Pages - Static Pages● Web oriented - Dynamic Pages● Mobile oriented - Android, iOS● Backends - Web Services● Databases - MySQL, MongoDB,
PostgresSQL, MS SQL
Architectures● APIs - Facebook API, Foursquare API,
Google APIs ( Google maps API), ○ Means to communicate between systems.
● Arduino - Controllers and electronic systems
Roles in Programming● Programmer
○ Coder, create modules, programs and algorithms ● Project Manager
○ Prioritize, manage development process, timing, risks
● User Experience/User Interface Designer○ Develop views, usability by interviewing users to
improve apps.● Software Architect
○ Design software modules and systems.● Quality Assurance
○ Check the quality of products and services
ProcessesWaterfall
● Requirements● Design● Implementation● Verification● Maintenance
Processes - Agile Dev.SCRUM● Product Backlog● Sprint Backlog● Sprints
Processes - OtherDesign● Design Thinking● Systems ThinkingTDD● Test Driven Development
Processes - Where to Start?Planning● Brainstorm● Research (interviews, surveys, use cases)● IA (Information architecture)● Flow diagram or SitemapDesign● Wireframes● UI/UX● SpecificationsDevelop● Start coding!
Tools - IDEsDefinition:● Integrated Development Environment
Tool to code your application!
Examples: ● Eclipse● NetBeans● Visual Studio● XCode
Tools - How to Start?Editors● Coda● Textmate● Sublime Text● TextEditHosting● Shared vs Dedicated● Cloud processing (Amazon, Heroku, etc)● CMS (Wordpress, etc)FTP● FileZilla● Cyberduck
Tools - Revision ControlConcepts: Tools:
Baseline - An approved revision of a document or source file;Branch - A set of files under version control may be branched or forked at a point in time;Checkout - A check-out (or co) is the act of creating a local working copy from the repository;Commit - is the action of writing or merging the changes made in the working copy back to the repository;Merge - A merge or integration is an operation in which two sets of changes are applied to a file or set of files;Repository - The repository is where files' current and historical data are stored, often on a server;
Git
SVN
Team Foundation
Basic Programming ConceptsCode (Java):● Variables:
○ int age = 23;○ String name = "Marco Polo";○ float height = "1.70";
● Expressions:○ if (age == 23) (...)
● Cycles:○ for(int i = 0; i < age; i++){ //Happy birthday}
● Classes:○ class BetaStartEntrepreneur (...)
● Objects:○ BetaStartEntrepreneur marco = new BetaStartEntrepreneur()
Basic Concepts● Debug:
○ Find Errors (bugs) in code● Test:
○ Automated tests (unit tests) to find bugs○ Users or colleagues test your code to find bugs
● Deploy:○ Actions that make a software system available to use
Not so Basic Concepts
MVC● Model - A database, a file or object state● View - Output representation of the model● Controller - Manipulates the model, send
commands to the view
Others: MVVM, MVP, MVT
Design Patterns
Why create a web page?● The perfect business card for your enterprise● A detailed and permanent ad● A place that's open 24/7 all year round● Increased competitiveness● Better responsiveness● Increased credibility
● It’s the first page the visitors view● Good source of getting details and contact information
from visitors● Visitors become familiar with your product; more likely
they spread the word of your product.
Landing PagesLaunch Rock:
http://launchrock.com/WordPress.com:
Blogs and Product presentationFacebook Pages
Web Apps - FrontendLanguages and frameworks:
● HTML● Javascript, JQuery● CSS● AJAX
Web Apps - Backend & APIsLanguages and frameworks:● Ruby on Rails● Django (Python)● Java● ASP.Net● PHP
Languages:● JSON● XML
Mobile AppsWhy not?● Increased number of mobile devices● Create Mobile Websites● Be closer to the end user● Earn money with mobile paid apps● Promotions, coupons and other related● Location based Services● Mobile campaigns and ads● People spend more time with tablets and
smartphones than PC
Mobile AppsWhy not!● Mobile apps need to add new value for the
users● Can be expensive: "you need to be the first,
the best or have the most money"
Mobile Apps - Non NativeFrameworks:Phone Gap - http://phonegap.com/● HTML, CSS, Javascript● FreeMonotouch - http://xamarin.com/monotouch● C#● PaidTitanium - http://www.appcelerator.com/● JavaScript-based SDK● Free and paid
Mobile Apps - NativeiOS - Apple iPhone, iPad● IDE: XCode● Needs to have a Mac● Programming Language: Objective-C
Android - Google● IDE: Eclipse● Programming Language: Java
Others - Windows Phone, RIM (Java), Symbian
Advanced StuffGamification● Increase User Engagement● User feedback● User Onboarding● Create Fun● Improve Business Objectives● Examples
○ FourSquare○ StackOverflow○ Fitocracy○ LinkedIn
Advanced Stuff● Machine Learning● Analysis● Business Intelligence
Where to go nextW3SchoolsCodeacademyCode SchoolGoogleKodingCourseraStack Overflow
Find a Tech partner
References~ http://www.w3schools.com/ ~ http://en.wikipedia.org/wiki/Model–view–controller~ http://en.wikipedia.org/wiki/Software_deployment~ http://en.wikipedia.org/wiki/Revision_control~ http://en.wikipedia.org/wiki/Computer_programming#History~ http://en.wikipedia.org/wiki/History_of_programming_languages~ http://www.webself.net/why-create-a-website.ws~ http://www.inc.com/ss/6-reasons-why-you-need-a-mobile-strategy#0~ http://lifebyexperimentation.com/2011/06/why-you-should-not-have-a-mobile-app/~ http://www.codecademy.com/~ http://www.codeschool.com/~ http://code.google.com/intl/pt-PT/edu/languages/google-python-class/~ https://koding.com/~ https://www.coursera.org/course/programming1~ https://www.coursera.org/course/interactivepython~ http://stackoverflow.com/~ http://www.entrepreneur.com/article/220416~ http://phonegap.com/~ http://xamarin.com/monotouch~ http://www.entrepreneur.com/article/220416
Thanks ToBeta-Start (Super - Mega - Faster Accelerator)Miguel Campião (iOS Champion)
ReviewerLuis Reis (Tech Superstar)
ReviewerHugo Bernardo (Entrepreneur - Easy Vino)
ReviewerAll Beta-Starters