get shit done

Post on 13-Jul-2015

1.174 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Get shit doneProgramming tips for startups

EnterpriseRequirementsArchitectureDesignImplementation

Software development process

Early stage startupRequi-rements

Architecture

Design Implementation

Architecture & Design

Keep pen and paper at handit'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

AndroidJava

PythonBash

JavaPlay

FrameworkBackbone.js

RoR

ClickNotifi

Unknowns firstfigure 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 masturbationBuilding framework is kinda pleasant but of little use

Implementation

Choose your featuresYou 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 literals86400000 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 iterateSmall methods = small problems

# vanilla guidself.guid = UUID.random_create.to_s# vanilla gid without dashself.guid = UUID.random_create.to_s.gsub("\-", "")# short & sweet url shortener-likeself.guid = ("%d%d" % [rand(1000),Time.now.to_i]).to_i.to_s(36)

Don't accept paymentsFake it till you make it

Your code is like weighted companion cubeBurn it as needed

The best solution is NOT most flexible one; nor most performant or feature-complete

Best solution is available NOW

Thank youmichal.kostic@gmail.com

www.michalkostic.com

top related