okdg - development process

35
{ We’re All Screw- Ups Let’s be honest with each other.

Upload: adrian-schneider

Post on 09-Jun-2015

229 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: OKDG - Development Process

{

We’re All Screw-Ups

Let’s be honest with each other.

Page 2: OKDG - Development Process

Partner / CTO at Syndicate Theory 8 Years developing as freelancer, and as several team

leads

adrianschneider.ca@AdrianSchneider

Adrian Schneider

Page 3: OKDG - Development Process

Most small shops or freelancers don’t think about process.

Most people (in Kelowna) don’t have experience in formal environments.

Back-end developers or server guys are the natural explorers of this topic. (“DevOps”)

Let’s talk about it.

Overview / Audience

Page 4: OKDG - Development Process

He is a decent developer.

Bob never admits his screw ups.

Bob likely costs the company a lot of money.

Bob doesn’t like being confronted.

Does Bob work at your company?

Meet Bob

Page 5: OKDG - Development Process

Joe is clever, and keeps an open mind.

Joe understands the benefit of automating his work.

Bob and Joe rarely see eye to eye.

and Joe

Page 6: OKDG - Development Process

Some developers can pull several times their weight.

Others do more harm than good.

It can be very difficult for management to figure out who is who.

(There are no metrics we can use…)

Developer Skill Varies

Page 7: OKDG - Development Process

Writing software is easy & maintaining software is hard.

Writing great software is hard, but maintaining it is much easier.

Software costs several times more to maintain than it does to write. This cost is often proportional to the quality of documentation left behind.

Doing it right the first time pays off.

Maintenance is Expensive

Page 8: OKDG - Development Process

1. Find / Get Task

2. Do it …Test it?

3. Upload Changes Directly

“Oh shit”

4. Upload more Changes -> (repeat?)

Done

What Bad Process Looks Like

Page 9: OKDG - Development Process

Bob tends to screw up at every step.

More steps lead to more errors.

We want to minimize the number of steps.

We want to remove extraneous decisions from his workflow.

Robots are faster and more reliable than Bob.

Bob is Error Prone

Page 10: OKDG - Development Process

Bob Needs This:

Page 11: OKDG - Development Process

Joe Likes This:

Page 12: OKDG - Development Process

Systems which track and document changes to our files.

We can document groups or sets of changes together.

We can combine it with other tools to enhance our process.

Examples: SVN, Git

Source Control

Page 13: OKDG - Development Process

All developers should use it.

Dear Technical Management,If your developers are not using source control, you are not doing your job.

Dear Technical Employees,If you are not using source control, you are not doing your job.

Who should use it?

Page 14: OKDG - Development Process

We make mistakes. We change our minds. We don’t trust Bob.

Source control allows us to view changes, go back in time, or merge multiple copies together.

It’s a massive safety net. You may not need it, but when you do, you’ll be glad it is there.

It also allows us to hold each other accountable.

How can it help?

Page 15: OKDG - Development Process

A ComparisonWith Source Control

Without Source Control

Versioning Files are automatically versioned

Rollback, Compare, etc.

• index.php• index.php.old• index.php.old2• index.php.archived• index.php.backup• index.php.broken

Accountability Bob broke it at 4:55pm on Friday.

Something broke recently…?!

Deployment Scriptable Manual

Page 16: OKDG - Development Process

{Enter Process

Bob is a nice guy, but…Let’s not make him think too much.

Page 17: OKDG - Development Process

Let’s introduce Ernie, the project manager, or boss man.

Are Joe & Bob actually working? Is his team on track?

“What’s the status of that bug that crippled us last week?”“Which one?”

(sigh)

Ernie, The Man

Page 18: OKDG - Development Process

Joe & Bob hate being interrupted for updates, but Ernie needs them. Here are the two popular options:

Ask. Instant, but Interruptive. Email. Delayed, yet slightly interruptive.

Wouldn’t you rather Ernie check himself?

Joe & Bob Love Ernie

Page 19: OKDG - Development Process

Team work becomes natural once we can work as a unit. Our output must be standardized…

Coding Standards/Conventions Tools Used (Issues, Knowledge Base, etc.) Development Process Testing Process Deployment Process

Ultimately, our “workflow”.

Standardization

Page 20: OKDG - Development Process

The issue tracker is at the heart of a developer’s workflow. Similar to source control, all developers should use one.

Find one that integrates with your source control system. And your IDE… if you’re into that.

Bug/Issue Tracker

Page 21: OKDG - Development Process

Issues can be tasks, new features, bugs, etc.“STUFF TO DO”

Centralized issue list keeps everyone on the same page.

Associate code (or changes) to specific tickets.

A starting point for a developer to begin work.

Database: easy to sort, filter, and create reports.

Issue Tracking

Page 22: OKDG - Development Process

ComparisonWith Without

Communication

“#141”

Centralized. “In the cloud”, even.

Ernie interrupts for updates.

Bob asks, “which bug?”

Accountability Joe and Ernie:“Wow Bob is useless”

Bob: “Wait, there’s a bug?”

Professionalism

Database for past, present & future tasks.Self Documenting.

Bob:“I don’t create bugs.”

Integration With source control, IDE, deployment

Page 23: OKDG - Development Process

All tasks are in the tracker. If they’re not, they don’t exist.

This reduces extraneous communication This gives developers & management a single place to look.

All code is in the repository. If it’s not there, it doesn't exist.

Other developers know where to find code. Until you commit it, it doesn’t exist as far as the project is

concerned.

Everything in Place

Page 24: OKDG - Development Process

{Workflow

How do you get from A to B?

Page 25: OKDG - Development Process

NEW - Ernie has a new task for Joe. He creates it in the bug tracker, and assigns it to Joe. Joe is automatically notified.

Basic Workflow (1 of 4)

Page 26: OKDG - Development Process

ACCEPTED – Upon checking his task list, he sees his new task. He reads it, understands it, and accepts if. If there are any problems, he can comment on it and bring it to Ernie’s attention.

Joe codes away locally.

Whenever he commits code, he references the ticket number, which attaches the commits to the ticket automatically.

“ref #155 changed password algo”

The rest of the team can view the commits (changes) when viewing the ticket.

Basic Workflow (2 of 4)

Page 27: OKDG - Development Process

RESOLVED – Once Joe is done working on the issue, and he has tested it locally, he can update the task as resolved.

Commit: “fixes #155 removed typo”(he could update the ticket manually, too)

The ticket is assigned to Ernie again, who can close it if he is satisfied.

Basic Workflow (3 of 4)

Page 28: OKDG - Development Process

CLOSED – Ernie can mark it as closed once he has verified the work is complete.

Or

It can be marked as closed once it’s put into production. Pushing code to production is also a change we want to track.

Basic Workflow (4 of 4)

Page 29: OKDG - Development Process

{Best Practices

Some random bits of advice.

Page 30: OKDG - Development Process

We should have everything required to completely build the project.

Source Files Default Data, Changes to DB Unit Tests Documentation

That means…

No build artifacts No developer-specific files (IDE crud) No environment-specific content/files (logs, cache, etc.)

What do we Version?

Page 31: OKDG - Development Process

You should commit in isolated units of work. More often is better than less often.

If a change requires editing three files, commit them together.

If you switch between multiple tickets, commit first.

Don’t want to commit broken code?

Make branches for new features or large changes Git has lots of other tools for this

Our commits are our documentation. Keep it clean.

When do we Commit?

Page 32: OKDG - Development Process

Work locally and then test locally.

Test on a staging server before putting it into production.

The average developer should not need to push to production.

Document which code goes live and when.

Operations needs to make testing and deployment simple and fast.

About Environments

Page 33: OKDG - Development Process

These tools are to hold each other accountable.

Do not use them to micro-manage people.

Do not force people to commit on fixed intervals.

Use them to make the process smoother. Less uncertainty.

Management…

Page 34: OKDG - Development Process

It’s not always your boss, or the developer you are watching that can break things. Consider…

Technology / Glitches Other Developers (subcontractors?) The Client

They may not even come right away. However, having proper documentation , you can easily defend yourself.

Threats…

Page 35: OKDG - Development Process

Well-defined process reduce uncertainty and redundancy from our tasks.

Source control gives us a massive safety net that we do need. It also gives us accountability.

Using tools effectively can make you significantly more productive.

Summary