Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Software 
Engineering 101 
The basics you should hear about at least once
Engineering is all 
about 
constraints
Know your context
Know your resources 
How can you do this?
Know your goals 
What are you doing?
Know your reason 
Why are you doing this?
There is always 
“it depends” 
argument
Listen and ask to get the whole context 
Be proactive to find those limitations
Be passionate
Technologies 
do 
NOT 
matter
“ Is Ruby better than Python? ” 
No, it does not really matter
“But I like Python more!” 
Yeah, that’s a good argument
Good software is done 
by good software engineers
Project success has 
NO correlation 
with technologies used
Pick any technology pragmatically
Pragmatic arguments 
logically fit 
your context
Pragmatic: “Team is proficient with it“
Pragmatic: “People are excited by the 
technology”
Pragmatic: “Easy to find new people”
Pragmatic: “Helps do things right”
Hardest challenges
1. How do you communicate? 
Problems 
Context 
Focus
2. How do we manage complexity? 
Divide and Conquer 
Structure 
Conventions
3. How do I name this thing? 
Never trust names by default 
Look in the source code 
Read more
4. How to evolve this system? 
Manage complexity 
Communicate 
Measure 
React
Be pragmatic 
not religious 
about how you solve problems 
There are no silver bullets
Code is for humans!
It’s all about people
Use 
simple 
technologies 
Not easy 
! 
See this: 
http://www.infoq.com/presentations/Simple-Made-Easy
Always think about maintenance 
More time spent reading and debugging 
then actual writing code
Readability and simplicity 
is always better 
than no duplications 
and following best practices
Always code as if the guy who ends up 
maintaining your code will be 
a violent psychopath 
who knows where you live. 
! 
...
Know 
what 
you are doing
Never be lazy about 
knowing 
what's going on under the hood
Ask 
This is not really scary
Tell
Show
Keep on learning 
Be a sponge for information
Experiments
Always write code 
Do not only learn and analyse 
Get your hands dirty
Try new things
Failure is 
the only 
source of experience 
Success is a side-effect
Experience is 
the only 
source of intuition
Think 
Act 
Measure 
Decide 
Recipe may vary 
! 
See this: 
http://en.wikipedia.org/wiki/Cynefin
Be responsible
Good practices
Routine automation
OSS 
Open new issues 
Make contributions 
Do not let bugs live
Hotkeys 
Snippets 
Live templates
Pet projects
Give it 
5 minutes 
https://signalvnoise.com/posts/3124-give-it-five-minutes
Know your tools
Git 
rebase, add patch, bisect
Gitflow
IDE + Text editor 
Vim, Sublime, Nano
CI / CD / QA / Operations 
Know what others do 
and how you can help
Guerilla 
Refactoring
The only one 
working 
refactoring method
Refactoring 
has no 
direct business value
Refactoring 
should not 
be a part of backlog
Add time 
for refactoring 
in your estimates
Boy Scout rule: 
“Always leave the code behind 
in a better state 
than you found it” 
Uncle Bob
Task estimation
Include all phases in estimates
30% testing 
30% implementation 
10% logging and metrics 
30% refactoring
30% testing 
30% implementation 
10% logging and metrics 
30% refactoring 
This is what you REALLY can estimate
Real estimate = 3 * implementation estimate 
Multiplication Factor will vary based on experience
Project estimation
Create epics and stories
Divide stories in tasks
Make optimistic task estimation
Include all risks 
Illness 
Fuck ups 
Bus factors 
Holidays 
Design mistakes
Optimistic path with 
estimated risks included
Realistic path
Realistic path 
= 
3.14 * Optimistic path + 2 weeks
2 weeks is an 
emergency interval 
The time needed for senior engineer 
to make something working 
if everything else fail...
Productivity
Productivity techniques 
Pomodoro 
GTD
White noise 
Scientifically proved 
http://focusatwill.com/
ABC 
Always Be Coding 
https://medium.com/@davidbyttow/abc-always-be-coding-d5f8051afce2
Keep mind sharp
Eat well
Sleep well
Exercise well
Make breaks
Meditate
Intentionally left blank
The Ultimate Goal
It’s not about coding
It’s not about design
It’s not about joy
It’s not about making money
It’s all about value 
All other things included!
When your coding skills will be smooth, 
you will start thinking about the value 
automatically
Takeaways 
http://martinfowler.com/bliki/OpportunisticRefactoring.html 
http://www.quora.com/Computer-Programming/What-ins...
Brought to you by Alex 
mr_mig_by
Nächste SlideShare
Wird geladen in …5
×

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

