3. Cynical Things I’ve
Learned
“The two virtues of a good developer are
laziness and hubris”
“You can’t tell a developer to do anything”
4. Things I’ve Learned
Nearly every “Best Practice” was developed
to address a particular situation.
Identify interdependent relationships and
respect them.
The code is not everything.
8. Software Engineering I
@RIT
Team of Four to Five (4-5)
Team Coordinator
Development Coordinator
Requirements Coordinator
Test Coordinator*
Configuration/QA Coordinator
9. Software Engineering I
@RIT
Team of Four to Five (4-5)
Team Coordinator Product Manager
Development Coordinator Technical Lead
Requirements Coordinator
Project Manager
Test Coordinator*
Configuration/QA Coordinator Sys Admin
10. Software Engineering I
@RIT
Team of Four to Five (4-5)
Team Coordinator Product Manager
Development Coordinator Technical Lead
Requirements Coordinator
Project Manager
Test Coordinator*
Release Eng
Configuration/QA Coordinator
11. Software Engineering I
@RIT
Team of Four to Five (4-5)
Team Coordinator Product Manager
Development Coordinator Technical Lead
Requirements Coordinator
Project Manager
Test Coordinator*
Configuration/QA Coordinator QA
12. Software Engineering I
@RIT
Team of Four to Five (4-5)
Team Coordinator Product Manager
Development Coordinator Technical Lead
Requirements Coordinator
Project Manager
Test Coordinator*
Configuration/QA Coordinator Operations
15. Universal Instruments
Corporation
Software Engineers
Machine Level (C and Assembly)
Software (MFC C++ or C#)
Red, Blue, and Purple
16. Universal Instruments
Corporation
Software Engineers
System Administrators
QA Analysts
SCM Team
17. Silos
Software Engineers
... wrote code
... completed ClearQuest tickets
... waited for QA to test nightly builds
... revisited code when QA opened a ticket
... played Counter-Strike at lunch
18. Silos
System Administrators
... maintained the nightly build servers
... kicked the nightly build in the morning
when it failed during the night
... maintained staff workstations
... provide lots of reasons why not
19. Silos
QA Analysts
... waited for nightly builds
... verified completed tickets
... manually tested
... sometimes used WinRunner
... opened tickets for bugs
20. Silos
SCM Team
... decided stream layout in ClearCase
... dictated whether:
<major>.<minor>.<maintenance>.<patch>
... burned CDs
... pre-loaded machines
26. Continuous What?!?
Continuous... Unceremoniously... Initiated By...
Push to
Deployment Anyone
Production
Apply Quality
Integration Anyone
Process
Release a New
Delivery ???
Feature
41. Four Tenets of Testing
Need to Know How Much is Being Covered
Need to Know What is Being Tested
Need to Be Able to Detect Test Runner
Errors
Need to Have Actionable Test Results
(Ownership)
42. More PHPUnit Groups
@group cache
for tests that depend on a cache, like memcache
@group database
for tests that depend on a database
@group network
for tests that depend on a network
@group flaky
for tests that fail without code changes
44. a·gil·i·ty [uh-jil-i-tee]
noun
1. the power of moving quickly and easily;
nimbleness: exercises demanding agility.
2. the ability to think and draw conclusions
quickly; intellectual acuity.
45. Agile Manifesto
Individuals and interactions
over processes and tools
Working software
over comprehensive documentation
Customer collaboration
over contract negotiation
Responding to change
over following a plan
46. Things I’ve Learned
Nearly every “Best Practice” was developed
to address a particular situation.
Identify interdependent relationships and
respect them.
The code is not everything.
47. Things I’ve Learned
Nearly every “Best Practice” was developed
to address a particular situation.
Identify interdependent relationships and
respect them.
The code is not everything.
Nothing is ever complete, finished, done.
48. Non-Technical
Suggested Reading
The Goal: A Process of On-Going
Improvement by Eliyahu M. Goldratt
Switch: How to Change Things When
Change is Hard by Chip and Dan Heath