Recipes for successful CakePHP projects

36
Recipes for successful CakePHP Projects Tools & best practices for tasty cake apps

description

Slides from the talk given by Felix Geisendörfer during the CakeFest #3 - July 2009Note: the original pdf can be found on cakephp.org

Transcript of Recipes for successful CakePHP projects

Page 1: Recipes for successful CakePHP projects

Recipes for successful CakePHP Projects

Tools & best practices for tasty cake apps

Page 2: Recipes for successful CakePHP projects

Felix Geisendörfer

CakePHP since 2005

Worked on core since early 2007

ThinkingPHP.org -> Debuggable.com

Page 3: Recipes for successful CakePHP projects

Good Communication(= less code, more results)

Page 4: Recipes for successful CakePHP projects

E-Mail

Page 5: Recipes for successful CakePHP projects

E-Mail

No need for instant responses

Decentralized

Works offline

The Good Parts

Page 6: Recipes for successful CakePHP projects

E-Mail

CC, BCC, Threads - who knows what?

Full inboxes, people waiting

Return on Investment

The Bad Parts

Page 7: Recipes for successful CakePHP projects

When to use e-mail

Time zone differences

Announcements, Spawning debates

Emergency notification

Page 8: Recipes for successful CakePHP projects

E-Mail Tools

Mailing lists

Shared e-mail accounts

Automated e-mails for commits, etc.

Page 9: Recipes for successful CakePHP projects

Instant Messenger

Page 10: Recipes for successful CakePHP projects

IM

Instant communication

Group chat

Voice, Video, Screen

The Good Parts

Page 11: Recipes for successful CakePHP projects

IM

Distraction !!

Multi-tasking = yeah, right

History, Incompatibility

The Bad Parts

Page 12: Recipes for successful CakePHP projects

IM Tools

iChat, Adium, etc.

Campfire

Skype

Page 13: Recipes for successful CakePHP projects

Task Management(getting less done in more time)

Page 14: Recipes for successful CakePHP projects

The truth first

Page 15: Recipes for successful CakePHP projects

Problems with Task Management

Getting tasks in

Tracking tasks

Getting tasks done

Page 16: Recipes for successful CakePHP projects

Tools I like

Pen & paper + text files

OmniFocus (Mac only)

Lighthouse / TheChaw (Trac for Git)

Page 17: Recipes for successful CakePHP projects

FocusNobody else will do it for you

Page 18: Recipes for successful CakePHP projects

What works25 minute sessions (pomodorotechnique.com)

E-mails twice a day, IM off in morning

Clear goals, every day

Page 19: Recipes for successful CakePHP projects

Unit Testing

Page 20: Recipes for successful CakePHP projects

Failing at unit testing100% code coverage

Test driven development

Expecting everybody to write & run tests

Page 21: Recipes for successful CakePHP projects

Where the money is

Top-down testing

Performance testing

Re-assembling

Page 22: Recipes for successful CakePHP projects

Continuous Integration

Page 23: Recipes for successful CakePHP projects

Rolling your own CI box

Post-receive Hook from Git

Run unit tests, check exit code

Log results, notify IM / Email / etc.

Expect 1 day of work, but it’s worth it

Page 24: Recipes for successful CakePHP projects

Pair programmingScaling your coding powers

Page 25: Recipes for successful CakePHP projects

Pair Programming 101

1 Computer, 2 people

One person types & explains

One person listens & suggests

Page 26: Recipes for successful CakePHP projects

VirtualizationSo you can destroy the environment

Page 27: Recipes for successful CakePHP projects

virtual box vmware

Page 28: Recipes for successful CakePHP projects

Version Control(Because there is plenty of blame to go around)

Page 29: Recipes for successful CakePHP projects

In the beginning, there was pain

Page 30: Recipes for successful CakePHP projects

CVS & SVN gave some hope

Page 31: Recipes for successful CakePHP projects

But branching sucked

Page 32: Recipes for successful CakePHP projects

So Linus gave us Git

Page 33: Recipes for successful CakePHP projects

CakePHP & Git

CakePHP is switching from SVN to Git

Git is fantastic for cake apps as well

Decentralized, offline, fast

Page 34: Recipes for successful CakePHP projects

Command Line(= power)

Page 35: Recipes for successful CakePHP projects

The Chaw(= CakePHP based Git GUI)

Page 36: Recipes for successful CakePHP projects

GitHub(= Commercial & Free Git hosting)