$30 off During Our Annual Pro Sale. View Details »

Full Skill Developer - Was ein Entwickler außer Coden noch können sollte

Full Skill Developer - Was ein Entwickler außer Coden noch können sollte

Fast alle von uns haben im Studium oder in der Ausbildung mal Programmieren und die Grundlagen der Informatik gelernt. Damit hat die Reise begonnen. Es gibt ständig neue Programmiersprachen, Paradigmen, Frameworks usw. Aber das ist bei weitem nicht alles. Was brauche ich als Entwickler in einem agilen Team oder einem DevOps-Team? Welche Methodiken muss ich drauf haben? Was bedeutet es, ingenieurmäßig Software zu bauen? Wie baut man ein Produkt?

Konstantin versorgt seine Kollegen seit Jahren mit Antworten auf diese Fragen und wird sie auch vor euch ausbreiten.

Konstantin Diener

October 26, 2017
Tweet

More Decks by Konstantin Diener

Other Decks in Programming

Transcript

  1. Full Skill Developer
    Was ein Entwickler außer Coden noch können sollte
    Konstantin Diener
    [email protected] | @onkelkodi

    View Slide

  2. @MSFTImagine
    „Being a good programmer is 3% talent 97% not being
    distracted by the internet“

    View Slide

  3. #coding
    „Truth can only be found in one place: the code.“
    Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship

    View Slide

  4. Abelson and Sussman
    „Programs must be written for people to read, and
    only incidentally for machines to execute.“

    View Slide

  5. // Collects all nodes and extrapolates
    // the tipping point
    calc();

    View Slide

  6. Martin Fowler
    „When you feel the need to write a comment, first try
    to refactor the code so that any comment becomes
    superfluous.“

    View Slide

  7. Steve McConnell
    „Good code is its own best documentation.“

    View Slide

  8. Schreibt Code, der keine
    Dokumentation braucht!

    View Slide

  9. Eagleson's Law
    „Any code of your own that you haven't looked at for
    six or more months might as well have been written by
    someone else.“

    View Slide

  10. Clean Code
    „No matter how slow you are writing
    clean code, you will always be slower if
    you make a mess.“
    Uncle Bob Martin
    http://www.informit.com/ShowCover.aspx?isbn=0132350882

    View Slide

  11. @DocOnDev
    „Boyscout rule for coders - leave the code in the better
    state than you found it.“

    View Slide

  12. @sarahmei
    „Asking permission to refactor is like asking your
    homeowner’s association if you can vacuum your
    living room.“

    View Slide

  13. Refactorings

    View Slide

  14. // model.addAttribute(„originalFilename“,
    m.getFn());
    // model.addAttribute(„createdAt“, m.getCa());
    model.addAttribute("endDate", m.getSearchJobs()));
    // model.addAttribute(„foundImages“, fn());
    model.addAttribute(„markedImageDownloadUrl",
    getUrl());

    View Slide

  15. Bram Cohen
    „The mark of a mature programmer is willingness to
    throw out code you spent time on when you realize it's
    pointless."

    View Slide

  16. @BenNadel
    “Write code that’s easy to delete, not easy to extend.”
    … is one of the best pieces of programming advice
    I’ve ever read.

    View Slide

  17. Ken Thompson
    „One of my most productive days was throwing away
    1000 lines of code.“

    View Slide

  18. Wegwerfen lernen

    View Slide

  19. Dan Luu
    „For reliable systems, error handling is more work than
    the happy path.“

    View Slide

  20. Doug Linder
    „A good programmer is someone who looks both ways
    before crossing a one-way street.“

    View Slide

  21. Fehlerszenerien bedenken

    View Slide

  22. #technology
    „...because Google/Spotify/Netflix does it" is not a valid reason for
    new tech strategy. Understand situation and context.“
    @matthewpskelton

    View Slide

  23. @sheysewani
    "update " is not a reasonable commit
    message. It's 2017 folks.“

    View Slide

  24. Umgang mit git & Co

    View Slide

  25. Ron Jeffries
    „When we use a language, we should commit
    ourselves to knowing it, being able to read it, and
    writing it idiomatically.“

    View Slide

  26. Jedes neue Framework bringt nicht weniger
    Probleme, sondern neue. Für die alten Probleme
    kenne ich allerdings schon eine Lösung.

    View Slide

  27. „Kosten“ von Technologie

    View Slide

  28. gemeinsame
    Technologieentscheidungen

    View Slide

  29. Open-Source-Lizenzen kennen

    View Slide

  30. #testing
    „Testing leads to failure, and failure leads to understanding.“
    Burt Rutan

    View Slide

  31. View Slide

  32. Martin Fowler
    „Whenever you are tempted to type something into a
    print statement or a debugger expression, write it as a
    test instead.“

    View Slide

  33. @maaretp
    „As a tester I don't break your code, I break your
    illusions about your code"

    View Slide

  34. @DocOnDev
    „If you've skipped unit tests because you plan to
    refactor the code soon, you might not understand
    refactoring (or unit tests).“

    View Slide

  35. Test Driven Development
    TDD: All code is guilty until proven
    innocent
    @weiss2go

    View Slide

  36. #craftsmanship
    „Programming is not a science. Programming is a craft.“
    Richard Stallman

    View Slide

  37. T-shaped
    T

    View Slide

  38. View
    Business Logic
    Persistence (ORM)
    Database

    View Slide

  39. nach meinem Studium
    • Java 1.2
    • Struts 1
    • EJB 2.1
    • XDoclet
    • Spring 1!
    • Applets
    • Blackberry API
    • JBoss 3
    • JAXB
    • RMI
    • Borland JBuilder
    • Borland Delphi
    • Lotus Script
    • aspektorientierte Programmierung

    View Slide

  40. Katherine Johnson
    „Know how to learn. Then, want to learn.”

    View Slide

  41. hinkley on Hacker News
    „I tell all the junior Devs: if you aren't horrified by
    something you wrote a year ago, you aren't learning
    fast enough. 20 years in and I still find things I wrote 8
    months ago that I would not do again.“

    View Slide

  42. lebenslanges Lernen

    View Slide

  43. @ceejbot
    „A very tiny percentage of our industry works on
    genuinely hard algorithmic problems & on research.
    Most of us concatenate strings all day.“

    View Slide

  44. Jacques Tati
    „Wer sich zu groß fühlt, um kleine Aufgaben zu
    erfüllen, ist zu klein, um mit großen Aufgaben betraut
    zu werden."

    View Slide

  45. Es gibt nicht nur Rocket
    Science!

    View Slide

  46. „If it hurts, do it more often"

    View Slide

  47. Continuous Integration

    View Slide

  48. Kent Beck
    "Do it right and you won't have to do it over". Yeah,
    until "right" changes. And it always changes.

    View Slide

  49. Embrace change!

    View Slide

  50. Getting Real
    „It’a problem when it’s a problem“

    View Slide

  51. Antoine de Saint-Exupéry
    „Perfektion ist nicht dann erreicht, wenn es nichts
    mehr hinzuzufügen gibt, sondern wenn man nichts
    mehr weglassen kann.“

    View Slide

  52. kleine Lösungen bauen

    View Slide

  53. Andy Hunt
    „No one in the brief history of computing has ever
    written a piece of perfect software. It's unlikely that
    you'll be the first.“

    View Slide

  54. Andrew Hunt & David Thomas, The Pragmatic Programmer
    „All software becomes legacy as soon as it's written.“

    View Slide

  55. Andrew Hunt & David Thomas, The Pragmatic Programmer
    „Great software today is often preferable to perfect
    software tomorrow.“

    View Slide

  56. keine Software für die Ewigkeit

    View Slide

  57. Paul Graham
    „In programming the hard part isn’t solving problems,
    but deciding what problems to solve.“

    View Slide

  58. Fokus! Fokus! Fokus!

    View Slide

  59. Albert Einstein
    „Planung ersetzt Zufall durch Irrtum.“

    View Slide

  60. Planen und Schätzen

    View Slide

  61. Kent Beck
    „Autonomy without accountability is just vacation"

    View Slide

  62. Alan Perlis
    „Don't have good ideas if you aren't willing to be
    responsible for them.“

    View Slide

  63. Uncle Bob Martin
    „We don’t ship shit!“

    View Slide

  64. Verantwortung übernehmen

    View Slide

  65. Patrick McKenzie
    „Every great developer you know got there by solving
    problems they were unqualified to solve until they
    actually did it.“

    View Slide

  66. Mut!

    View Slide

  67. View Slide

  68. Steve Yegge
    „Programmers have no idea how good (or bad) they
    are at programming. In fact, we all think we're pretty
    darn good at it.“

    View Slide

  69. The Ten Commandments of Egoless Programming
    1. Understand and accept that you will make mistakes.
    2. You are not your code.
    3. No matter how much “karate” you know, someone else will always know
    more.
    4. Don’t rewrite code without consultation.
    5. Treat people who know less than you with respect, deference, and patience.

    View Slide

  70. The Ten Commandments of Egoless Programming
    6. The only constant in the world is change.
    7. The only true authority stems from knowledge, not from position.
    8. Fight for what you believe, but gracefully accept defeat.
    9. Don’t be “the coder in the corner.”
    10. Critique code instead of people – be kind to the coder, not to the code.

    View Slide

  71. #devops
    „DevOps ist eine Haltung. Keine Berufsbezeichnung.“
    via @AndreasGnyp

    View Slide

  72. @techDonaldTrump
    „I will build a great, great wall between dev and ops. I
    will make ops pay for that wall!“

    View Slide

  73. Werner Vogels
    „You build it, you run it!“

    View Slide

  74. @mipsytipsy
    "If you have commit rights, you should know how to
    deploy to production."

    View Slide

  75. @noidi
    „Having a dedicated DevOps person who does all the
    DevOpsing is like having a dedicated collaboration
    person who does all the collaborating.“

    View Slide

  76. Ops Tools
    • Shell
    • Linux/Unix Operating Systems
    • Database
    • Network
    • Cloud Platforms
    • Container Technologies (Docker etc.)
    • Cluster (Kubernetes etc.)

    View Slide

  77. #teamwork
    „To be a computer programmer does not mean to
    live in isolation and solitude, but rather the exact
    opposite.“
    Kathryn Barrett

    View Slide

  78. @caradoxical
    „It's like the old Indian saying: If you want to go fast, go
    alone. If you want to go far, go together.“

    View Slide

  79. @math_rachel
    „15 min rule: when stuck, you HAVE to try on your own
    for 15 min; after 15 min, you HAVE to ask for help.-
    Brain AMA“

    View Slide

  80. Lasst euch helfen!

    View Slide

  81. @jasongorman
    „Don't think of pair programming as 2 people doing
    the work of one. Think of it as 2 people avoiding the
    rework of 7.“

    View Slide

  82. @johanneslink
    Traditional Pairing: „I have an idea. Give me the
    keyboard“.
    Strong Pairing: „I have an idea. Here, take the
    keyboard“
    Will try next time.“

    View Slide

  83. Pair Programming

    View Slide

  84. Wissen verteilen

    View Slide

  85. Seymour Cray
    „The trouble with programmers is that you can never
    tell what a programmer is doing until it’s too late.“

    View Slide

  86. @mark_barbs
    „Individuals and interactions over assigning someone
    a jira ticket without speaking to them“

    View Slide

  87. Marissa Mayer
    „Beyond basic mathematical aptitude, the difference
    between good programmers and great programmers
    is verbal ability.“

    View Slide

  88. Kommunikation &
    Transparenz

    View Slide

  89. @listrophy
    „The two hardest things in Computer Science are:
    People, and convincing others that "People" is the
    hardest thing in Computer Science.“

    View Slide

  90. Feeback geben und
    annehmen

    View Slide

  91. Kent Beck
    „The craft of programming begins with empathy, not
    formatting or languages or tools or algorithms or data
    structures.“

    View Slide

  92. Empathie

    View Slide

  93. @jasongorman
    „The most important language a software developer
    can learn is the one the customer speaks"

    View Slide

  94. @flowchainsensei
    „Almost nothing in software development is as useful
    as developers that empathise with the users’ pains
    and jobs to be done.“

    View Slide

  95. Sprich die Sprache des
    Kunden!

    View Slide

  96. #agile

    View Slide

  97. http://www.globalnerdy.com/2007/11/28/dilbert-on-extreme-and-agile-programming/

    View Slide

  98. Individuals and interactions over processes and tools
    Working software over comprehensive documentation
    Customer collaboration over contract negotiation
    Responding to change over following a plan

    View Slide

  99. agiles Mindset

    View Slide

  100. @tottinge
    „If your "agile team" has individual work assignments,
    I suspect it is neither "agile" nor „team“."

    View Slide

  101. Output vs. Outcome

    View Slide

  102. Steve Smith
    „Software developers fail in two ways: either we build
    the thing wrong or we build the wrong thing.“

    View Slide

  103. Denken in Experimenten

    View Slide

  104. John Cutler
    „Here’s some advice to developers. Take continuous
    improvement into your own hands. Don’t rely on a
    manager or a Scrum Master. Take pride in doing it
    right.“

    View Slide

  105. Take it, change it or leave it!

    View Slide

  106. @neil_killick
    „The best way to have potentially shippable, working
    software at Sprint end is to *continuously* have
    potentially shippable, working software“

    View Slide

  107. Continuous Delivery

    View Slide

  108. Müssen wir das alles direkt
    drauf haben?

    View Slide

  109. Du bist Student und hast Lust,
    mal bei uns reinzuschauen?
    #AgileStudentsDay
    Dann komm vorbei zum
    #AgileStudentsDay
    und lerne uns und unsere
    Arbeit kennen!
    9. November
    ab 14 Uhr bei cosee

    View Slide

  110. View Slide

  111. Nächster Talk …
    Lightning Talks
    30. November 2017
    > blog.cosee.biz
    > talks.cosee.biz
    > @coseeaner
    > #coseetechtalks

    View Slide

  112. Richard E. Pattis
    „Programming languages, like pizzas, come in only too
    sizes; too big and too small.“

    View Slide