4. The Four Values Value #3: Tools Matter Value #1: Streamline software development life-cycle Value #2: Courage Value #4: Task Focus Programming
5. Value #1: Streamline Software Development Life-Cycle
6.
7. 2 Develop Write and run tests 1 6 Get/Set Goals Set Tasks and Sub tasks Release Engineering Developers Task Repository 3 Continuously commit changes to SCM 5 8 Provide feedback Provide feedback Source Code Management Release Management Settings 4 Poll changes 7 Produce artifact Testers Release Management System (Continuous) integration Server Production Clone
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> <buildpathentrykind="src"path="core"/> <buildpathentrykind="con"path="org.eclipse.php.core.LANGUAGE"/> </buildpath>
11. Release based on Tags com.project.core=v20091007-1624,:pserver:cvs@cvs.int.net:/.repos,mi.r+qz^,Module/com.project.core/ com.project.ui=v20090819-1600,:pserver:cvs@cvs.int.net:/.repos,mi.r+qz^,Module/com.project.ui/ # PHP Unit phpunit.version=3.3.17 # PHP Documentor phpdoc.version=1.4.2 # Studio Documentation (PDF, EULA) documentaion.tag=HEAD # Zend Framework zf_19.version=1.9.3 # PHP php5.version=5.2.10 php53.version=5.3.0
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"?> <projectname="Builds all parser classes"default="main"> <targetname="main"> <uptodateproperty=“isUpdated"src=“file1"target=“file2”/> <if> ... <!– if file was updated --> <phingcall target=“generateCode"> <propertyname=“prop1"value=“${value1}"/> <propertyname=“prop2"value=“${value2}"/> <phingcall/> </if> </target> </project>
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