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"

Frameworks

Ruby on Rails

Sinatra

Express

Django

Zend

Sites

Basecamp/Campire aka 37signals

Github

Twitter

Fundry

Housetrip

Developers?

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.

Examples

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

Tools

Git

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

IDE

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

Dotfiles

https://github.com/swmcc/dotfiles - if you are interested...

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

Fundamental Principles

TDD

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.

Craftmanship

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.

FIN