SlideShare a Scribd company logo
Team Work

中華電信研究所 黃培棠
 beta@cht.com.tw
    2011/12/08
WE ARE A TEAM ?


                  2
Working Group or Team?
    Working Group                                                      Team
    • 強勢、聚焦清楚的領導人                                                      • 成員分攤領導人的角色
    • 個人的責任                                                            • 個人和共同的責任
    • 團體的目的和更廣大組織的                                                     • 由團隊自行提出的特定團隊
      使命相同                                                               目的
    • 個人的工作成果                                                          • 集體的工作成果
    • 開會很有效率                                                           • 鼓勵開放式的討論,開會時
    • 用間接方式評估團體的成效,                                                      主動積極解決問題
      像是衡量這個團體對其他事                                                     • 直接用評估集體工作成果的
      項(例如事業單位的財務績效)                                                     方式,來衡量績效
      的影響                                                              • 一起討論、決定和實際執行
    • 討論、決定和授權                                                           工作
Jon R. Katzenbach and Douglas K. Smith, The Discipline of Teams, Harvard Business Review, July – August 2005
                                                                                                               3
瓊.卡然巴哈、道格拉斯.史密斯,團隊力,《哈佛商業評論》 2007年11月號
The Definition of “Team”
• A team is a small number of people with
  complementary skills who are committed to a
  common purpose, set of performance goals,
  and approach for which they hold themselves
  mutually accountable.
           – Jon R. Katzenbach and Douglas K. Smith




                                                  4
A Team?!




                                                   5
http://www.imdb.com/media/rm2088680704/tt0117060
A Team!!




                                                          6
http://trakt.tv/show/mission-impossible-1988
Another Team!!!




                                                                              7
http://www.toptenz.net/top-10-strangest-fan-fiction-stories.php/sailor-moon
ONE CONTEXT


              8
Be Passionate!
    • Why are you here?
           – You thought programming might pay well?
           – Your parents encouraged you?
           – You couldn’t think of a better major in college?

    • Love It or Leave It!
           – Go find a job you’re actually passionate about.

    • Work because you couldn’t not work!

Chad Fowler, The Passionate Programmer, p. 69 – 71, Pragmatic Bookshelf, June 2009   9
Be Pragmatic!
    • Put yourself in the larger context
    • Take responsibility for everything you do
           – Never let cat ate your source code.

    • Work outside the vacuum
           – Communicate!




Andrew Hunt and David Thomas, The Pragmatic Programmer: From Journeyman to Master – ch. 1, Addison Wesley, October 1999   10
Don’t Programming by Coincidence
    • Always be aware of what you are doing
    • Don't code blindfolded
           – Rely only on reliable things.
           – Don't guess; actually try it.

    • Don't be a slave to history



Andrew Hunt and David Thomas, The Pragmatic Programmer: From Journeyman to Master - Tip 44, Addison Wesley, October 1999 11
Don't Reinvent the Wheel
    • Wheels everywhere
            – Bright young developers rarely encounter a
              problem they can’t solve
            – But the problems they solve have usually already
              been solved by someone else.

    • Show people your wheels frequently
            – Coordinate and communicate every day.
            – Daily meetings!

Jared Richardson and William Gualtney Jr., Ship It!, p.79 – 80, Pragmatic Bookshelf, May 2005   12
ONE RULE


           13
One Preferences, One Style
• File / Import… / General / Remote Preferences
  – http://10.144.113.114/eclipse/taxclipse.epf




                                                  14
Sign Your Work
• For pride!
  – Responsible to the whole team.
  – Make others easier to blame to.

• Get your personal account if you hasn’t one!




                                                 15
Revision Control “Blame”




                           16
Comment Your Code
    • Write comments as if they were for you
          – As soon as a line of code is laid on the screen,
            you’re in maintenance mode on that piece of code.

    • Comment your code with tags, if necessary
          // FIXME 不做會挫起來的事情
          // TODO 不做有損我大師風範的事

    • Let your code speak for itself

                                                            17
