putting the pro in programmer

24
Putting the PRO in PROGRAMMER Improving your development processes Kris Sum / Switch Systems Ltd

Upload: switch-systems-ltd

Post on 09-Jan-2017

350 views

Category:

Internet


4 download

TRANSCRIPT

Putting the PRO in

PROGRAMMER

Improving your development processes

Kris Sum / Switch Systems Ltd

So you’re a rockstar developer…

You write lots of code

You have to fix everyone

else’s stuff

You don’t have time to be

doing any more work

… its time to go PRO!

The #1 tool a programmer should use

Are you using

version control?

YES

Is it GIT?NO

NO

YES

Awesome!

USE GIT

FFS!

Version ControlGit

Host it online: Git Hub

Host it yourself: Stash (by Atlassian)

Development Environment: VAGRANT

Development Environment: VAGRANT

• All your developers get the same development

environment for testing

• No more worries about dependencies or

windows/linux/mac platform differences

• You can give the vagrant files to non-techies

• Makes deploying to production easier

BONUS FEATURE

Fixing Bugs

Use bug trackers (and project management tools) to

improve communication and transparency

• Redmine

• Jira

Pro-TipIntegrate these tools with your

versioning system so you can

track what code went into each bug-fix

“NO COMMITS

WITHOUT TICKET IDs”

Some wise bloke

You can enforce this with

pre-commit hooks!

So you fixed a bug

NOW WRITE A TEST

• If the bug wasn’t down to user error, write a unit test that proves that your patch fixes it.

• This means that you can’t ever re-introduce the bug. (but obviously no one here has ever done that!)

• It also improves your understanding of the code, as your unit test should be testing all edge cases, including the ones the original bug may have missed

Now we’re getting somewhere!

Your code is in good shape

It’s all version controlled

Project Management is happening

You have tests that prove the code works

Time for

Continuous

Integration!

CONTINUOUS WHAT?

This is Jenkins

He automatically

runs tests after

every commit.

Shows us trends, code

coverage, and lots of

other stats.

This is Jenkins

+ IM

Now we have a

chat-bot so there’s

no getting away

from breaking the

build!

Monitoring and Alerting

• Gives us baseline figures

• We can set up thresholds for alerting

What should you monitor?

• Load (linux) or CPU / Disk IO (windows)

• Memory

• Disk Space

Monitoring and Alerting

Max cluster load

Recovery time

THANK YOU