The Software Gardener

Get Started. It's Free
or sign up with your email address
Rocket clouds
The Software Gardener by Mind Map: The Software Gardener

1. Pair Programming: Pair Gardening

1.1. Two programmers work side by side

1.1.1. gardeners working together

1.1.2. planting trees

1.1.3. digging and shaping

1.1.4. moving the wheel barrel

1.2. Troubleshooting

1.2.1. misery loves company

1.2.2. sweating in the sun together

1.3. pairs

1.3.1. expert novice

1.3.1.1. grandma grandchild

1.3.2. advanced novice

1.3.2.1. wife husband

1.3.3. Outsourced

1.3.3.1. hired labor

1.4. We still do individual work

1.4.1. emails, refactoring, entering bugs, testing

1.4.2. watering, pruning, spotting weeds,

2. Test Driven Development: Test Driven Planting

2.1. often not done

2.1.1. start programming immediately

2.1.1.1. quickly glance at apis and how to use things

2.1.2. go to store, start buying plants, flowers

2.1.2.1. roughly read the 2" card in the flower pot

2.1.3. can program bad, lucky, or decent without it

2.1.3.1. can pot in dirt, all potting soil, or mix the 2

2.2. most experienced do TDD

2.2.1. determine requirements, best way to interact with an api, setup tests

2.2.2. draws out the plan, defines the size of flowers/plants for the area, determine amount of sun required

2.2.3. define what passes and what fails, not just making progress toward an unknown goal

3. Refactoring: Planted Debt

3.1. Making changes that don't affect behavior

3.1.1. cleanup code

3.1.1.1. better designs

3.1.1.1.1. fight off garbage collection locks and memory leaks

3.2. Making changes that don't affect overall garden

3.2.1. clean out weeds

3.2.1.1. turn plants at different angles

3.2.1.1.1. fight off squirrels & leprechauns

4. Mythical Man Month: time is Needed

4.1. Book known for the analogy

4.1.1. A baby takes 9 months to make, no matter how many women you put on the job

4.1.2. Software takes time, you can't always throw developers at a project to complete it sooner

4.2. Gardening is the same

4.2.1. Can't have 9 gardeners grow a tree in a day

4.2.2. needs

4.2.2.1. sun, water, pruning, rain, time

4.2.2.2. refactoring, upgraded, memory, time

4.3. Commercial off the shelf solutions

4.3.1. can purchase a tool to solve a problem

4.3.1.1. sometimes it doesn't work out

4.3.1.1.1. sometimes need to develop the right solution

4.3.2. can buy a tree from a store

4.3.2.1. sometimes the tree still dies

4.3.2.1.1. sometimes you need to buy the land, the seeds, the shovels and put in the hard work for the right solution

5. Design

5.1. pull out hose

5.1.1. make shape of flower bed

5.1.1.1. decide how much money you want to spend

5.1.1.1.1. spend more money than desired

6. Peer Review

6.1. syntax nagging

6.1.1. color of anything you have ever done is always wrong

6.1.1.1. actual good feedback

6.2. shrub should face the street

6.2.1. color of mulch should be more dirt colored

6.2.1.1. suggestion on frequency of watering

7. Continuous Integration

7.1. plant a flower in pot first

7.1.1. migrate flower to bed

7.1.1.1. sometimes plant directly into the bed

7.2. develop feature on branch

7.2.1. merge code

7.2.1.1. Facebook changing prod

7.2.1.1.1. harder in development

8. On Call Support

8.1. Server is down!!

8.1.1. bugs

8.1.1.1. Dogs crap in the begonias

8.1.1.1.1. we clean up

8.2. Fountain in front yard (broken sprinkler head)

8.2.1. bugs

8.2.1.1. user puts in crap

8.2.1.1.1. we clean up

9. Development Duck

9.1. add yard gnome

9.1.1. spouse complains about it

9.1.1.1. spouse misses how you didn't plant the flower facing the street

9.2. add a feature you don't really want

9.2.1. manager complains about it

9.2.1.1. leaving the rest of the program comment free

10. Deliver Features

10.1. agile focus on delivering end user features

10.1.1. instant usability and enjoyment

10.1.1.1. rarely do you create the framework from scratch

10.1.1.1.1. in batches to the user, iterations, sprints

10.2. you plant one flower at a time

10.2.1. instant usability and enjoyment

10.2.1.1. rarely do you plant seeds

10.2.1.1.1. in batches, multiple flowers, plants etc