SlideShare una empresa de Scribd logo
1 de 36
Lazy
Programmer’s
Guide To Writing
Spec
Inno Tech Boot Camp 2018 July #ITBC2
Leong Hean Hong
Agenda
● Purpose
● Feature List
● Business Process
● Business Rule
● Other Diagrams
● API Spec
Why Should I Write Spec?
● Confirm what user wants
● Make sure we are developing the right software
● Clarity among team members
● Ensure members work toward same direction
Tip: Do not write something nobody reads
Guideline
● Start from high level, go more detail as you need
● If not sure need to write or not, write anywhere
● Be as specific as possible
● Prefer image over words
● Make it easy to read & understand
● Assume reader of spec document is confused, with no prior knowledge of this project
Let’s build
an eWallet!
Feature List
Functional vs Nonfunctional
Requirements
● Functional Requirements - that is of value to user
● Nonfunctional Requirements - user don’t care
Functional Requirements
● An user can transfer money to another user
● User can topup wallet using different payment methods (Credit Card, IB, scratch card)
● User can check balance
● User can receive money by sending URL link to payer
● User can transfer money by scanning QR code
Nonfunctional Requirements
● Network communication must be secured (HTTPS)
● Compliance with KYC, AML/CFT
● It need to support at least 200 concurrent transactions
● Log all transactions
● Daily reconcile
Business Processes
Business Process
● Sequence of actions user performs to achieve an objective.
● User can be human or system
● Example of objective
○ Scan QR code to make payment
○ Generate and send payment link
● Method
○ Writing
○ Flowchart
○ Sequence Diagram
Example: Writing
1. Merchant use system to generate QR code.
2. Merchant print and display QR code.
3. Payer scan QR code.
4. Payer types in payment amount.
5. Payer confirms payment with 6-digits PIN.
Method: Writing
● Clearly define actors (“who”) and actions (“what”)
● Hard to express if/else, loop
● Wordy
Example: Flowchart
Method: Flowchart
● Can express if/else, loop
● Take up large space
● Flow chart symbols: http://bit.ly/2zanyxb
○ Start/end
○ Process
○ Display
○ Decision
● Lack of actor information
Example: Sequence Diagram
Method: Sequence Diagram
● Clearly define actors and actions
● Hard to express if/else, loop
● Shows interactions between multiple actors
● Sequence from top to bottom
Business Rules
Business Rules
● Imagine “if/else” and “switch” for business.
● Make decision based on conditions/criteria
Business Rule Example (1)
Amount < $50.00 Amount ≥ $50.00
ID Verified Y Y
ID Not Yet Verified Y N
Rules for allowing transfer:
Business Rule Example (2)
Topup Amount Reward
< $50 1%
$50.00 ~ $99.99 2%
$100.00 ~ $199.99 3%
≥ $200.00 4%
Other Diagrams
System Diagram
System Diagram
● High-level concept
● Relationship between different (sub)systems
Module Diagram
Module Diagram
● Dependency: top depend on bottom
● Composition: module contain submodules
Relationship Diagram
Relationship Diagram
● Different from entity-relationship diagram
● Good for showing high-level concepts
● Describes relationships
● May not be direct reflection of DB schema
API Spec
API Spec
● Test/Production URLs
● Authentication (e.g. Token, HTTP Basic Auth)
● Listing of each endpoint
○ Brief description
○ List all parameter (name, data type, optional?, description, data size, values)
○ Example request
○ Example response
Reference:
● Xpressify, Mailgun
Ending Note
● Inspired by UML Diagrams (highly recommend you read up on it http://bfy.tw/5dZO)
○ Class Diagram
○ Activity Diagram
○ Sequence Diagram
○ State Machine Diagram
Lazy Programmer’s Guide To Writing Spec

Más contenido relacionado

Similar a Lazy Programmer’s Guide To Writing Spec

Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UXBehaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UXJohn Patterson
 
Getting started with Stripe
Getting started with StripeGetting started with Stripe
Getting started with StripeTechMagic
 
Event sourcing and CQRS
Event sourcing and CQRSEvent sourcing and CQRS
Event sourcing and CQRSRezwan Rafiq
 
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...Hanapin Marketing
 
SCM || CRM || Intrasoft - Case Study
SCM || CRM ||  Intrasoft - Case StudySCM || CRM ||  Intrasoft - Case Study
SCM || CRM || Intrasoft - Case StudyMufaddal Nullwala
 
Presentation on developments in hiring and fintech for HKU Executive certific...
Presentation on developments in hiring and fintech for HKU Executive certific...Presentation on developments in hiring and fintech for HKU Executive certific...
Presentation on developments in hiring and fintech for HKU Executive certific...Kok Tong (K.T.) Khoo
 
figo Banking API: A Banking Service Provider for FinTech Startups
figo Banking API: A Banking Service Provider for FinTech Startupsfigo Banking API: A Banking Service Provider for FinTech Startups
figo Banking API: A Banking Service Provider for FinTech StartupsLars Markull
 
Online real estate management system
Online real estate management systemOnline real estate management system
Online real estate management systemnishi711
 
Data analytics in fraud detection and customer feedback
Data analytics in fraud detection and customer feedbackData analytics in fraud detection and customer feedback
Data analytics in fraud detection and customer feedbackAnkit Jain
 
A journey from Vision to product
A journey from Vision to productA journey from Vision to product
A journey from Vision to productRitesh Mehrotra
 
Become a Sitecore Entrepreneur
Become a Sitecore EntrepreneurBecome a Sitecore Entrepreneur
Become a Sitecore EntrepreneurAnant Corporation
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Roleeleksdev
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first classLibbySchulze
 
Quickbooks training in Chandigarh
Quickbooks training in ChandigarhQuickbooks training in Chandigarh
Quickbooks training in ChandigarhAshish Mamgain
 
TGL - ERP for Logistics.pptx
TGL - ERP for Logistics.pptxTGL - ERP for Logistics.pptx
TGL - ERP for Logistics.pptxNalinikantaPatra1
 
Interpreting RL Trading Agents
Interpreting RL Trading AgentsInterpreting RL Trading Agents
Interpreting RL Trading AgentsBryanYekelchik
 

Similar a Lazy Programmer’s Guide To Writing Spec (20)

Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UXBehaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
 
Getting started with Stripe
Getting started with StripeGetting started with Stripe
Getting started with Stripe
 
Event sourcing and CQRS
Event sourcing and CQRSEvent sourcing and CQRS
Event sourcing and CQRS
 
SRS for Google Pay(Gpay)
SRS for Google Pay(Gpay)SRS for Google Pay(Gpay)
SRS for Google Pay(Gpay)
 
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...
 
SCM || CRM || Intrasoft - Case Study
SCM || CRM ||  Intrasoft - Case StudySCM || CRM ||  Intrasoft - Case Study
SCM || CRM || Intrasoft - Case Study
 
Presentation on developments in hiring and fintech for HKU Executive certific...
Presentation on developments in hiring and fintech for HKU Executive certific...Presentation on developments in hiring and fintech for HKU Executive certific...
Presentation on developments in hiring and fintech for HKU Executive certific...
 
3 types of monitoring for 2020
3 types of monitoring for 20203 types of monitoring for 2020
3 types of monitoring for 2020
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
figo Banking API: A Banking Service Provider for FinTech Startups
figo Banking API: A Banking Service Provider for FinTech Startupsfigo Banking API: A Banking Service Provider for FinTech Startups
figo Banking API: A Banking Service Provider for FinTech Startups
 
Online real estate management system
Online real estate management systemOnline real estate management system
Online real estate management system
 
Data analytics in fraud detection and customer feedback
Data analytics in fraud detection and customer feedbackData analytics in fraud detection and customer feedback
Data analytics in fraud detection and customer feedback
 
PPT.pptx
PPT.pptxPPT.pptx
PPT.pptx
 
A journey from Vision to product
A journey from Vision to productA journey from Vision to product
A journey from Vision to product
 
Become a Sitecore Entrepreneur
Become a Sitecore EntrepreneurBecome a Sitecore Entrepreneur
Become a Sitecore Entrepreneur
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Role
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first class
 
Quickbooks training in Chandigarh
Quickbooks training in ChandigarhQuickbooks training in Chandigarh
Quickbooks training in Chandigarh
 
TGL - ERP for Logistics.pptx
TGL - ERP for Logistics.pptxTGL - ERP for Logistics.pptx
TGL - ERP for Logistics.pptx
 
Interpreting RL Trading Agents
Interpreting RL Trading AgentsInterpreting RL Trading Agents
Interpreting RL Trading Agents
 

Más de Hean Hong Leong

Más de Hean Hong Leong (19)

Telegram Bot
Telegram BotTelegram Bot
Telegram Bot
 
How To Work With UI/UX Designer
How To Work With UI/UX DesignerHow To Work With UI/UX Designer
How To Work With UI/UX Designer
 
How not to be a mediocre developer!
How not to be a mediocre developer!How not to be a mediocre developer!
How not to be a mediocre developer!
 
Gitflow Workflow
Gitflow WorkflowGitflow Workflow
Gitflow Workflow
 
Developing Better Software
Developing Better SoftwareDeveloping Better Software
Developing Better Software
 
Go serving: Building server app with go
Go serving: Building server app with goGo serving: Building server app with go
Go serving: Building server app with go
 
Webhook & Mailhook
Webhook & MailhookWebhook & Mailhook
Webhook & Mailhook
 
Hacker Culture
Hacker CultureHacker Culture
Hacker Culture
 
Do More With Message Queue
Do More With Message QueueDo More With Message Queue
Do More With Message Queue
 
Building A Software Team
Building A Software TeamBuilding A Software Team
Building A Software Team
 
What the HACK is HHVM?
What the HACK is HHVM?What the HACK is HHVM?
What the HACK is HHVM?
 
Developing MyTrafficCam
Developing MyTrafficCamDeveloping MyTrafficCam
Developing MyTrafficCam
 
Mobile Payment
Mobile PaymentMobile Payment
Mobile Payment
 
Android and web services
Android and web servicesAndroid and web services
Android and web services
 
Color filters for the dummies
Color filters for the dummiesColor filters for the dummies
Color filters for the dummies
 
Android security
Android securityAndroid security
Android security
 
PHP_Frameworks_Discussion
PHP_Frameworks_DiscussionPHP_Frameworks_Discussion
PHP_Frameworks_Discussion
 
Rubik Cubes For Geeks
Rubik Cubes For GeeksRubik Cubes For Geeks
Rubik Cubes For Geeks
 
Geekcamp Android
Geekcamp AndroidGeekcamp Android
Geekcamp Android
 

Último

(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 

Último (20)

(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 

Lazy Programmer’s Guide To Writing Spec