SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Get shit done
Programming tips for startups
Software development process
Enterprise          Early stage startup
Requirements     Requi-      Architecture
Architecture     rements
Design
Implementation
                 Design      Implementation
Architecture & Design
Keep pen and paper at hand
it's faster than iPad, Omnigraffle and Balsamiq
combined
Technology: to learn or to do?
If in doubt, go with whatever you are most
familiar with
My technology choices

                          ClickNotifi

  Android      Java          RoR
   Java        Play
  Python    Framework
   Bash     Backbone.js
Unknowns first
figure out parts you are least certain will work
# Tweaking (2 days and counting)
* 49d6abb - preparation for deployment (3 days ago)
* 7fe3ff7 - changes in links (3 days ago)
* c8ea33e - proper handling of link update (3 days ago)
* 9d61962 - logout link (3 days ago)
* e2f0289 - click count mailing kinda works (but configuration still
needs to be checked how to disable deliveries) my links works(4 days
ago)
* e206708 - UI makeover of new link, links to "new link" and "new
recipient" shorter link guid (allows for 100s of concurrent links per
second but not truly globally unique) twitter menu header (4 days ago)
# Infrastructure (1 day)
* d59971d - user authentication via devise (5 days ago)
* 10313fd - mailing notifications, starting with devise (users)(5 days
ago)
# Core (24 hours)
* 0d35fd0 - extract guid from path request image from server (6 days
ago)
* 1a770c9 - serve gif file from url (6 days ago)
* d00d93a - fix: removed "-" from guid (6 days ago)
* 0e23473 - link tagging works, tagged link is saved to server, basic
form validation (6 days ago)
* 88319c5 - initial commit - standard CRUD is working, started working
on javascript functionality (7 days ago)
Framework masturbation
Building framework is kinda pleasant but of little
use
Implementation
Choose your features
You can't have everything
Features
● What do you want to achieve?

● Tweaks
  ○ UI
  ○ Refactoring
  ○ Performance
● Extensions
  ○   Strategic - script execution
  ○   User required - FTP
  ○   Fun - string search
  ○   Catching up - HTML highlighting
  ○   Bragging - GitHub client
Is empty text editor scaring you?
Start with whatever comes to your mind!
class ImportantLink

      :original, 
      :company, 
      :generated_link, 
      :name

end
Become StarShip programmer!
Write Simple and Sound code
Simple
● Simple algorithms
  ○   Temporal expression detection
  ○   Siri
  ○   Machine learning
  ○   String matching


● One way to do things

● Make it obvious
Sound - eat with fork and knife
● use descriptive function and parameter
   names
cfoundp vs charFoundInBuffer

● use constants/variables for literals
86400000 vs MILLIS_IN_DAY vs jobPeriod
Sound - be nice to teammates
● make methods read like a story

void loadForm() {
  loadData();
  enforceSecurity();
  adjustControls();
}
Sound - don't show off
● use Object Orientation sparingly
  ○ shallow hierarchies
  ○ carefully with polymorphism

● internal API


● conservative extensions
Isolate and iterate
Small methods = small problems
# vanilla   guid
self.guid   = UUID.random_create.to_s
# vanilla   gid without dash
self.guid   = UUID.random_create.to_s.gsub("-", "")
# short &   sweet url shortener-like
self.guid   = ("%d%d" % [rand(1000),Time.now.to_i]).to_i.to_s
(36)
Don't accept payments
Fake it till you make it
Your code is like weighted
companion cube
Burn it as needed
The best solution is NOT most flexible one; nor
most performant or feature-complete

Best solution is available NOW
Thank you
michal.kostic@gmail.com
 www.michalkostic.com

Contenu connexe

Similaire à Get shit done

Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Bastian Grimm
 
Code driven development in drupal
Code driven development in drupalCode driven development in drupal
Code driven development in drupalAndriy Yun
 
Not Just a Pretty Face: How to design and build a cross-CMS CSS framework
Not Just a Pretty Face: How to design and build a cross-CMS CSS frameworkNot Just a Pretty Face: How to design and build a cross-CMS CSS framework
Not Just a Pretty Face: How to design and build a cross-CMS CSS frameworkcrystalenka
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraLINAGORA
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakSigma Software
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneursRodrigo Gil
 
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...Daniel Bryant
 
Rapid app building with loopback framework
Rapid app building with loopback frameworkRapid app building with loopback framework
Rapid app building with loopback frameworkThomas Papaspiros
 
Parse cloud code
Parse cloud codeParse cloud code
Parse cloud code維佋 唐
 
Snowflake Automated Deployments / CI/CD Pipelines
Snowflake Automated Deployments / CI/CD PipelinesSnowflake Automated Deployments / CI/CD Pipelines
Snowflake Automated Deployments / CI/CD PipelinesDrew Hansen
 
Hands on react native
Hands on react nativeHands on react native
Hands on react nativeJay Nagar
 
World is changed. i feel it in the front end
World is changed. i feel it in the front endWorld is changed. i feel it in the front end
World is changed. i feel it in the front endAndriy Yun
 
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Nicolas HAAN
 
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜Koji Ishimoto
 

