Dynamic Presentation

It seems odd for me when I hear someone lecturing me about how you need to listen to customers and other developers.

Seems it would make more sense see how a person develops an idea and listens to a room full of people. See how they can overcome this hurdle of too many people with tangential ideas. I would sure learn a lot of tricks from that.

Agile is the only methodology I know that has a goal of allowing a group of people to work together for a common goal. But it is very tricky to get it right.

Wonder if no one has tried it because it is novel, or because it is just too hard to get right.

Code is a Liability

Every line of code you write you have to maintain.

Forking a gem on github and editing it is easy, but until you get the code back upstream, the maintenance of all the code in the gem, both the code you wrote and the code others wrote, is now on you.

Good luck pushing upstream.

Not your master

Making code changes directly on master makes it practically impossible to submit the bug fixes back upstream.

When I join a project, I need to fix the repos, so I create a feature branch and reset the master to match the upstream's master.

Get our code and setup upstream parent:

git clone git@github.com:kbrock/stamp.git
git remote add parent git@github.com:jeremyw/stamp.git
git fetch parent master

Create a feature branch with all the commits from master and push to github so we can make a pull request:

git checkout master
git checkout -b cool_feature
git push origin HEAD

Reset our master to match upstream's master:

git checkout master
git reset parent:master
git push -f origin HEAD

Create an integration branch with all of our cool features, and other fool features:

git checkout -b our_branch
git merge cool_feature
git merge cool_feature2
git push origin HEAD

And our Gemfile temporarily has a ref to our integration branch:

gem 'stamp', git: 'git@github.com:kbrock/stamp.git', branch: 'our_branch'