develop at the speed of thought

20
Develop at the Speed of Thought By Roy Ganor Eclipse PDT (PHP) & ATF (Ajax) Project Lead Zend Studio Project Lead

Upload: roy-ganor

Post on 17-May-2015

862 views

Category:

Documents


1 download

DESCRIPTION

Develop At The Speed Of Thought

TRANSCRIPT

Page 1: Develop At The Speed Of Thought

Develop at the Speed of Thought

By Roy Ganor

Eclipse PDT (PHP) & ATF (Ajax) Project Lead

Zend Studio Project Lead

Page 2: Develop At The Speed Of Thought

2

Productivity =Production

OutputProduction

Input

Page 3: Develop At The Speed Of Thought

3

Productivity= OutputInput X

Page 4: Develop At The Speed Of Thought

4

The Four Values

Value #1:

Streamline software

development life-cycle

Value #2: CourageValue #3: Tools Matter Value #4:

Task Focus Programming

Page 5: Develop At The Speed Of Thought

5

Streamline Software Development Life-Cycle

Value #1:

Page 6: Develop At The Speed Of Thought

6

Page 7: Develop At The Speed Of Thought

7

(Continuous) integration Server

Source Code Management

Developers

Continuously commit changes to SCM

Poll changes

Production Clone

Release ManagementSettings

Get/Set Goals

Release Engineering

Provide feedback

Testers

Provide feedback

Task Repository

DevelopWrite and run tests

Set Tasks and Sub tasks

Release ManagementSystem

Produceartifact 

2

16

3

5

4

7

8

Page 8: Develop At The Speed Of Thought

8

Project Management

• Setting up a development environment is hard!

We have a “monkey” for such kind of jobs

• Discrepancies between development environment and

the final product

Page 9: Develop At The Speed Of Thought

9

Project Team Set

• Quickly import a bunch of projects from CVS/SVN

• "Team Project Set" Export Wizard

<?xml version="1.0" encoding="UTF-8"?><psf version="2.0"> <provider id="org.eclipse.team.cvs.core.cvsnature"> <project reference="1.0,:pserver:my.company.repo:/repos,module/project1"/> <project reference="1.0,:pserver:my.company.repo:/repos,module/project1"/> ... <project reference="1.0,:ext:oss.org:/cvsroot/ns,module/project,v200909160005"/> <project reference="1.0,:ext:oss.org:/cvsroot/ns,module/project,v200904131653"/> ... </provider> <workingSets ...> </workingSets><psf>

Page 10: Develop At The Speed Of Thought

10

Managing Project’s Resources

• Separate back-end(core), front-end(ui), tests and release stuff

• Enforce dependencies

• Separate PHP from Resources

<?xml version="1.0" encoding="UTF-8"?><buildpath> <buildpathentry kind="src" path="core"/> <buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/></buildpath>

Page 11: Develop At The Speed Of Thought

11

Release based on Tags

# PHP Unitphpunit.version=3.3.17

# PHP Documentorphpdoc.version=1.4.2

# Studio Documentation (PDF, EULA)documentaion.tag=HEAD

# Zend Frameworkzf_19.version=1.9.3

# PHPphp5.version=5.2.10php53.version=5.3.0

com.project.core=v20091007-1624,:pserver:[email protected]:/.repos,mi.r+qz^,Module/com.project.core/com.project.ui=v20090819-1600,:pserver:[email protected]:/.repos,mi.r+qz^,Module/com.project.ui/

Page 12: Develop At The Speed Of Thought

12

Streamline Environment Setup

• Manual configuration is the source of evil

• Can be used later on by release systems

• Cross-platform scripts to configure workspace

<?xml version="1.0" encoding="UTF-8"?><project name="Builds all parser classes" default="main"> <target name="main"> <uptodate property=“isUpdated" src=“file1" target=“file2”/>

<if> ... <!– if file was updated --> <phingcall target=“generateCode">

<property name=“prop1" value=“${value1}" /> <property name=“prop2" value=“${value2}" />

<phingcall /> </if> </target></project>

Page 13: Develop At The Speed Of Thought

13

Streamline Environment Setup (2)

• Invisible for developers, it just works!

Page 14: Develop At The Speed Of Thought

14

Value #2: Courage

Page 15: Develop At The Speed Of Thought

15

Value #3:

Tools Matter

Page 16: Develop At The Speed Of Thought

16

Value #4:

Task Focus Programming

Page 17: Develop At The Speed Of Thought

17

Task Management Systems

• Episodic memory on specific tasks

• Subset of information that is relevant to specific task

• Focus on the content that is related to a specific task

• Task focus interface - Activating a task what you’re working on is very clear, deactivating tasks brings back all content

• Share context with developers

• Task Repository viewer and history

Page 18: Develop At The Speed Of Thought

18

BeforeInformation overload

Context loss when multi-tasking

Page 19: Develop At The Speed Of Thought

19

AfterTasks are integrated

See only what you are working on

Page 20: Develop At The Speed Of Thought

20

[Q&[A]]

Eclipse PDT Forum – http://www.eclipse.org/forums/

Zend Studio Forum – http://forums.zend.com/

My email: [email protected]

@royganor