Similaire à Get shit done (20)

Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018
 
Code driven development in drupal
Code driven development in drupalCode driven development in drupal
Code driven development in drupal
 
Not Just a Pretty Face: How to design and build a cross-CMS CSS framework
Not Just a Pretty Face: How to design and build a cross-CMS CSS frameworkNot Just a Pretty Face: How to design and build a cross-CMS CSS framework
Not Just a Pretty Face: How to design and build a cross-CMS CSS framework
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
 
Dust.js
Dust.jsDust.js
Dust.js
 
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
 
Node azure
Node azureNode azure
Node azure
 
Rapid app building with loopback framework
Rapid app building with loopback frameworkRapid app building with loopback framework
Rapid app building with loopback framework
 
Parse cloud code
Parse cloud codeParse cloud code
Parse cloud code
 
Android antipatterns
Android antipatternsAndroid antipatterns
Android antipatterns
 
Snowflake Automated Deployments / CI/CD Pipelines
Snowflake Automated Deployments / CI/CD PipelinesSnowflake Automated Deployments / CI/CD Pipelines
Snowflake Automated Deployments / CI/CD Pipelines
 
C++ programming
C++ programmingC++ programming
C++ programming
 
Data herding
Data herdingData herding
Data herding
 
Data herding
Data herdingData herding
Data herding
 
Hands on react native
Hands on react nativeHands on react native
Hands on react native
 
World is changed. i feel it in the front end
World is changed. i feel it in the front endWorld is changed. i feel it in the front end
World is changed. i feel it in the front end
 
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
 
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
 

Dernier

Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 

Dernier (20)

Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 

Get shit done

  • 1. Get shit done Programming tips for startups
  • 2. Software development process Enterprise Early stage startup Requirements Requi- Architecture Architecture rements Design Implementation Design Implementation
  • 4. Keep pen and paper at hand it's faster than iPad, Omnigraffle and Balsamiq combined
  • 5. Technology: to learn or to do? If in doubt, go with whatever you are most familiar with
  • 6. My technology choices ClickNotifi Android Java RoR Java Play Python Framework Bash Backbone.js
  • 7. Unknowns first figure out parts you are least certain will work
  • 8. # Tweaking (2 days and counting) * 49d6abb - preparation for deployment (3 days ago) * 7fe3ff7 - changes in links (3 days ago) * c8ea33e - proper handling of link update (3 days ago) * 9d61962 - logout link (3 days ago) * e2f0289 - click count mailing kinda works (but configuration still needs to be checked how to disable deliveries) my links works(4 days ago) * e206708 - UI makeover of new link, links to "new link" and "new recipient" shorter link guid (allows for 100s of concurrent links per second but not truly globally unique) twitter menu header (4 days ago) # Infrastructure (1 day) * d59971d - user authentication via devise (5 days ago) * 10313fd - mailing notifications, starting with devise (users)(5 days ago) # Core (24 hours) * 0d35fd0 - extract guid from path request image from server (6 days ago) * 1a770c9 - serve gif file from url (6 days ago) * d00d93a - fix: removed "-" from guid (6 days ago) * 0e23473 - link tagging works, tagged link is saved to server, basic form validation (6 days ago) * 88319c5 - initial commit - standard CRUD is working, started working on javascript functionality (7 days ago)
  • 9. Framework masturbation Building framework is kinda pleasant but of little use
  • 10.
  • 12. Choose your features You can't have everything
  • 13. Features ● What do you want to achieve? ● Tweaks ○ UI ○ Refactoring ○ Performance ● Extensions ○ Strategic - script execution ○ User required - FTP ○ Fun - string search ○ Catching up - HTML highlighting ○ Bragging - GitHub client
  • 14. Is empty text editor scaring you? Start with whatever comes to your mind!
  • 15. class ImportantLink :original, :company, :generated_link, :name end
  • 16. Become StarShip programmer! Write Simple and Sound code
  • 17. Simple ● Simple algorithms ○ Temporal expression detection ○ Siri ○ Machine learning ○ String matching ● One way to do things ● Make it obvious
  • 18. Sound - eat with fork and knife ● use descriptive function and parameter names cfoundp vs charFoundInBuffer ● use constants/variables for literals 86400000 vs MILLIS_IN_DAY vs jobPeriod
  • 19. Sound - be nice to teammates ● make methods read like a story void loadForm() { loadData(); enforceSecurity(); adjustControls(); }
  • 20. Sound - don't show off ● use Object Orientation sparingly ○ shallow hierarchies ○ carefully with polymorphism ● internal API ● conservative extensions
  • 21. Isolate and iterate Small methods = small problems # vanilla guid self.guid = UUID.random_create.to_s # vanilla gid without dash self.guid = UUID.random_create.to_s.gsub("-", "") # short & sweet url shortener-like self.guid = ("%d%d" % [rand(1000),Time.now.to_i]).to_i.to_s (36)
  • 22. Don't accept payments Fake it till you make it
  • 23. Your code is like weighted companion cube Burn it as needed
  • 24. The best solution is NOT most flexible one; nor most performant or feature-complete Best solution is available NOW