15.229 Aufrufe

Veröffentlicht am

The facts about Engineering Culture.

These are the things I wish I were told about at the beginning of my career.

  • www.HelpWriting.net is a really good site. thanks
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • ⇒ www.HelpWriting.net ⇐ This service will write as best as they can. So you do not need to waste the time on rewritings.
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • My personal experience with research paper writing services was highly positive. I sent a request to ⇒ www.WritePaper.info ⇐ and found a writer within a few minutes. Because I had to move house and I literally didn’t have any time to sit on a computer for many hours every evening. Thankfully, the writer I chose followed my instructions to the letter. I know we can all write essays ourselves. For those in the same situation I was in, I recommend ⇒ www.WritePaper.info ⇐.
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • ⇒ www.HelpWriting.net ⇐ This service will write as best as they can. So you do not need to waste the time on rewritings.
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Hi there! I just wanted to share a list of sites that helped me a lot during my studies: .................................................................................................................................... www.EssayWrite.best - Write an essay .................................................................................................................................... www.LitReview.xyz - Summary of books .................................................................................................................................... www.Coursework.best - Online coursework .................................................................................................................................... www.Dissertations.me - proquest dissertations .................................................................................................................................... www.ReMovie.club - Movies reviews .................................................................................................................................... www.WebSlides.vip - Best powerpoint presentations .................................................................................................................................... www.WritePaper.info - Write a research paper .................................................................................................................................... www.EddyHelp.com - Homework help online .................................................................................................................................... www.MyResumeHelp.net - Professional resume writing service .................................................................................................................................. www.HelpWriting.net - Help with writing any papers ......................................................................................................................................... Save so as not to lose
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

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

  1. 1. Software Engineering 101 The basics you should hear about at least once
  2. 2. Engineering is all about constraints
  3. 3. Know your context
  4. 4. Know your resources How can you do this?
  5. 5. Know your goals What are you doing?
  6. 6. Know your reason Why are you doing this?
  7. 7. There is always “it depends” argument
  8. 8. Listen and ask to get the whole context Be proactive to find those limitations
  9. 9. Be passionate
  10. 10. Technologies do NOT matter
  11. 11. “ Is Ruby better than Python? ” No, it does not really matter
  12. 12. “But I like Python more!” Yeah, that’s a good argument
  13. 13. Good software is done by good software engineers
  14. 14. Project success has NO correlation with technologies used
  15. 15. Pick any technology pragmatically
  16. 16. Pragmatic arguments logically fit your context
  17. 17. Pragmatic: “Team is proficient with it“
  18. 18. Pragmatic: “People are excited by the technology”
  19. 19. Pragmatic: “Easy to find new people”
  20. 20. Pragmatic: “Helps do things right”
  21. 21. Hardest challenges
  22. 22. 1. How do you communicate? Problems Context Focus
  23. 23. 2. How do we manage complexity? Divide and Conquer Structure Conventions
  24. 24. 3. How do I name this thing? Never trust names by default Look in the source code Read more
  25. 25. 4. How to evolve this system? Manage complexity Communicate Measure React
  26. 26. Be pragmatic not religious about how you solve problems There are no silver bullets
  27. 27. Code is for humans!
  28. 28. It’s all about people
  29. 29. Use simple technologies Not easy ! See this: http://www.infoq.com/presentations/Simple-Made-Easy
  30. 30. Always think about maintenance More time spent reading and debugging then actual writing code
  31. 31. Readability and simplicity is always better than no duplications and following best practices
  32. 32. 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. –John Woods
  33. 33. Know what you are doing
  34. 34. Never be lazy about knowing what's going on under the hood
  35. 35. Ask This is not really scary
  36. 36. Tell
  37. 37. Show
  38. 38. Keep on learning Be a sponge for information
  39. 39. Experiments
  40. 40. Always write code Do not only learn and analyse Get your hands dirty
  41. 41. Try new things
  42. 42. Failure is the only source of experience Success is a side-effect
  43. 43. Experience is the only source of intuition
  44. 44. Think Act Measure Decide Recipe may vary ! See this: http://en.wikipedia.org/wiki/Cynefin
  45. 45. Be responsible
  46. 46. Good practices
  47. 47. Routine automation
  48. 48. OSS Open new issues Make contributions Do not let bugs live
  49. 49. Hotkeys Snippets Live templates
  50. 50. Pet projects
  51. 51. Give it 5 minutes https://signalvnoise.com/posts/3124-give-it-five-minutes
  52. 52. Know your tools
  53. 53. Git rebase, add patch, bisect
  54. 54. Gitflow
  55. 55. IDE + Text editor Vim, Sublime, Nano
  56. 56. CI / CD / QA / Operations Know what others do and how you can help
  57. 57. Guerilla Refactoring
  58. 58. The only one working refactoring method
  59. 59. Refactoring has no direct business value
  60. 60. Refactoring should not be a part of backlog
  61. 61. Add time for refactoring in your estimates
  62. 62. Boy Scout rule: “Always leave the code behind in a better state than you found it” Uncle Bob
  63. 63. Task estimation
  64. 64. Include all phases in estimates
  65. 65. 30% testing 30% implementation 10% logging and metrics 30% refactoring
  66. 66. 30% testing 30% implementation 10% logging and metrics 30% refactoring This is what you REALLY can estimate
  67. 67. Real estimate = 3 * implementation estimate Multiplication Factor will vary based on experience
  68. 68. Project estimation
  69. 69. Create epics and stories
  70. 70. Divide stories in tasks
  71. 71. Make optimistic task estimation
  72. 72. Include all risks Illness Fuck ups Bus factors Holidays Design mistakes
  73. 73. Optimistic path with estimated risks included
  74. 74. Realistic path
  75. 75. Realistic path = 3.14 * Optimistic path + 2 weeks
  76. 76. 2 weeks is an emergency interval The time needed for senior engineer to make something working if everything else failed
  77. 77. Productivity
  78. 78. Productivity techniques Pomodoro GTD
  79. 79. White noise Scientifically proved http://focusatwill.com/
  80. 80. ABC Always Be Coding https://medium.com/@davidbyttow/abc-always-be-coding-d5f8051afce2
  81. 81. Keep mind sharp
  82. 82. Eat well
  83. 83. Sleep well
  84. 84. Exercise well
  85. 85. Make breaks
  86. 86. Meditate
  87. 87. Intentionally left blank
  88. 88. The Ultimate Goal
  89. 89. It’s not about coding
  90. 90. It’s not about design
  91. 91. It’s not about joy
  92. 92. It’s not about making money
  93. 93. It’s all about value All other things included!
  94. 94. When your coding skills will be smooth, you will start thinking about the value automatically
  95. 95. Takeaways http://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.pdf http://www.targetprocess.com/articles/speed-in-software-development.html http://simpleprogrammer.com/2014/02/17/secret-ridiculous-productivity-im-using-now/ https://signalvnoise.com/posts/3124-give-it-five-minutes https://medium.com/@davidbyttow/abc-always-be-coding-d5f8051afce2
  96. 96. Brought to you by Alex mr_mig_by

×