http://www.devtopics.com/13-tips-to-comment-your-code/
// Commented-Out Code
    • // Don’t do this!
            – // There was a time, back in the sixties, when
              // commenting-out code might have been useful.

    • // Nowadays, just delete the code
            – // We won’t lose it. Promise.
            – // Revision control system will remember it.




Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, p. 68., Prentice Hall, August 2008   18
Eliminate Every Warning
     • Warning means something
           – Bugs came from something
           – 魔鬼都藏在細節裡

     • Eliminate every warning in Eclipse
           – Open your [Marker] View
           – Quick Fix (Ctrl + 1) is your best friend
           – Exclude those raised by the limit of tools
             judiciously. e.g. JSP page or JavaScript code.

                                                              19
http://en.wikipedia.org/wiki/Software_bug
Separate Test from Main Code
• Bad smells
  – System.out.println(),e.printStackTrace()…
     • Redirect them to logger (with meaningful message).
  – Local resources
     • Bundle them as class-path resources.
  – Hard-coded variable values
     • Move them to database, properties, or anywhere.
  – main() method
     • Replace it by one or more test cases.

                                                            20
Test, and Then Test More
• 出來跑,不論做過什麼,遲早要還!
                      – 倪永孝 《無間道》

• Just do it!




                                  21
ONE WAY


          22
When Eclipse meets Maven

           mvn test-compile

     • Most “clean”s are just a waste of time
           – Prefer Eclipse “clean” than the Maven one
           – Only perform Maven “clean” if you get in trouble!

     • Always run “test-compile” phase only
           – Never run “package” or “install” phase manually.


                                                                                                     23
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
No More “Run As…”
• Install the “Eclipse Runner Plugin”




•   Official Site: http://code.google.com/p/eclipserunnerplugin/
•   Update Site : http://eclipserunnerplugin.googlecode.com/svn/trunk/EclipseRunnerSite/


                                                                                           24
ONE LIST


           25
You Can’t Recall
    • The palest ink is better than the best memory
    • List everything important
           – Trust ink over memory.
           – List is the most natural way.




Andy Hunt, Pragmatic Thinking and Learning, p. 124, 134 , Pragmatic Bookshelf, November 2008   26
Work to The List
    • Redmine as the List
            – Publicly available (better through Mylyn)
            – Prioritized
            – On a time line
            – Living
            – Measurable




Jared Richardson and William Gualtney Jr., Ship It!, p.61, Pragmatic Bookshelf, May 2005   27
Issue Tracking Best Practice




                                                28
https://github.com/csnover/TraceKit
Issue Tracking Best Practice (cont’d)




                                                 29
https://github.com/csnover/TraceKit
Valuables Derived From the List
• Wiki them down!
  – Easier to share.
  – Easier to find.
  – Easier to update.




                                    30
Revision Control Every Single Line of Code

ONE SOURCE


                                             31
Comment Every Commit
    • Avoid comment which says nothing at all!
          XXX026W updated by beta @2011/12/6

    • Be precise and exhaustive
          – In the optimal case, I shouldn’t need to read your
            code.




                                                                 32
http://www.iovene.com/21/
Commit Logical Changesets
     • Commit early, commit often!
           – Commit as soon as your changes makes a logical
             unit.

     • Make sure your change reflects a single
       purpose
           – If your SVN comment looks like “Fixing bug #4321
             and correcting typo in debug string” then you
             should’ve used two commits.

                                                                                    33
http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html
Never Ever Break the Trunk
• What if my build failed after updating…
  1. Keep going, nothing can stop me!
  2. I am glad to fix it for you!
  3. Are your tired, should I massage you for a while?

• 己所不欲,勿施於人




                                                     34
Automatically Build, Continuous Integration

ONE TARGET


                                              35
Jenkins As Your Butler*
     • Build your every commit
           – Run raw build and test after every commit
                 • Life or die within 3 minutes
           – Run static analysis after the raw build succeed
                 • FindBugs, PMD, CPD, Checkstyle…

     • Do something boring for you
           – Auto deploy to Maven repository
           – Auto deploy to test Application Server

                                                               36
* http://jenkins-ci.org/content/hudsons-future
Rule #1




Never Fail the Build

                       37
What If I Fail the Build
    • Culprit(s) will be notified. Verify and claim it
            – To ease anger from others




    • Fix it as soon as possible

John Ferguson Smart, Jenkins: The Definitive Guide (Creative Commons Edition), p. 202 – 203., O’Reilly Media, July 2011   38
Honor to Static Analysis Results
• Fix every FindBugs high priority bug




