software engineering 101 - the basics you should hear about at least once

96
Software Engineering 101 The basics you should hear about at least once

Upload: alexey-migutsky

Post on 01-Dec-2014

2.372 views

Category:

Technology


0 download

DESCRIPTION

The facts about Engineering Culture. These are the things I wish I were told about at the beginning of my career.

TRANSCRIPT

Page 1: Software engineering 101 - The basics you should hear about at least once

Software Engineering 101

The basics you should hear about at least once

Page 2: Software engineering 101 - The basics you should hear about at least once

Engineering is all about

constraints

Page 3: Software engineering 101 - The basics you should hear about at least once

Know your context

Page 4: Software engineering 101 - The basics you should hear about at least once

Know your resources

How can you do this?

Page 5: Software engineering 101 - The basics you should hear about at least once

Know your goals

What are you doing?

Page 6: Software engineering 101 - The basics you should hear about at least once

Why are you doing this?

Know your reason

Page 7: Software engineering 101 - The basics you should hear about at least once

There is always “it depends”

argument

Page 8: Software engineering 101 - The basics you should hear about at least once

Be proactive to find those limitations

Listen and ask to get the whole context

Page 9: Software engineering 101 - The basics you should hear about at least once

Be passionate

Page 10: Software engineering 101 - The basics you should hear about at least once

Technologies do

NOT matter

Page 11: Software engineering 101 - The basics you should hear about at least once

No, it does not really matter

“ Is Ruby better than Python? ”

Page 12: Software engineering 101 - The basics you should hear about at least once

Yeah, that’s a good argument

“But I like Python more!”

Page 13: Software engineering 101 - The basics you should hear about at least once

Good software is done by good software engineers

Page 14: Software engineering 101 - The basics you should hear about at least once

Project success has NO correlation

with technologies used

Page 15: Software engineering 101 - The basics you should hear about at least once

Pick any technology pragmatically

Page 16: Software engineering 101 - The basics you should hear about at least once

Pragmatic arguments logically fit

your context

Page 17: Software engineering 101 - The basics you should hear about at least once

Pragmatic: “Team is proficient with it“

Page 18: Software engineering 101 - The basics you should hear about at least once

Pragmatic: “People are excited by the technology”

Page 19: Software engineering 101 - The basics you should hear about at least once

Pragmatic: “Easy to find new people”

Page 20: Software engineering 101 - The basics you should hear about at least once

Pragmatic: “Helps do things right”

Page 21: Software engineering 101 - The basics you should hear about at least once

Hardest challenges

Page 22: Software engineering 101 - The basics you should hear about at least once

Problems Context Focus

1. How do you communicate?

Page 23: Software engineering 101 - The basics you should hear about at least once

Divide and Conquer Structure

Conventions

2. How do we manage complexity?

Page 24: Software engineering 101 - The basics you should hear about at least once

3. How do I name this thing?

Never trust names by default Look in the source code

Read more

Page 25: Software engineering 101 - The basics you should hear about at least once

Manage complexity Communicate

Measure React

4. How to evolve this system?

Page 26: Software engineering 101 - The basics you should hear about at least once

There are no silver bullets

Be pragmatic not religious

about how you solve problems

Page 27: Software engineering 101 - The basics you should hear about at least once

Code is for humans!

Page 28: Software engineering 101 - The basics you should hear about at least once

It’s all about people

Page 29: Software engineering 101 - The basics you should hear about at least once

Not easy !

See this: http://www.infoq.com/presentations/Simple-Made-Easy

Use simple

technologies

Page 30: Software engineering 101 - The basics you should hear about at least once

More time spent reading and debugging then actual writing code

Always think about maintenance

Page 31: Software engineering 101 - The basics you should hear about at least once

Readability and simplicity is always better

than no duplications and following best practices

Page 32: Software engineering 101 - The basics you should hear about at least once

–John Woods

Always code as if the guy who ends up maintaining your code will be

a violent psychopath who knows where you live.

!Code for readability.

Page 33: Software engineering 101 - The basics you should hear about at least once

Know what

you are doing

Page 34: Software engineering 101 - The basics you should hear about at least once

Never be lazy about knowing

what's going on under the hood

Page 35: Software engineering 101 - The basics you should hear about at least once

This is not really scary

Ask

Page 36: Software engineering 101 - The basics you should hear about at least once

Tell

Page 37: Software engineering 101 - The basics you should hear about at least once

Show

Page 38: Software engineering 101 - The basics you should hear about at least once

Keep on learning

Be a sponge for information

Page 39: Software engineering 101 - The basics you should hear about at least once

Experiments

Page 40: Software engineering 101 - The basics you should hear about at least once

Always write code

Do not only learn and analyse Get your hands dirty

Page 41: Software engineering 101 - The basics you should hear about at least once

Try new things

Page 42: Software engineering 101 - The basics you should hear about at least once

Success is a side-effect

Failure is the only

source of experience

Page 43: Software engineering 101 - The basics you should hear about at least once

Experience is the only

source of intuition

Page 44: Software engineering 101 - The basics you should hear about at least once

Recipe may vary !

See this: http://en.wikipedia.org/wiki/Cynefin

Think Act

Measure Decide

Page 45: Software engineering 101 - The basics you should hear about at least once

Be responsible

Page 46: Software engineering 101 - The basics you should hear about at least once

Good practices

Page 47: Software engineering 101 - The basics you should hear about at least once

Routine automation

Page 48: Software engineering 101 - The basics you should hear about at least once

Do not let bugs live

OSS Open new issues

Make contributions

Page 49: Software engineering 101 - The basics you should hear about at least once

Hotkeys Snippets

Live templates

Page 50: Software engineering 101 - The basics you should hear about at least once

