An conference talk I gave at AgileTour Bangkok 2013 on what agile really is, what agile isn't about, and how agile is possible only with technical practices.
5. Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over NOT following a plan
Cowboy hacking
Ninja
6. Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over NOT following a plan
Cowboy hacking
Learners/
Practitioners
Ninja
12. require 'rspec'
require './invoice'
describe Invoice do
context 'when in draft state' do
let(:invoice) { Invoice.new }
it { expect(invoice.invoice_number.start_with?
('IDFT-')).to be_true }
end
end
13. let(:invoice)
{
Invoice.new
}
require 'rspec'
require './invoice'
describe Invoice do
context 'when in draft state' do
let(:invoice) { Invoice.new }
it { expect(invoice.invoice_number.start_with?
('IDFT-')).to be_true }
end
end
15. expect
to
be
true
require 'rspec'
require './invoice'
describe Invoice do
context 'when in draft state' do
let(:invoice) { Invoice.new }
it { expect(invoice.invoice_number.start_with?
('IDFT-')).to be_true }
end
end
16. /Users/kyeung/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/rubygems/
custom_require.rb:36:in `require': cannot load such file -- ./invoice
(LoadError)
from /Users/kyeung/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/rubygems/
custom_require.rb:36:in `require'
from /Users/kyeung/RubymineProjects/agiletour_bangkok/invoice_spec.rb:
2:in `<top (required)>'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/configuration.rb:789:in `load'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/configuration.rb:789:in `block in load_spec_files'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/configuration.rb:789:in `each'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/configuration.rb:789:in `load_spec_files'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/command_line.rb:22:in `run'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/runner.rb:80:in `run'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/runner.rb:17:in `block in autorun'
17. /Users/kyeung/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/rubygems/
custom_require.rb:36:in `require': cannot load such file -- ./invoice
(LoadError)
from /Users/kyeung/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/rubygems/
custom_require.rb:36:in `require'
from /Users/kyeung/RubymineProjects/agiletour_bangkok/invoice_spec.rb:
2:in `<top (required)>'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/configuration.rb:789:in `load'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/configuration.rb:789:in `block in load_spec_files'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/configuration.rb:789:in `each'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/configuration.rb:789:in `load_spec_files'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/command_line.rb:22:in `run'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/runner.rb:80:in `run'
from /Users/kyeung/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.12.1/
lib/rspec/core/runner.rb:17:in `block in autorun'
`require': cannot load such
file -- ./invoice (LoadError)
19. Admin-MacBook-Air-3:agiletour_bangkok kyeung$ rspec
invoice_spec.rb
F
Failures:
1) Invoice when in draft state
Failure/Error: it
{ expect(invoice.invoice_number.start_with?('I-DFT-')).to
be_true }
NoMethodError:
undefined method `invoice_number' for #<Invoice:
0x007fe5732b4ca0>
# ./invoice_spec.rb:7:in `block (3 levels) in <top
(required)>'
Finished in 0.00048 seconds
1 example, 1 failure
Failed examples:
20. Admin-MacBook-Air-3:agiletour_bangkok kyeung$ rspec
invoice_spec.rb
F
Failures:
1) Invoice when in draft state
Failure/Error: it
{ expect(invoice.invoice_number.start_with?('I-DFT-')).to
be_true }
NoMethodError:
undefined method `invoice_number' for #<Invoice:
0x007fe5732b4ca0>
# ./invoice_spec.rb:7:in `block (3 levels) in <top
(required)>'
NoMethodError:
undefined method
`invoice_number' for #<Invoice
Finished in 0.00048 seconds
1 example, 1 failure
Failed examples:
22. Admin-MacBook-Air-3:agiletour_bangkok kyeung$ rspec
invoice_spec.rb
F
Failures:
1) Invoice when in draft state
Failure/Error: it
{ expect(invoice.invoice_number.start_with?('IDFT-')).to be_true }
NoMethodError:
undefined method `start_with?' for nil:NilClass
# ./invoice_spec.rb:7:in `block (3 levels) in <top
(required)>'
Finished in 0.0005 seconds
1 example, 1 failure
23. Admin-MacBook-Air-3:agiletour_bangkok kyeung$ rspec
invoice_spec.rb
F
Failures:
1) Invoice when in draft state
Failure/Error: it
{ expect(invoice.invoice_number.start_with?('IDFT-')).to be_true }
NoMethodError:
undefined method `start_with?' for nil:NilClass
# ./invoice_spec.rb:7:in `block (3 levels) in <top
(required)>'
NoMethodError:
undefined method
`start_with?' for nil:NilClass
Finished in 0.0005 seconds
1 example, 1 failure
30. Refactor
refactoring, n., a change made to the internal
structure of software to make it easier to
understand and cheaper to modify without
changing its observable behaviour.