• Shape your trend graph
  – Test Result and Code Coverage graph growing
  – All others decreasing until they reach zero

                                                  39
ONE GOAL


           40
Continuous Improve Yourself
• Code productively
  – Incorporating pair-programming.
• Verify judiciously
  – Automate every tests.
  – Find a reviewer to sing-off your modification.
• Commit proudly
  – Then pick next feature from the list and start over.
• And… go home early
                                                       41
42
http://www.slideshare.net/srikanthps/scrum-in-15-minutes-presentation
ONE QUESTION?


                43

More Related Content

Viewers also liked

Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Matt Raible
 
Spring Boot Update
Spring Boot UpdateSpring Boot Update
Spring Boot Update
Sergi Almar i Graupera
 
Spring Boot
Spring BootSpring Boot
Spring Boot
Pei-Tang Huang
 
Microservices for the Masses with Spring Boot, JHipster, and JWT - Rich Web 2016
Microservices for the Masses with Spring Boot, JHipster, and JWT - Rich Web 2016Microservices for the Masses with Spring Boot, JHipster, and JWT - Rich Web 2016
Microservices for the Masses with Spring Boot, JHipster, and JWT - Rich Web 2016
Matt Raible
 
Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014
Matt Raible
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!Jakub Kubrynski
 
Implement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoImplement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyo
Toshiaki Maki
 
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
Toshiaki Maki
 
Spring boot
Spring bootSpring boot
Spring boot
sdeeg
 

Viewers also liked (9)

Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
 
Spring Boot Update
Spring Boot UpdateSpring Boot Update
Spring Boot Update
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Microservices for the Masses with Spring Boot, JHipster, and JWT - Rich Web 2016
Microservices for the Masses with Spring Boot, JHipster, and JWT - Rich Web 2016Microservices for the Masses with Spring Boot, JHipster, and JWT - Rich Web 2016
Microservices for the Masses with Spring Boot, JHipster, and JWT - Rich Web 2016
 
Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
Implement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoImplement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyo
 
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
 
Spring boot
Spring bootSpring boot
Spring boot
 

Similar to Team work

Getting rid of agile in a few simple steps
Getting rid of agile in a few simple stepsGetting rid of agile in a few simple steps
Getting rid of agile in a few simple steps
Hanno Jarvet
 
Process affordances-workshop
Process affordances-workshopProcess affordances-workshop
Process affordances-workshopdrewz lin
 
Scrum Master Lessons from my 4 Year Old Son
Scrum Master Lessons from my 4 Year Old SonScrum Master Lessons from my 4 Year Old Son
Scrum Master Lessons from my 4 Year Old Son
Ryan Ripley
 
Change Management
Change ManagementChange Management
OSDC 2012 | Devops and Open Source by Kris Buyaert
OSDC 2012 | Devops and Open Source by Kris BuyaertOSDC 2012 | Devops and Open Source by Kris Buyaert
OSDC 2012 | Devops and Open Source by Kris Buyaert
NETWAYS
 
OSDC 2012 | Devops and Open Source by Kris Buytaert
OSDC 2012 | Devops and Open Source by Kris BuytaertOSDC 2012 | Devops and Open Source by Kris Buytaert
OSDC 2012 | Devops and Open Source by Kris Buytaert
NETWAYS
 
User testing presentation
User testing presentationUser testing presentation
User testing presentation
LindaKolker
 
Secrets of Scrum
Secrets of ScrumSecrets of Scrum
Secrets of Scrum
James Coplien
 
Solr pattern
Solr patternSolr pattern
Test Driven Design by Jonas Auken
Test Driven Design by Jonas AukenTest Driven Design by Jonas Auken
Test Driven Design by Jonas Aukenagilencr
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
7 Tools for your Puppetized Devops stack
7 Tools for your Puppetized Devops stack7 Tools for your Puppetized Devops stack
7 Tools for your Puppetized Devops stack
Kris Buytaert
 
How to get your agile development team to love you (product camp, 3.14)
How to get your agile development team to love you (product camp, 3.14)How to get your agile development team to love you (product camp, 3.14)
How to get your agile development team to love you (product camp, 3.14)
Ron Lichty
 