Pet projects

Page 51: Software engineering 101 - The basics you should hear about at least once

https://signalvnoise.com/posts/3124-give-it-five-minutes

Give it 5 minutes

Page 52: Software engineering 101 - The basics you should hear about at least once

Know your tools

Page 53: Software engineering 101 - The basics you should hear about at least once

Git

rebase, add patch, bisect

Page 54: Software engineering 101 - The basics you should hear about at least once

Gitflow

Page 55: Software engineering 101 - The basics you should hear about at least once

Vim, Sublime, Nano

IDE + Text editor

Page 56: Software engineering 101 - The basics you should hear about at least once

CI / CD / QA / Operations

Know what others do and how you can help

Page 57: Software engineering 101 - The basics you should hear about at least once

Guerilla Refactoring

Page 58: Software engineering 101 - The basics you should hear about at least once

The only one working

refactoring method

Page 59: Software engineering 101 - The basics you should hear about at least once

Refactoring has no

direct business value

Page 60: Software engineering 101 - The basics you should hear about at least once

Refactoring should not

be a part of backlog

Page 61: Software engineering 101 - The basics you should hear about at least once

Add time for refactoring

in your estimates

Page 62: Software engineering 101 - The basics you should hear about at least once

Boy Scout rule: “Always leave the code behind

in a better state than you found it”

Uncle Bob

Page 63: Software engineering 101 - The basics you should hear about at least once

Task estimation

Page 64: Software engineering 101 - The basics you should hear about at least once

Include all phases in estimates

Page 65: Software engineering 101 - The basics you should hear about at least once

30% testing 30% implementation 10% logging and metrics 30% refactoring

Page 66: Software engineering 101 - The basics you should hear about at least once

30% testing 30% implementation 10% logging and metrics 30% refactoring

This is what you REALLY can estimate

Page 67: Software engineering 101 - The basics you should hear about at least once

Real estimate = 3 * implementation estimate

Multiplication Factor will vary based on experience

Page 68: Software engineering 101 - The basics you should hear about at least once

Project estimation

Page 69: Software engineering 101 - The basics you should hear about at least once

Create epics and stories

Page 70: Software engineering 101 - The basics you should hear about at least once

Divide stories in tasks

Page 71: Software engineering 101 - The basics you should hear about at least once

Make optimistic task estimation

Page 72: Software engineering 101 - The basics you should hear about at least once

Illness Fuck ups

Bus factors Holidays

Design mistakes

Include all risks

Page 73: Software engineering 101 - The basics you should hear about at least once

Optimistic path with estimated risks included

Page 74: Software engineering 101 - The basics you should hear about at least once

Realistic path

Page 75: Software engineering 101 - The basics you should hear about at least once

Realistic path =

3.14 * Optimistic path + 2 weeks

Page 76: Software engineering 101 - The basics you should hear about at least once

The time needed for senior engineer to make something working

if everything else failed

2 weeks is an emergency interval

Page 77: Software engineering 101 - The basics you should hear about at least once

Productivity

Page 78: Software engineering 101 - The basics you should hear about at least once

Pomodoro GTD

Productivity techniques

Page 79: Software engineering 101 - The basics you should hear about at least once

Scientifically proved http://focusatwill.com/

White noise

Page 80: Software engineering 101 - The basics you should hear about at least once

Always Be Coding https://medium.com/@davidbyttow/abc-always-be-coding-d5f8051afce2

ABC

Page 81: Software engineering 101 - The basics you should hear about at least once

Keep mind sharp

Page 82: Software engineering 101 - The basics you should hear about at least once

Eat well

Page 83: Software engineering 101 - The basics you should hear about at least once

Sleep well

Page 84: Software engineering 101 - The basics you should hear about at least once

Exercise well

Page 85: Software engineering 101 - The basics you should hear about at least once

Make breaks

Page 86: Software engineering 101 - The basics you should hear about at least once

Meditate

Page 87: Software engineering 101 - The basics you should hear about at least once

Intentionally left blank

Page 88: Software engineering 101 - The basics you should hear about at least once

The Ultimate Goal

Page 89: Software engineering 101 - The basics you should hear about at least once

It’s not about coding

Page 90: Software engineering 101 - The basics you should hear about at least once

It’s not about design

Page 91: Software engineering 101 - The basics you should hear about at least once

It’s not about joy

Page 92: Software engineering 101 - The basics you should hear about at least once

It’s not about making money

Page 93: Software engineering 101 - The basics you should hear about at least once

It’s all about value

All other things included!

Page 94: Software engineering 101 - The basics you should hear about at least once

When your coding skills will be smooth, you will start thinking about the value

automatically

Page 95: Software engineering 101 - The basics you should hear about at least once

Takeawayshttp://martinfowler.com/bliki/OpportunisticRefactoring.html

http://www.quora.com/Computer-Programming/What-insights-do-expert-hackers-have-for-novice-programmers

http://www.quora.com/Computer-Programming/What-are-some-essays-all-programmers-should-read

http://michaelochurch.wordpress.com/2012/01/26/the-trajectory-of-a-software-engineer-and-where-it-all-goes-wrong/http://pomodorotechnique.com/http://www.infoq.com/presentations/Simple-Made-Easy

http://vlsicad.ucsd.edu/Research/Advice/star_engineer.pdfhttp://www.targetprocess.com/articles/speed-in-software-development.htmlhttp://simpleprogrammer.com/2014/02/17/secret-ridiculous-productivity-im-using-now/

https://signalvnoise.com/posts/3124-give-it-five-minuteshttps://medium.com/@davidbyttow/abc-always-be-coding-d5f8051afce2

Page 96: Software engineering 101 - The basics you should hear about at least once

mr_mig_by

Brought to you by Alex