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

It is about PHILOSOPHY: culture of a GOOD programmer - Second Edition

It is about PHILOSOPHY: culture of a GOOD programmer - Second Edition

Philosophy is the study of general and fundamental problems, such as those connected with reality, existence, knowledge, values, reason, mind, and language.
Even though technical skills are a very positive thing, other qualifications are really more important: 'features' like respect, honesty or humility are required to become a better person and, thus, a better professional.
This is not an easy path to follow, and in order to accomplish it, let me share experiences on how to be a better programmer. Let's have a walk!

Fernando Cejas

July 15, 2016
Tweet

More Decks by Fernando Cejas

Other Decks in Programming

Transcript

  1. It is about
    philosophy…
    …culture of a good
    programmer…
    @fernando_cejas
    2nd edition
    { 0010 }

    View Slide

  2. Developer fact #1
    When I show the boss that I
    have finally fixed this bug

    View Slide

  3. Developer fact #2
    When I’m deploying code to
    production

    View Slide

  4. Developer fact #3
    When they me ask if I have
    tested it

    View Slide

  5. It is about
    philosophy…
    …culture of a good
    programmer…
    @fernando_cejas
    2nd edition
    { 0010 }

    View Slide

  6. Meet…
    @fernando_cejas
    Curious Learner
    Software Engineer
    Android Lover
    Geek

    View Slide

  7. @SoundCloud
    Android Core

    View Slide

  8. The word "philosophy" comes from the
    Ancient Greek φιλοσοφία
    (philosophia), which literally means
    "love of wisdom"
    wikipedia

    View Slide

  9. 2
    There are…
    types of developers…

    View Slide

  10. hacker
    1234233 lines in a class is not that bad

    View Slide

  11. philosopher
    I need more layers and abstractions!!!

    View Slide

  12. 2
    There are…
    types of developers…

    View Slide

  13. introverted
    Peter Parker

    View Slide

  14. extraverted
    Tony Stark

    View Slide

  15. 2
    There are…
    types of developers…

    View Slide

  16. ‘solo’
    Developer

    View Slide

  17. ‘team’
    Developer

    View Slide

  18. learning
    continuous

    View Slide

  19. accept challenges

    View Slide

  20. be prepare
    for change

    View Slide

  21. code evolves
    be prepare
    for change

    View Slide

  22. code evolves
    language evolves
    be prepare
    for change

    View Slide

  23. code evolves
    language evolves
    we evolve
    be prepare
    for change

    View Slide

  24. do not be shy…
    for the win

    View Slide

  25. expose your ideas…
    do not be shy…
    for the win

    View Slide

  26. expose your ideas…
    do not be shy…
    always ask…
    for the win

    View Slide

  27. write code
    for the win

    View Slide

  28. read code
    write code
    for the win

    View Slide

  29. read code
    write code
    learn from experiences
    for the win

    View Slide

  30. expertise?

    View Slide

  31. 2
    There are…
    types of developers…

    View Slide

  32. object oriented programming
    Learn about: hacker
    patterns
    good practices and testing

    View Slide

  33. evil stuff
    Learn about: philosopher
    anti patterns
    algorithms

    View Slide

  34. try to step out of your
    comfort zone…

    View Slide

  35. team player
    be a good

    View Slide

  36. we work with people!!!

    View Slide

  37. People are one of
    the most important
    things in life…
    yes!!!

    View Slide

  38. we work with people
    they are only
    means to reach
    not with computers,
    people

    View Slide

  39. be respectful

    View Slide

  40. be respectful
    be humble

    View Slide

  41. be respectful
    be humble help

    View Slide

  42. be respectful
    be humble help
    be honest

    View Slide

  43. always accept feedback
    without being an smartass
    no one is perfect
    for the win

    View Slide

  44. listen

    View Slide

  45. listen
    no finger pointing

    View Slide

  46. listen
    do not give orders
    no finger pointing

    View Slide

  47. listen
    do not give orders
    collaborate
    no finger pointing

    View Slide

  48. follow your heart
    sometimes the heart sees
    what is invisible to the eye…

    View Slide

  49. communities
    contribute to

    View Slide

  50. share your…
    experiences

    View Slide

  51. give back to the community
    contribute
    show what you learned

    View Slide

  52. code

    View Slide

  53. code
    events

    View Slide

  54. code
    events
    posts

    View Slide

  55. code
    events
    posts
    talks

    View Slide

  56. code
    events
    posts
    talks
    social networks

    View Slide

  57. fun!!!
    have

    View Slide

  58. development
    code and

    View Slide

  59. no
    silver
    bullets

    View Slide

  60. we are not multi-tasking

    View Slide

  61. vs
    productivity
    effectiveness

    View Slide

  62. prioritize your tasks and
    give value
    for the win

    View Slide

  63. prioritize your tasks and
    give value
    personal kanban
    for the win

    View Slide

  64. prioritize your tasks and
    give value
    personal kanban
    for the win
    be agile

    View Slide

  65. get focus and avoid
    distractions
    for the win
    pomodoro
    technique

    View Slide

  66. no
    silver
    bullets

    View Slide

  67. today, we are writing
    tomorrow’s legacy code

    View Slide

  68. vs
    maintainability
    performance

    View Slide

  69. take care of code quality
    for the win

    View Slide

  70. take care of code quality
    for the win
    be a good boy scout

    View Slide

  71. take care of code quality
    for the win
    be a good boy scout
    be agile

    View Slide

  72. celebrate your achievements

    View Slide

  73. solving
    problem

    View Slide

  74. challenge accepted!!!

    View Slide

  75. analyze the problem
    ?

    View Slide

  76. problem decomposition
    divide and conquer
    start simple and works
    towards complexity

    View Slide

  77. I’ll put this temporary hack right here…

    View Slide

  78. 2 years later…

    View Slide

  79. Who the hell wrote this code…?

    View Slide

  80. avoid hacks
    for the win

    View Slide

  81. avoid hacks
    do not reinvent the wheel
    for the win

    View Slide

  82. avoid hacks
    do not reinvent the wheel
    for the win
    always choose the right tool for
    the right job

    View Slide

  83. celebrate your achievements

    View Slide

  84. programming
    pair

    View Slide

  85. so I’m getting HALF the
    code for TWICE the
    money?

    View Slide

  86. Our first impression:

    View Slide

  87. Our first impression:
    - it is DIFFICULT

    View Slide

  88. Our first impression:
    - it is DIFFICULT
    - it is FRUSTRATING

    View Slide

  89. Our first impression:
    - it is DIFFICULT
    - it is FRUSTRATING
    - it is UNCOMFORTABLE

    View Slide

  90. Our first impression:
    - it is DIFFICULT
    - it is FRUSTRATING
    - it is UNCOMFORTABLE

    View Slide

  91. Do not be afraid
    and go for it!!!
    for the win

    View Slide

  92. tests
    code quality
    learning
    for free

    View Slide

  93. Let’s do some pairing

    View Slide

  94. art
    programming as
    Art is about human
    expression through language

    View Slide

  95. communication
    code is
    (that incidentally, also runs on a computer)
    between people

    View Slide

  96. some
    inspirational
    quotes

    View Slide

  97. “IDEAS that
    spread, WIN”
    Clay Shirky

    View Slide

  98. “We learn from
    FAILURE, not from
    SUCCESS! ”
    Bram Stoker

    View Slide

  99. mission?
    what
    is
    your
    we all have one…

    View Slide

  100. ?
    questions

    View Slide

  101. Thanks!!!
    github.com/android10
    fernandocejas.com
    soundcloud.com/jobs
    @fernando_cejas

    View Slide