Managing Rubyists GoRuCo 2010 PDF
Managing Rubyists GoRuCo 2010 PDFManaging Rubyists GoRuCo 2010 PDF
Managing Rubyists GoRuCo 2010 PDF
Luke Melia
 
11 Tools for your Open Source devops stack
11 Tools for your Open Source devops stack 11 Tools for your Open Source devops stack
11 Tools for your Open Source devops stack
Kris Buytaert
 
10 Observations from 10+ years in the Corporate UX Trenches
10 Observations from 10+ years in the Corporate UX Trenches10 Observations from 10+ years in the Corporate UX Trenches
10 Observations from 10+ years in the Corporate UX Trenches
Ario Jafarzadeh
 
Software development is hard
Software development is hardSoftware development is hard
Software development is hard
Ed Wong
 
Designing a Process that Works for Your Team
Designing a Process that Works for Your TeamDesigning a Process that Works for Your Team
Designing a Process that Works for Your Team
Ariadna Font Llitjos
 
Crash course- managing software people and teams
Crash course- managing software people and teamsCrash course- managing software people and teams
Crash course- managing software people and teams
Ron Lichty
 
Supersize me: Making Drupal go large
Supersize me: Making Drupal go largeSupersize me: Making Drupal go large
Supersize me: Making Drupal go large
Tom Phethean
 

Similar to Team work (20)

Getting rid of agile in a few simple steps
Getting rid of agile in a few simple stepsGetting rid of agile in a few simple steps
Getting rid of agile in a few simple steps
 
Process affordances-workshop
Process affordances-workshopProcess affordances-workshop
Process affordances-workshop
 
Scrum Master Lessons from my 4 Year Old Son
Scrum Master Lessons from my 4 Year Old SonScrum Master Lessons from my 4 Year Old Son
Scrum Master Lessons from my 4 Year Old Son
 
Change Management
Change ManagementChange Management
Change Management
 
OSDC 2012 | Devops and Open Source by Kris Buyaert
OSDC 2012 | Devops and Open Source by Kris BuyaertOSDC 2012 | Devops and Open Source by Kris Buyaert
OSDC 2012 | Devops and Open Source by Kris Buyaert
 
OSDC 2012 | Devops and Open Source by Kris Buytaert
OSDC 2012 | Devops and Open Source by Kris BuytaertOSDC 2012 | Devops and Open Source by Kris Buytaert
OSDC 2012 | Devops and Open Source by Kris Buytaert
 
User testing presentation
User testing presentationUser testing presentation
User testing presentation
 
Secrets of Scrum
Secrets of ScrumSecrets of Scrum
Secrets of Scrum
 
Solr pattern
Solr patternSolr pattern
Solr pattern
 
Test Driven Design by Jonas Auken
Test Driven Design by Jonas AukenTest Driven Design by Jonas Auken
Test Driven Design by Jonas Auken
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
7 Tools for your Puppetized Devops stack
7 Tools for your Puppetized Devops stack7 Tools for your Puppetized Devops stack
7 Tools for your Puppetized Devops stack
 
How to get your agile development team to love you (product camp, 3.14)
How to get your agile development team to love you (product camp, 3.14)How to get your agile development team to love you (product camp, 3.14)
How to get your agile development team to love you (product camp, 3.14)
 
Managing Rubyists GoRuCo 2010 PDF
Managing Rubyists GoRuCo 2010 PDFManaging Rubyists GoRuCo 2010 PDF
Managing Rubyists GoRuCo 2010 PDF
 
11 Tools for your Open Source devops stack
11 Tools for your Open Source devops stack 11 Tools for your Open Source devops stack
11 Tools for your Open Source devops stack
 
10 Observations from 10+ years in the Corporate UX Trenches
10 Observations from 10+ years in the Corporate UX Trenches10 Observations from 10+ years in the Corporate UX Trenches
10 Observations from 10+ years in the Corporate UX Trenches
 
Software development is hard
Software development is hardSoftware development is hard
Software development is hard
 
Designing a Process that Works for Your Team
Designing a Process that Works for Your TeamDesigning a Process that Works for Your Team
Designing a Process that Works for Your Team
 
Crash course- managing software people and teams
Crash course- managing software people and teamsCrash course- managing software people and teams
Crash course- managing software people and teams
 
