MVPa hackathoner’s best friend
Who am I?• Ruben Tan• Lead Developer in 40 Square Software• Node.JS disciple• Still a Goblin Camp addict
What is MVP• Minimum Viable Product• The smallest feature set to be released• YAGNI,YAGNI,YAGNI
What Software Engineers Want
What Actually Got Built
What Usually Happens
MVP
MVP• Evolution vs Divine Design • Usually, your framework™ won’t solve    anybody’s problem • Imagined features are not fe...
MVP Example01   var express = require(‘express’);0203   var server = express.createServer();0405   server.configure(functi...
MVP Evolve01   var express = require(‘express’);0203   var server = express.createServer();04   var db = {}; // add a DB h...
01               MVP Refactor     var express = require(‘express’);0203   var server = express.createServer();04   var db ...
MVP Future• Move DB into it’s own module• Add a connector using the Adapter Pattern• Move session storage into DB/Cache• e...
MVP Principles• Prototype First, Refactor Later• Use TDD/BDD to simplify refactoring• Forward engineer only when necessary...
process.exit();
Upcoming SlideShare
Loading in …5
×

NodeHack #2 - MVP

1,363 views

Published on

A presentation on what is MVP (minimum viable product) and how it can help hackers survive hackathons. Presented during NodeHack #2

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,363
On SlideShare
0
From Embeds
0
Number of Embeds
71
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • NodeHack #2 - MVP

    1. 1. MVPa hackathoner’s best friend
    2. 2. Who am I?• Ruben Tan• Lead Developer in 40 Square Software• Node.JS disciple• Still a Goblin Camp addict
    3. 3. What is MVP• Minimum Viable Product• The smallest feature set to be released• YAGNI,YAGNI,YAGNI
    4. 4. What Software Engineers Want
    5. 5. What Actually Got Built
    6. 6. What Usually Happens
    7. 7. MVP
    8. 8. MVP• Evolution vs Divine Design • Usually, your framework™ won’t solve anybody’s problem • Imagined features are not features • Be economic and result oriented
    9. 9. MVP Example01 var express = require(‘express’);0203 var server = express.createServer();0405 server.configure(function() {0607 // Use a simple view engine08 server.register(‘html’, require(‘ejs’));09 server.set(‘views’, __dirname + ‘/view’);10 server.set(‘view engine’, ‘html’);1112 // Serve only static files for now13 server.use(express.static(__dirname + ‘/public’);1415 });1617 server.get(‘/’, function(req, res) {18 res.render(‘index.html’);19 });2021 server.listen(1337);
    10. 10. MVP Evolve01 var express = require(‘express’);0203 var server = express.createServer();04 var db = {}; // add a DB here0506 server.configure(function() {0708 // Use a simple view engine09 server.register(‘html’, require(‘ejs’));10 server.set(‘views’, __dirname + ‘/view’);11 server.set(‘view engine’, ‘html’);1213 // Add session support14 server.use(express.cookieParser());15 server.use(express.session({ secret : ‘Nodehack’ });1617 // Serve only static files for now18 server.use(express.static(__dirname + ‘/public’);1920 });2122 server.get(‘/’, function(req, res) {23 res.render(‘index.html’);24 });2526 server.listen(1337);
    11. 11. 01 MVP Refactor var express = require(‘express’);0203 var server = express.createServer();04 var db = {05 config : { secret : ‘NodeHack’ }06 };0708 server.configure(function() {0910 // Use a simple view engine11 server.register(‘html’, require(‘ejs’));12 server.set(‘views’, __dirname + ‘/view’);13 server.set(‘view engine’, ‘html’);1415 // Add session support16 server.use(express.cookieParser());17 server.use(express.session({ secret : db.config.secret });1819 // Serve only static files for now20 server.use(express.static(__dirname + ‘/public’);2122 });2324 server.get(‘/’, function(req, res) {25 res.render(‘index.html’);26 });2728 server.listen(1337);
    12. 12. MVP Future• Move DB into it’s own module• Add a connector using the Adapter Pattern• Move session storage into DB/Cache• etc etc etc
    13. 13. MVP Principles• Prototype First, Refactor Later• Use TDD/BDD to simplify refactoring• Forward engineer only when necessary• YAGNI,YAGNI,YAGNI
    14. 14. process.exit();

    ×