develop at the speed of thought
DESCRIPTION
Develop At The Speed Of ThoughtTRANSCRIPT
Develop at the Speed of Thought
By Roy Ganor
Eclipse PDT (PHP) & ATF (Ajax) Project Lead
Zend Studio Project Lead
2
Productivity =Production
OutputProduction
Input
3
Productivity= OutputInput X
4
The Four Values
Value #1:
Streamline software
development life-cycle
Value #2: CourageValue #3: Tools Matter Value #4:
Task Focus Programming
5
Streamline Software Development Life-Cycle
Value #1:
6
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
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
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>
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>
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/
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>
13
Streamline Environment Setup (2)
• Invisible for developers, it just works!
14
Value #2: Courage
15
Value #3:
Tools Matter
16
Value #4:
Task Focus Programming
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
18
BeforeInformation overload
Context loss when multi-tasking
19
AfterTasks are integrated
See only what you are working on
20
[Q&[A]]
Eclipse PDT Forum – http://www.eclipse.org/forums/
Zend Studio Forum – http://forums.zend.com/
My email: [email protected]
@royganor