enterprise workflows when you aren't enterprise

Download Enterprise Workflows When You Aren't Enterprise

If you can't read please download the document

Upload: chris-tankersley

Post on 16-Apr-2017

996 views

Category:

Technology


0 download

TRANSCRIPT

Ubuntu Mocha

Enterprise Workflows When You Aren't Enterprise

Chris Tankersley

E-mail: [email protected]: @dragonmantankIdenti.ca: dragonmantank

Who Are You and Why Are You In My House?

Chris Tankersley

Been doing PHP for almost 8 years now

Lots of projects no one uses released under the BSD license

What is 'Enterprise'?

Big, Robust

Structured

Standardized

Overly Complicated

Unrealistic

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

What is 'Enterprise'?

Big, Robust

Structured

Standardized

Overly Complicated

Unrealistic

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

How Do You Become Enterprise?

Pass (parts of) the Joel Test

Project Management

Managed Environments

Automated Processes

The Joel Test

Do you have a spec?

Do you use source control?

Can you make a build in one step?

Do you make daily builds?

Do you have an up-to-date schedule?

Do you have a bug database?

Project Management

You can't do work unless you know what needs to be done

Pick a Project Management StyleModified Waterfall

SCRUM

Kanban

Generate a functional and technical spec

Stick With It

Modified Waterfall

Scrum

Kanban

Project Management Tools

Trac Wiki, SCM browser, and Bug Tracker

Basecamp HQ

Microsoft Project

TaskJuggler

Excel

Whiteboard

Corkboard

Managed Environments

A work area with a specific purpose

Should have at least 3 areasDevelopment

Quality

Production

If you can, add in 'Integration' before Production

Code always moves up, not down, the chain

Development

Here Be Dragons

Code here is never considered stable

Can be any machine (local, development, a VM, whatever)

Test Driven Development starts here

Quality

Code should work here

This is for QA testers

Should be close to Production

Should have logging and debug on

Integration

Production-Lite

Used to catch deployment bugs

Uses Production data

Should be exactly the same build as ProductionSame OS, setup, and version levels of software

Production

Here Be Dragons

Live data

No Touching!

Environment Tools

VMWare Workstation/Fusion/Server/ESXi

Oracle VirtualBox

OS-Native BuildsOSX homebrew

Windows Packages and cygwin

Linux Probably already there

The CloudEC2

Rackspace Cloud

Glue Software

Continuous Integration

Act of automating build tasks

How is a PHP Project built?Check out the code from the SCM

Run unit tests

Run code helpers

Build Documentation

Packaging

Continuous Integration Software

PhpUnderControl

Hudson/Jenkins

Phing and xinc

Source Control

Pick One Doesn't Matter

Just make sure it works with your CI controller

Hook it all together

Starting a Project

Get/write the spec

Break it down into work unitsDesign Schema

Set up server

Write API for user authentication

Put all the tasks up for choosing

Choose Your Tasks

Go to the list of tasks

Pick something that needs to be worked onWaterfall should have a list of objectives

Scrum should do this at the beginning of the Sprint

Kanban should do this every time a work unit is finished

Assign and Begin Work

Development

Do your initial coding (TDD, BDD, whatever)

Commit in functional chunks. Don't check in half-baked code

When you are finished with a feature, promote and tell QA

Development -> Quality

Continuous Integration kicks inLet it manage code movement to Quality

Only passing code gets put into Quality

Quality

Do main testing here

Write down bugs/defectsIf they are in relation to a feature being worked on, let the developer know

If they are not, put in the list of things to do

Only QA should close bugs/tickets

Quality -> Integration

Tag the code in a meaningful way

Deployment is testedDownload Production data

Run update scripts

Promote Code

Check if anything broke

Usually a pass/fail

Quality/Integration -> Production

Deploy the Code

Return to 'Choose Your Tasks'

What does all this lead to?

Continuous Deployment

The Holy Grail

As work is finished, it is put into Production

Everything is automated after DeploymentYou develop, it gets automatically tested, and CI will test deployment and put into Production

Promotions to Production happen all the time

Small promotions tend to break less than large ones, and when they do break, are easier to fix

My Workflow

Not perfect by any means

Use Kanban

Develop on my local machine

Get feature, make branch, test, merge, commit

Starting to use Jenkins to do CIphpUnit, phpCodeSniffer

Manually promote code to Production

Rinse, repeat

Any Questions?

Thanks!

Credits

Waterfall Imagehttp://en.wikipedia.org/wiki/Waterfall_model

SCRUM Imagehttp://en.wikipedia.org/wiki/Scrum_%28development%29

Kanban Imagehttp://www.agileproductdesign.com/blog/2009/kanban_over_simplified.html

March 15, 2011

NWO-PUG