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

description

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

Transcript of Software engineering 101 - The basics you should hear about at least once

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