Giants are made by standing

on the shoulders of dwarves...

...lots of them

Created by Stephen McCullough / @swmcc

.... and I mean LOTS!

"A practise of developing by understanding and building on the research and works created by others"


Ruby on Rails






Basecamp/Campire aka 37signals






I firmly believe that good/happy developers can use this process as well.

Processes (the drawves)

Processes, in my opinon seperate the good/happy developers from the bad/unhappy ones.

What is a process?

A process is simply a serious of steps you do to complete a given task. One task - one process. It should simply be a discipline you adpot in order to make your life easier.


They shouldn't be restricted by just being 'tools' (IDE's or frameworks). It should incorporate the following:

  • Fundamental Principles (TDD, Reviewing)
  • Workflow
  • Time Management
  • Estimation
  • Collaboration



More than just a source control package. Improves workflow and eases in communication between team members.


I don't use one. I flip between macvim, vim and Sublime Text 2 depending on my mood.

Dotfiles - if you are interested...

  • Taking screen shots
  • Copying a file to my clipboard
  • Logging onto environments
  • Restarting servers/deamons

Fundamental Principles


TDD - 80% of the time

In my opinon - its a waste of time to have 100% coverage, usually.

The 'Almost Certain Principle'

  • Confidence
  • Infection Rate
  • Bravery
  • First thing I do when looking at new code is (after the README) is look at the tests. Test code doesn't lie.. Note I said code not tests ;)

Fundamental Principles

Time Management

"In the zone" programming is (in my opinon) good if you have good processes to catch you out when you do something daft. Coding is a highly CREATIVE activity, if done right. If you live in a good eco system you can go "in the zone" without fear.

Work Flow

Not just confined to your work.

Play Time

Play time can be productive. One to two hours on a Friday morning I try and improve something that annoyed me this week. I keep a file somewhere of the annoying things I have or want to learn and try and incorporate that into my workflow. Sometimes it works, sometimes it doesn't - main thing is that I learn from it.

Doing new things in your own time leads to other things - for instance I am doing a talk on neo4j to Belfast Ruby soon.


We are creative dammit!

I feel privileged to be able code and build something from nothing. I could talk about the any one of the previous topics at length. I love processes.

I read somewhere (can't remember so typing it out from my head):

"You can teach the theory behind programming but you can't teach the discipline, practises and skills of it. These things are aquired through maturity, practise and mentoring..."

To me that's what the 'dwarves' represent. They are stacked high to enable us to deliver better software so then we can build better code and enable us to build better applications/sites.