SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante a Get shit done

Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
Rodrigo Gil
 
Parse cloud code
Parse cloud codeParse cloud code
Parse cloud code
維佋 唐
 

Semelhante a 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
 
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

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