Supersize me: Making Drupal go large
Supersize me: Making Drupal go largeSupersize me: Making Drupal go large
Supersize me: Making Drupal go large
 

Recently uploaded

GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 

Recently uploaded (20)

GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 

Team work

  • 1. Team Work 中華電信研究所 黃培棠 beta@cht.com.tw 2011/12/08
  • 2. WE ARE A TEAM ? 2
  • 3. Working Group or Team? Working Group Team • 強勢、聚焦清楚的領導人 • 成員分攤領導人的角色 • 個人的責任 • 個人和共同的責任 • 團體的目的和更廣大組織的 • 由團隊自行提出的特定團隊 使命相同 目的 • 個人的工作成果 • 集體的工作成果 • 開會很有效率 • 鼓勵開放式的討論,開會時 • 用間接方式評估團體的成效, 主動積極解決問題 像是衡量這個團體對其他事 • 直接用評估集體工作成果的 項(例如事業單位的財務績效) 方式,來衡量績效 的影響 • 一起討論、決定和實際執行 • 討論、決定和授權 工作 Jon R. Katzenbach and Douglas K. Smith, The Discipline of Teams, Harvard Business Review, July – August 2005 3 瓊.卡然巴哈、道格拉斯.史密斯,團隊力,《哈佛商業評論》 2007年11月號
  • 4. The Definition of “Team” • A team is a small number of people with complementary skills who are committed to a common purpose, set of performance goals, and approach for which they hold themselves mutually accountable. – Jon R. Katzenbach and Douglas K. Smith 4
  • 5. A Team?! 5 http://www.imdb.com/media/rm2088680704/tt0117060
  • 6. A Team!! 6 http://trakt.tv/show/mission-impossible-1988
  • 7. Another Team!!! 7 http://www.toptenz.net/top-10-strangest-fan-fiction-stories.php/sailor-moon
  • 9. Be Passionate! • Why are you here? – You thought programming might pay well? – Your parents encouraged you? – You couldn’t think of a better major in college? • Love It or Leave It! – Go find a job you’re actually passionate about. • Work because you couldn’t not work! Chad Fowler, The Passionate Programmer, p. 69 – 71, Pragmatic Bookshelf, June 2009 9
  • 10. Be Pragmatic! • Put yourself in the larger context • Take responsibility for everything you do – Never let cat ate your source code. • Work outside the vacuum – Communicate! Andrew Hunt and David Thomas, The Pragmatic Programmer: From Journeyman to Master – ch. 1, Addison Wesley, October 1999 10
  • 11. Don’t Programming by Coincidence • Always be aware of what you are doing • Don't code blindfolded – Rely only on reliable things. – Don't guess; actually try it. • Don't be a slave to history Andrew Hunt and David Thomas, The Pragmatic Programmer: From Journeyman to Master - Tip 44, Addison Wesley, October 1999 11
  • 12. Don't Reinvent the Wheel • Wheels everywhere – Bright young developers rarely encounter a problem they can’t solve – But the problems they solve have usually already been solved by someone else. • Show people your wheels frequently – Coordinate and communicate every day. – Daily meetings! Jared Richardson and William Gualtney Jr., Ship It!, p.79 – 80, Pragmatic Bookshelf, May 2005 12
  • 13. ONE RULE 13
  • 14. One Preferences, One Style • File / Import… / General / Remote Preferences – http://10.144.113.114/eclipse/taxclipse.epf 14
  • 15. Sign Your Work • For pride! – Responsible to the whole team. – Make others easier to blame to. • Get your personal account if you hasn’t one! 15
  • 17. Comment Your Code • Write comments as if they were for you – As soon as a line of code is laid on the screen, you’re in maintenance mode on that piece of code. • Comment your code with tags, if necessary // FIXME 不做會挫起來的事情 // TODO 不做有損我大師風範的事 • Let your code speak for itself 17 http://www.devtopics.com/13-tips-to-comment-your-code/
  • 18. // Commented-Out Code • // Don’t do this! – // There was a time, back in the sixties, when // commenting-out code might have been useful. • // Nowadays, just delete the code – // We won’t lose it. Promise. – // Revision control system will remember it. Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, p. 68., Prentice Hall, August 2008 18
  • 19. Eliminate Every Warning • Warning means something – Bugs came from something – 魔鬼都藏在細節裡 • Eliminate every warning in Eclipse – Open your [Marker] View – Quick Fix (Ctrl + 1) is your best friend – Exclude those raised by the limit of tools judiciously. e.g. JSP page or JavaScript code. 19 http://en.wikipedia.org/wiki/Software_bug
  • 20. Separate Test from Main Code • Bad smells – System.out.println(),e.printStackTrace()… • Redirect them to logger (with meaningful message). – Local resources • Bundle them as class-path resources. – Hard-coded variable values • Move them to database, properties, or anywhere. – main() method • Replace it by one or more test cases. 20
  • 21. Test, and Then Test More • 出來跑,不論做過什麼,遲早要還! – 倪永孝 《無間道》 • Just do it! 21
  • 22. ONE WAY 22
  • 23. When Eclipse meets Maven mvn test-compile • Most “clean”s are just a waste of time – Prefer Eclipse “clean” than the Maven one – Only perform Maven “clean” if you get in trouble! • Always run “test-compile” phase only – Never run “package” or “install” phase manually. 23 http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
  • 24. No More “Run As…” • Install the “Eclipse Runner Plugin” • Official Site: http://code.google.com/p/eclipserunnerplugin/ • Update Site : http://eclipserunnerplugin.googlecode.com/svn/trunk/EclipseRunnerSite/ 24
  • 25. ONE LIST 25
  • 26. You Can’t Recall • The palest ink is better than the best memory • List everything important – Trust ink over memory. – List is the most natural way. Andy Hunt, Pragmatic Thinking and Learning, p. 124, 134 , Pragmatic Bookshelf, November 2008 26
  • 27. Work to The List • Redmine as the List – Publicly available (better through Mylyn) – Prioritized – On a time line – Living – Measurable Jared Richardson and William Gualtney Jr., Ship It!, p.61, Pragmatic Bookshelf, May 2005 27
  • 28. Issue Tracking Best Practice 28 https://github.com/csnover/TraceKit
  • 29. Issue Tracking Best Practice (cont’d) 29 https://github.com/csnover/TraceKit
  • 30. Valuables Derived From the List • Wiki them down! – Easier to share. – Easier to find. – Easier to update. 30
  • 31. Revision Control Every Single Line of Code ONE SOURCE 31
  • 32. Comment Every Commit • Avoid comment which says nothing at all! XXX026W updated by beta @2011/12/6 • Be precise and exhaustive – In the optimal case, I shouldn’t need to read your code. 32 http://www.iovene.com/21/
  • 33. Commit Logical Changesets • Commit early, commit often! – Commit as soon as your changes makes a logical unit. • Make sure your change reflects a single purpose – If your SVN comment looks like “Fixing bug #4321 and correcting typo in debug string” then you should’ve used two commits. 33 http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html
  • 34. Never Ever Break the Trunk • What if my build failed after updating… 1. Keep going, nothing can stop me! 2. I am glad to fix it for you! 3. Are your tired, should I massage you for a while? • 己所不欲,勿施於人 34
  • 35. Automatically Build, Continuous Integration ONE TARGET 35
  • 36. Jenkins As Your Butler* • Build your every commit – Run raw build and test after every commit • Life or die within 3 minutes – Run static analysis after the raw build succeed • FindBugs, PMD, CPD, Checkstyle… • Do something boring for you – Auto deploy to Maven repository – Auto deploy to test Application Server 36 * http://jenkins-ci.org/content/hudsons-future
  • 37. Rule #1 Never Fail the Build 37
  • 38. What If I Fail the Build • Culprit(s) will be notified. Verify and claim it – To ease anger from others • Fix it as soon as possible John Ferguson Smart, Jenkins: The Definitive Guide (Creative Commons Edition), p. 202 – 203., O’Reilly Media, July 2011 38
  • 39. Honor to Static Analysis Results • Fix every FindBugs high priority bug • Shape your trend graph – Test Result and Code Coverage graph growing – All others decreasing until they reach zero 39
  • 40. ONE GOAL 40
  • 41. Continuous Improve Yourself • Code productively – Incorporating pair-programming. • Verify judiciously – Automate every tests. – Find a reviewer to sing-off your modification. • Commit proudly – Then pick next feature from the list and start over. • And… go home early 41