“one man” development process model

82
“One Man” Development Process Model Đinh Quang Trung Barcamp Saigon 2015

Upload: silicon-straits

Post on 15-Feb-2017

234 views

Category:

Environment


5 download

TRANSCRIPT

Page 1: “One man” development process model

“One Man” Development Process ModelĐinh Quang TrungBarcamp Saigon 2015

Page 2: “One man” development process model

“One Man” Development Process ModelĐinh Quang TrungBarcamp Saigon 2015

...or “Best way to work on a project by your own”

Page 3: “One man” development process model

About me

Đinh Quang Trung

Code Writerfb.com/trungdq88

@trungdq88

github.com/trungdq88

- Writing code since 2009- Graduated FPT University 3 months ago- Web Developer at Silicon Straits Saigon

Page 4: “One man” development process model

Overview

1. How did I manage my projects when I was “young”

2. Problems with my process3. I learned I know how to manage my projects

correctly4. Tools and techniques I used for the process5. Tips

Page 5: “One man” development process model

When I check an old code of mine

Page 6: “One man” development process model

This presentation targets

People who- Want to be a developer- Want to be a better developer- Want to understand developers

Page 7: “One man” development process model

Software Development Process Models

Page 8: “One man” development process model

But…what if you only have

one?

Page 9: “One man” development process model

Project types

Page 10: “One man” development process model

Project types

- You do a project for a customer

As a freelancer

Page 11: “One man” development process model

Project types

- You do a project for a customer

As a freelancer

lasts 1 - 2 weeks

- You do a small project for your own

Page 12: “One man” development process model

Project types

- You do a project for a customer

As a freelancer

lasts 1 - 2 weeks

lasts longer than 1 month and could potentially become your startup!

- You do a small project for your own

- You do a BIG project for your own

Page 13: “One man” development process model

Common approaches

Requirement

1

Page 14: “One man” development process model

Common approaches

Requirement Code feature 1

1

Page 15: “One man” development process model

Common approaches

Requirement Code feature 1

Feature 2

Feature 3

Feature 4

1

Page 16: “One man” development process model

Common approaches

Requirement Code feature 1

Feature 2

Feature 3

Feature 4

1

Check if it works

Page 17: “One man” development process model

Common approaches

Requirement Code feature 1

Feature 2

Feature 3

Feature 4

Check if it works

Fix if it doesn’t

work

1

Page 18: “One man” development process model

Common approaches

Requirement Code feature 1

Feature 2

Feature 3

Feature 4

Check if it works

Fix if it doesn’t

work

Release, so everyone can

see it!

1

Page 19: “One man” development process model

Common approaches 1

Problems?

Page 20: “One man” development process model

Common approaches 1- Codebase is crap

Page 21: “One man” development process model

Common approaches 1- Codebase is crap- Fear of change

Page 22: “One man” development process model

Common approaches 1- Codebase is crap

- It becomes worse when project have more features

- Fear of change

Page 23: “One man” development process model

Common approaches 1- Codebase is crap

- It becomes worse when project have more features

- Fear of change

- No one else can understand my code

Page 24: “One man” development process model

Common approaches 1- Codebase is crap

- It becomes worse when project have more features

- Fear of change

- No one else can understand my code- I don’t understand my code

Page 25: “One man” development process model

So. I learned

Page 26: “One man” development process model
Page 27: “One man” development process model

Common approaches 2Requirement

Page 28: “One man” development process model

Common approaches 2Requirement

Design the

software

Page 29: “One man” development process model

Common approaches 2Requirement

Design the

software

Prepare the codebase structure

Page 30: “One man” development process model

Common approaches 2Requirement

Design the

software

Prepare the codebase structure

Setup environment, build tools, deploy

process...

Page 31: “One man” development process model

Common approaches 2Requirement

Design the

software

Prepare the codebase structure

Setup environment, build tools, deploy

process...

Code feature 1

Page 32: “One man” development process model

Common approaches 2Requirement

Design the

software

Prepare the codebase structure

Setup environment, build tools, deploy

process...

Feature 3

Feature 4

Release, so everyone can

see it!

Code feature 1

Feature 2

Check if it works

Fix if it doesn’t

work

Page 33: “One man” development process model

Common approaches 2

Still has problems

Page 34: “One man” development process model

Common approaches 2- Codebase is better

Page 35: “One man” development process model

Common approaches 2- Codebase is better- Less fear of change

Page 36: “One man” development process model

Common approaches 2- Codebase is better

- Slow release- Less fear of change

Page 37: “One man” development process model

Common approaches 2- Codebase is better

- Slow release- Less fear of change

- Sometimes I prepare things that I never use

Page 38: “One man” development process model

Common approaches 2- Codebase is better

- Slow release- Less fear of change

- Sometimes I prepare things that I never use- Take too much time to test features

Page 39: “One man” development process model

Common approaches 2- Codebase is better

- Slow release- Less fear of change

- Sometimes I prepare things that I never use- Take too much time to test features- Still no one understand my code

Page 40: “One man” development process model

