surviving a hackathon and beyond
DESCRIPTION
What you should keep in mind before, during and after a Hackthon.TRANSCRIPT
Surviving a Hackathon and BeyondEdmund Kwok, Chief Technology Officer (CTO)
Think in components
Don’t reinvent the wheelFocus on MVP / core features
Get out of the building
Always learn / experiment
Comment your codeUse a VCS
Be part of the community
Have Fun!
Before
During
After
Always
About me..• Started off as Freelance Drupal Site Builder / Developer /
Themer in 2004
• Clients in US, UK, UAE, Singapore, India, Malaysia
• Studied Psychology for 2 years, dropped out after interning at a Startup
• Full time as iMoney CTO, Employee #2 in January 2013
• Email: [email protected]
• Twitter: @edkwh
• #1 Financial comparison site in the region - Malaysia, Singapore, Philippines, Indonesia, Thailand, Hong Kong
• Compare financial products and apply online, for FREE!
About
• #1 Financial comparison site in the region - Malaysia, Singapore, Philippines, Indonesia, Thailand, Hong Kong
• Compare financial products and apply online, for FREE!
• Product, Marketing, Operations / Call Ops, Admin and Tech Team
• Tech Team - 4 developers (including me), 2 UI / UX, 1 iOS / Android
About
Think in components
Don’t reinvent the wheelFocus on MVP / core features
Get out of the building
Always learn / experiment
Comment your codeUse a VCS
Be part of the community
Have Fun!
Before
During
After
Always
What should you do before, during and after a hackathon?
Don’t reinvent the wheelFocus on MVP / core featuresBefore
1. Core Features and MVP• What problem are you trying to solve?
Ask ‘Why’ until you get to the core of your
idea
1. Core Features and MVP• What problem are you trying to solve?
• Focus on core features, must haves VS nice to haves
Pareto’s Principle
Small Problem 20%
Main Problem 80%MVP
20%
Product 80%
1. Core Features and MVP• What problem are you trying to solve?
• Focus on core features, must haves VS nice to haves
• Skip extra functions - user registrations, email validation, animations, parallax, cron, machine learning, world domination etc
• Trim, trim, trim, lean lean lean
1. Core Features and MVP• What problem are you trying to solve?
• Focus on core features, must haves VS nice to haves
• Skip extra functions - user registrations, email validation, animations, parallax, cron, machine learning, world domination etc
• Trim, trim, trim, lean lean lean
• Build UI later but still focus on UX - deliver a functional product
Beautiful, but not too practical?
Which was more functional?
1. Minimum Viable Product• What problem are you trying to solve?
• Focus on core features, must haves VS nice to haves
• Skip extra functions - user registrations, email validation, cron, machine learning, world domination etc
• Trim, trim, trim, lean lean lean
• Build UI later but still focus on UX - deliver a functional product
• MVP = Minimum viable product, not minimum vegetable / value product
1. Spend some time to see what’s out there before writing code
2. Don’t reinvent the wheel
2. Don’t reinvent the wheel
There’s a FRAMEWORK for that
Yo dawg! We so need a real time framework that we
can build real time shizzles with.
Meteor.js https://www.meteor.com/
2. Don’t reinvent the wheel
There’s a PLATFORM for that
Yo dawg! What about our own Analytics tool to track
visitor behaviour?
Piwik http://piwik.org/
2. Don’t reinvent the wheel
There’s a LIBRARY for that
Yo dawg! Maybe a kick ass tool that creates
interactive data visualisations?
d3.js http://d3js.org/
2. Don’t reinvent the wheel
There’s a SERVICE for that
Yo dawg! Gah, we need to setup a backend
infrastructure to support our mobile app!
Parse https://www.parse.com/
2. Don’t reinvent the wheel
There’s even a THEME for that!!
Fundify - The WordPress Crowdfunding Theme http://themeforest.net/item/fundify-the-wordpress-crowdfunding-theme/4257622
Yo dawg! Let’s build a crowd sourcing site for
Malaysia!
2. Don’t reinvent the wheel
There’s a MODULE for that
Yo dawg! I just though of this cool XYZ idea!!
2. Don’t reinvent the wheel
There’s a PLUGIN for that
Yo dawg! I just though of this cool XYZ idea!!
2. Don’t reinvent the wheel
There’s a COMPONENT for that
Yo dawg! I just though of this cool XYZ idea!!
2. Don’t reinvent the wheel
There is an APP for that
Yo dawg! I’m sure this is not out there!! An app that
tells you when a watermelon is ripe to eat!!!
Melon Meter https://itunes.apple.com/us/app/melon-meter/
id450015952?mt=8
1. Spend some time to see what’s out there before writing code
3. More time to focus on your solution and deliver a functional app
2. Use and integrate what you need (not everything you want)
2. Don’t reinvent the wheel
• PHP https://packagist.org/
• JS http://microjs.com/ | http://www.jsdb.io/
• Ruby https://rubygems.org/
• iOS http://cocoapods.org/
• Node.JS https://www.npmjs.org/
• Themes http://themeforest.net/
2. Don’t reinvent the wheel
Think in components
Comment your codeUse a VCSDuring
3. Think in components
• Separate out components - modules / objects / entities / sections / pages / screens
• Common & shared vocabulary when discussion with team, reduce confusion of being vague or ambiguous
• Easier to track logic flow Easier to reuseEasier to extendEasier to read code Easier to collaborate
Insights CRM
Insights DB
Publishers
Mobile App
Call Operators
Mortgage Consultants
Webapp
Analytics
…
Mortgage Admin
Management
Leads DB
Leads Collector
4. Use Version Control Systems
• Maybe ‘no time’ to use a VCS, but small investment that goes a long way
• What if you need to revert back to a code that was working perfectly 45 minutes ago?
• Undo undo undo undo undo undo undo undo, copy, redo redo redo redo redo redo redo redo pasteorUndo undo undo undo undo undo undo undo, copy, accidentally hit ‘z’ = GAME OVER, redo history gone
4. Use Version Control Systems
• Very useful for solo developers: MyAwesomeCode-old.phpMyAwesomeCode-new.phpMyAwesomeCode-newer.phpMyAwesomeCode-newest.phpMyAwesomeCode-even-newest.php (?!!)
• Vital when working in teams - merge code safely with different developers working concurrently
• Quicker & cleaner deployment - only changes are brought in with git pull or git-ftp
• GitHub Flow - branches are cheap and easy
• Every new stuff is branched off master
• Everything merged to master
• git co -b NeedToShower git add ..git commit -m “Awesome code that solved water crisis”git co mastergit merge NeedToShower
4. Use Version Control Systems
5. Comment your code
• Helps you remember what you were doing, clarify your intentions
• Makes it easier for team members to pick up where you left off
• But avoid unnecessary comments. As much as possible, let the code speak for itself
When you’re a zombie, your code will eat your brains!!!
(But your code comments will stop the rot and save you! :D)
See more comments!
• http://stackoverflow.com/questions/184618/what-is-the-best-comment-in-source-code-you-have-ever-encountered
• http://stackoverflow.com/questions/143429/whats-the-least-useful-comment-youve-ever-seen
Get out of the building
Always learn / experiment
Be part of the communityAfter
6. Get out of the building• Get feedback from people who would use your
product - especially those who would pay for it
• Start with your mum, dad, brother, sister, cousins.
6. Get out of the building• Get feedback from people who would use your
product - especially those who would pay for it
• Start with your mum, dad, brother, sister, cousins.
• Then move to neighbours, colleagues, trusted friends who will be honest, critical, opinionated, but above all, supportive
6. Get out of the building• Get feedback from people who would use your
product - especially those who would pay for it
• Start with your mum, dad, brother, sister, cousins,
• Then move to neighbours, colleagues, trusted friends who will be honest, critical, opinionated, but above all, supportive
6. Get out of the building• Get feedback from people who would use your
product - especially those who would pay for it
• Start with your mum, dad, brother, sister, cousins.
• Then move to neighbours, colleagues, trusted friends who will be honest, critical, opinionated, but above all, supportive
• Are you Running a Business or an Expensive Hobby?
7. Always be learning / experimenting
High rate of learning = exponential gainshttps://medium.com/@KyleTibbitts/56dddc17fa42
• Get off the Island - explore other languages, technologies, expand your mind, challenge yourself, go beyond your comfort zone
• Examples:Meteor.JS - Real Time frameworkPuppet / Chef - Provisioning serversVagrant / Docker - VM for consistent developmentLeaflets - Open source mapping libraryGoogle Prediction API - Machine learning API
7. Always be learning / experimenting
Technologies we use
8. Be part of a community
8. Be part of a community• Get questions answered & know better ways of solving
a problem - Stack Overflow, Quora, etc
• The more you share, the more you gain
• Earn community-cred - build portfolio of open source code, get noticed, gain customers!
8. Be part of a community
• Get questions answered & know better ways of solving a problem - Stack Overflow, Quora, etc
• The more you share, the more you gain
• Earn community-cred - build portfolio of open source code, get noticed, gain customers!
• Part of a bigger global community / movement
• Come for the code, stay for the community
> 3,000 at DrupalCon Portland 2013
Have Fun!Always
9. Have Fun!
• It’s not always about winning and losing
• Make sure you learn, meet new people, make connections
• Start conversations, joke, laugh, keep the spirits high
• Not the end, but the beginning of greater things
Think in components
Don’t reinvent the wheelFocus on MVP / core features
Get out of the building
Always learn / experiment
Comment your codeUse a VCS
Be part of the community
Have Fun!
Before
During
After
Always
1. 2 weeks to build an idea. If good, expand idea, if not, move on
2.Use modules, plugins, frameworks
3.Shared vocabulary with Tech, Product, Marketing, Management
4.Git - Bitbucket with 20+ repos
5.Always Be Code Commenting
6.a. CEO gets feedback from mum. Friends comment on Facebook
6.b. Call existing customers to ask them about service, experience, what they like / don't like
7.Learn and use new languages, framework, platforms
8.Join community events, contribute open source code
9.Have team events - Laser Tag, Durian buffet, laughter
We run mini Hackathons at 1 2
3 4 5
6 7 8
9
Btw, we’re hiring :DSenior Web Developer
(Drupal preferred) • Engineer solutions for pain
points, build cool stuff
• Continuous learning and growth - AngularJS, Symfony2, Node.JS, Python?
• Work on Development, UX, CRM, Architecture, Infrastructure, Scaling, Mobile Integration, Machine Learning, Big Data
• Make the world a better place
http://im.my/hiremelah
1/6 of our team
–Steve Jobs
“A lot of times, people don’t know what they want until you show it
to them.”
Good stuff!
• Sh*t Entrepreneurs Say http://www.youtube.com/watch?v=alZqXA4R2dI
• Epic 80's Entrepreneur Training Video http://www.youtube.com/watch?v=VcYwtEToZfQ
• Entrepreneurs can change the world http://www.youtube.com/watch?v=T6MhAwQ64c0