:-(

Page 41: “One man” development process model

What we want?

- A beautiful codebase that you proud of and want to work on it in the future.

- Well documented for anyone who want to join the project

- Quality control for your project so that you can continue to develop without the fear of breaking something accidently

- Stable release schedule, well defined features and versions

Page 42: “One man” development process model

Code quality Fast release

Page 43: “One man” development process model

Project grows

Page 44: “One man” development process model

Feature

Page 45: “One man” development process model
Page 46: “One man” development process model

What we want

Page 47: “One man” development process model
Page 48: “One man” development process model
Page 49: “One man” development process model
Page 50: “One man” development process model
Page 51: “One man” development process model
Page 52: “One man” development process model
Page 53: “One man” development process model

Code

Refactor

Page 54: “One man” development process model

Slow release?

Break your project into versions

1.0.0Feature 1Feature 2Feature 31.1.0Feature 4Feature 5Feature 6

1.2.0● Feature 7:

○ Smaller feature 1○ Smaller feature 2○ Smaller feature 3○ Smaller feature 4○ Smaller feature 5

● Feature 8● Feature 9

Page 55: “One man” development process model

No one understand my code?

Write documents

- Comment in your code

- Explain your code structure, architecture…

- Draw diagrams

- Write instruction for setup steps, deployment process, tools used…

Page 56: “One man” development process model

Write a lot of tests

- Tests is the only thing can make sure that you don’t accidently break something when changing/refactoring your source code

- Test techniques:- Unit tests- Automation tests

Page 57: “One man” development process model

Project Quality

Code

TestDocsStructure

Versions

Works

Effort

Page 58: “One man” development process model

Project QualityCode

TestDocsStructure

Versions

Works

Effort

CodeTest

Docs

Structure

Versions

Works

Effort

Page 59: “One man” development process model

Project Quality

Code TestDocs

Structure Versions

Works

Effort

Code

TestDocsStructure

Versions

Works

Effort

CodeTest

Docs

Structure

Versions

Works

Effort

Page 60: “One man” development process model

Project Quality

Code TestDocs

Structure Versions

Works

Effort

Code

TestDocsStructure

Versions

Works

Effort

CodeTest

DocsStructure Versions

Works

Effort

CodeTest

Docs

Structure

Versions

Works

Effort

Page 61: “One man” development process model

Use tools to help you

Page 62: “One man” development process model

Use tools to help you

- Source controls: Git, SVN- Issue tracking: Github, Bitbucket or even a todo list.- Documentation: Google Docs, Github and Bitbucket also

supports wiki for documents- Version management: Milestone (in Github), Versions

(Bitbucket)- Diagrams: LucidChart- Test runner (or CI): Travis CI, Jenkins

Page 63: “One man” development process model

The Pomodoro technique

http://pomodorotechnique.com/

Page 64: “One man” development process model

The Pomodoro technique

Page 65: “One man” development process model

My workflow 2

Having an idea

Page 66: “One man” development process model

My workflow 2

Having an idea

Define all features

Page 67: “One man” development process model

My workflow 2

Having an idea

Define all features

Break features into

versions

Page 68: “One man” development process model

My workflow 2

Having an idea

Define all features

Break features into

versions

Pick a feature to work on it

Page 69: “One man” development process model

My workflow 2

Make it work

in code

Having an idea

Define all features

Break features into

versions

Pick a feature to work on it

Page 70: “One man” development process model

My workflow 2

Make it work

in code

Test it(and write test

cases)

Having an idea

Define all features

Break features into

versions

Pick a feature to work on it

Page 71: “One man” development process model

My workflow 2

Make it work

in code

Test it(and write test

cases)

Having an idea

Define all features

Break features into

versions

Pick a feature to work on it

Refactor code

(if needed)

Page 72: “One man” development process model

My workflow 2

Make it work

in code

Test it(and write test

cases)

Having an idea

Define all features

Break features into

versions

Pick a feature to work on it

Refactor code

(if needed)

Write document(diagrams,

setup guide, READMEs…)

Page 73: “One man” development process model

My workflow 2

Make it work

in code

Test it(and write test

cases)

Having an idea

Define all features

Break features into

versions

Pick a feature to work on it

Refactor code

(if needed)

Write document(diagrams,

setup guide, READMEs…)

Page 74: “One man” development process model

My workflow 2

Make it work

in code

Test it(and write test

cases)

Having an idea

Define all features

Break features into

versions

Pick a feature to work on it

Refactor code

(if needed)

Write document(diagrams,

setup guide, READMEs…)

Release version

Page 75: “One man” development process model

My workflow 2

Make it work

in code

Test it(and write test

cases)

Having an idea

Define all features

Break features into

versions

Pick a feature to work on it

Refactor code

(if needed)

Write document(diagrams,

setup guide, READMEs…)

Release version

Page 76: “One man” development process model

Tips to prepare your mind

Page 77: “One man” development process model

Know your targets

Why are you doing this project?

Page 78: “One man” development process model

YOU are the only onewho knows what’s going on in the code

Don’t let this happen

Page 79: “One man” development process model

Make a project something that you proud of

Page 80: “One man” development process model

Deliver whole project, not only the executables or the code

- Executables (.apk, .war, .exe…)- Source code- Documents- Diagrams- Test cases- ...

Page 81: “One man” development process model

Be ready to welcome contributors!

Page 82: “One man” development process model

Thank youfb.com/trungdq88

@trungdq88

github.com/trungdq88