Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Pycon Korea 2018 - 비개발자에게 파이썬 가르치기

196 views

Published on

파이콘 코리아 2018, "비개발자에게 파이썬 가르치기" 세션의 발표자료입니다.

A slide used for a session "Teaching Python to non developers" in Pycon Korea 2018.

Published in: Education
  • Be the first to comment

Pycon Korea 2018 - 비개발자에게 파이썬 가르치기

  1. 1. 비개발자에게 파이썬 가르치기 일개 개발자의 다사다난 했던 여행기 문석환
  2. 2. 넌 누구냐? (남에게 가르쳐 주는 것 좋아하는) backend 개발자 문석환 seokhwan@peoplefund.co.kr 1
  3. 3. 개발자라면… 아니 왜 갑자기 홈페이지에 에러가 나나요? 2
  4. 4. 개발자라면… 그러니까 API가… 아니 유저 request가… timeout이… … (한숨) 얼른 고칠께요… 3
  5. 5. 개발자는 컨설턴트 클라이언트가 요청하는 요건을 컴퓨터 세계에 구현 4
  6. 6. 개발자는 컨설턴트 클라이언트가 요청하는 요건을 컴퓨터 세계에 구현 • 개발적 언어와 인간의 언어를 자유롭게 변환 5
  7. 7. 개발자는 컨설턴트 개발적 언어와 인간의 언어를 자유롭게 변환 아래의 언어를 인간의 언어로 바꾸시오 (5점) 특정 API가 유저 DB에 lock을 걸고 약0.5초간 대기 후 연산처리하는데, 갑자 기 client request가 몰리면서 서버의 connection pool이 overflow 되었습니 다. 이 후 모든 client 들의 request들이 request time out을 발생시켰고 홈페 이지에서는 에러페이지만 보이게 되었습니다. 6
  8. 8. 개발자는 컨설턴트 인간의 언어로 바꾸시오 (5점) 현실에서의 답 (점수: 2점): 그러니까... 서버에 유저가 너무 많이 몰렸고... 그래서 서버가 다운 되어서 에러페이지가 나왔습니다... 7
  9. 9. 개발자는 컨설턴트 인간의 언어로 바꾸시오 (5점) 위 문제에서 5점을 획득하려면… 8
  10. 10. 개발자는 컨설턴트 인간의 언어로 바꾸시오 (5점) 번역을 잘하거나… 9
  11. 11. 개발자는 컨설턴트 인간의 언어로 바꾸시오 (5점) 청중이 같은 언어를 쓰고 있어서 알아서 이해하거나… 10
  12. 12. 수업의 동기 왜 난 이 험난한 길을 가려 했는가… 11
  13. 13. 수업의 동기 왜 난 이 험난한 길을 가려 했는가… 개발팀과 비 개발팀의 커뮤니케이션 효율성 증대 12
  14. 14. 수업의 동기 개발팀과 비 개발팀의 커뮤니케이션 효율성 증대 시스템의 문제를 설명할 때 한 10% 더 쉬워짐 13
  15. 15. 수업의 동기 개발팀과 비 개발팀의 커뮤니케이션 효율성 증대 • 더 정확히는 내가 이야기 한건 바뀐게 없는데 받아들이는 사람 이 “그래 (잘은 모르지만) 너 힘든거 완전 이해함”이라는 눈빛 을 쏴줌 14
  16. 16. 수업의 동기 개발팀과 비 개발팀의 커뮤니케이션 효율성 증대 개발팀에 요청할 때 조금 더 개발자적인 관점에서 요건을 정리해 옴 15
  17. 17. 수업의 동기 개발팀과 비 개발팀의 커뮤니케이션 효율성 증대 이전: • “아직 정산처리 되지 않은 채권들에 대한 알림을 만들어주세요” 16
  18. 18. 수업의 동기 개발팀과 비 개발팀의 커뮤니케이션 효율성 증대 이후: • “아직 차입자에게 입금이 되었으나 정산되지 않은 채권들의 정보를 slack의 x 채널에 아래처럼 보내주세요” 17 총 x개의 채권이 정산처리 되지 않았습니다: 1. X호 채권명 (투자자수: x명, 정산할 금액: x원) 2. ...
  19. 19. 수업의 동기 왜 난 이 험난한 길을 가려 했는가… 요즘 쫌 코딩이 HOT 한 키워드임 18
  20. 20. 수업의 동기 요즘 쫌 코딩이 HOT 한 키워드임 • 실제로 많은 사람들이 궁금해 함 • 비 개발자들도 프로그래밍에 대한 지식을 갖고 있으면 커리어 에 도움이 되는 시기가 도래 19
  21. 21. 왜 하필 Python인가? 그림 출처 20 그림 출처
  22. 22. 왜 하필 Python인가? Life is short, you need Python • 그냥 넣으면 다 됨 • 처음 접하는 사람들이 쉽게 이해 할 수 있는 syntax 21
  23. 23. 왜 하필 Python인가? 22
  24. 24. 왜 하필 Python인가? 최근 많이 사용되고 있음 23
  25. 25. 왜 하필 Python인가? 최근 많이 사용되고 있음 특히 데이터 분석 • 비 개발자들이 개발자로 전향하지 않아도 완전 허탕치지는 않음 24 그림 출처
  26. 26. 수업 구성 수업 시간 25
  27. 27. 수업 구성 수업 시간 • 평일 저녁 매주 2시간 총 16주 26
  28. 28. 수업 구성 수업 내용 및 순서 27
  29. 29. 수업 구성 수업 내용 및 순서 • “일단 그냥 쓰고 보세요” 최소화 • 참조 문헌: Practical Programming: An Introduction to Computer Science Using Python 3 by Paul Gries • 목차 • Variable • Function • Control Flow Statement • Module and Method • List • Loop • File Processing • Collections • Algorithms • Sorting • OOP • Testing 28
  30. 30. 수업의 목표 29 얘는 왜??????? 그림 출처
  31. 31. 수업의 목표 일개 개발자의 소소한 바람… (혹시 그들이 추후 개발자가 될까봐…) 30
  32. 32. 수업의 목표 일개 개발자의 소소한 바람… (혹시 그들이 추후 개발자가 될까봐…) 프로그래밍 != 코딩 31
  33. 33. 수업의 목표 프로그래밍 != 코딩 • 코딩은 프로그래밍의 극히 일 부분이며 가장 쉬운 부분 • 코딩전에 해야 하는 일이 훨씬 더 힘들고 중요함 32 Programming Coding
  34. 34. 수업의 목표 일개 개발자의 소소한 바람… (혹시 그들이 추후 개발자가 될까봐…) 주석 (특히 docstring) 33
  35. 35. 수업의 목표 주석 (특히 docstring) • 세상에 주석 없는 프로그램을 근절시키기 위한 작은 한걸음 34 그림 출처
  36. 36. 수업의 목표 주석 (특히 docstring) Examples • 함수의 이름, 파라메터(parameter)의 개수, 그리고 리턴할 값을 함수를 정 의하기 전에 미리 지정하는 단계 • 나중에 함수가 제대로 정의되었는지를 확인하기 위해 극단적인 예제를 생각하는 것이 좋음 (예: ‘abs(0)’) Type Contract • 파라메터와 리턴값의 type을 지정하는 단계 Header • 파라메터의 이름들을 (유의미하게) 선택하는 단계 35
  37. 37. 수업의 목표 주석 (특히 docstring) Description • 이 함수가 어떤 일을 하는지 (일반적인 언어로) 간략하게 작성하는 단계 Body • 실제로 함수가 동작할 수 있게 실제 코드를 작성하는 단계 Test • Example 단계에서 지정한 예제들을 실행해서 함수가 제대로 작성 되었는 지 테스트하는 단계 36
  38. 38. 수업의 목표 주석 (특히 docstring) def is_odd(value): """(int) -> int value가 짝수일 경우 0을 아닐 경우 1을 리턴한다. >>>is_odd(7) 1 >>>is_odd(14) 0 """ return value % 2 37
  39. 39. 수업 보고서 어려웠던 점 38
  40. 40. 수업 보고서 어려웠던 점 그냥 모든 수업내용을 다 어려워 함 39
  41. 41. 수업 보고서 그냥 모든 수업내용을 다 어려워 함 • Variable 부터 이미 어려움 • 문과와 이과의 사고 방향 차이 40 그림 출처
  42. 42. 수업 보고서 그냥 모든 수업내용을 다 어려워 함 2. 아래의 코드가 ‘white christmas’란 값을 나오게 하려면 어 떻게 해야하나? wish = ‘White Christmas’ 41
  43. 43. 수업 보고서 그냥 모든 수업내용을 다 어려워 함 해결책 • 최대한 다양한 방법으로 같은 내용을 설명 42
  44. 44. 수업 보고서 어려웠던 점 시간 (aka 녹록치 않은 인생) 43
  45. 45. 수업 보고서 시간 (aka 녹록치 않은 인생) • 야근 • 수업을 하나 둘 빠지게 됨 44 그림 출처
  46. 46. 수업 보고서 시간 (aka 녹록치 않은 인생) • 하루 동안 치열했던 전투 • 체력 및 집중력 최저치 45 그림 출처
  47. 47. 수업 보고서 시간 (aka 녹록치 않은 인생) • 복습시간 • 다음날/다음주에 시작할 새로운 전투를 위해 저녁/주말에 열심히 쉬기만 해도 바쁨 46 그림 출처
  48. 48. 수업 보고서 시간 (aka 녹록치 않은 인생) • 짧은 수업시간 • 이상: 한 시간씩 일주일에 3번 • 현실: 한 주에 2시간씩 하는 것 조 차 벅참 47 그림 출처
  49. 49. 수업 보고서 시간 (aka 녹록치 않은 인생) 해결책 • 그냥 없음 48
  50. 50. 수업 보고서 어려웠던 점 수포자가 나오는 이유 49
  51. 51. 수업 보고서 수포자가 나오는 이유 • 많은 연습 문제들을 직접 풀어 봐야 함 • 앞 내용을 한번 놓치면 뒤 내용 은 답 없음 50 그림 출처
  52. 52. 수업 보고서 수포자가 나오는 이유 해결책 • 많은 연습문제를 제공 • 수업 시간에 연습문제를 푸는 세션을 제공 51
  53. 53. 수업 보고서 도움이 되었던 점 52
  54. 54. 수업 보고서 도움이 되었던 점 Memory Model 53
  55. 55. 수업 보고서 Memory Model 54
  56. 56. 수업 보고서 Memory Model 55
  57. 57. 수업 보고서 Memory Model • 변수 할당, 함수의 리턴, 변수의 scope 들의 시각화 56
  58. 58. 수업 보고서 Memory Model • http://pythontutor.com/ 57
  59. 59. 수업 보고서 Memory Model 58
  60. 60. 수업 보고서 도움이 되었던 점 수업 시간에 연습문제를 풀 시간 제공 59
  61. 61. 수업 보고서 수업 시간에 연습문제를 풀 시간 제공 • 직접 코딩하는 최소 시간 제공 • 코딩하며 궁금한 점은 바로 물 어볼 수 있음 60 그림 출처
  62. 62. 수업 보고서 도움이 되었던 점 리뷰 세션 61
  63. 63. 수업 보고서 리뷰 세션 • 수업을 이해하는데 중간에 한 번씩 허들이 발생 • 연습문제만 푸는 세션을 진행 62
  64. 64. 수업 보고서 도움이 되었던 점 과제 63
  65. 65. 수업 보고서 과제 • 수업 내용들을 하나로 연결해 주는 역할 • 수업과 다르게 시각적인 프로그램을 직접 개발 64
  66. 66. 수업 보고서 과제 65
  67. 67. 수업 보고서 과제 66
  68. 68. 수업 보고서 도움이 되었던 점 Google Doodle (블록 코딩) 67
  69. 69. 수업 보고서 Google Doodle (블록 코딩) • https://www.google.com/doodles/celebrating-50-years-of-kids- coding • line by line으로 진행되는 컴퓨터의 진행방식 및 loop를 게임을 통 해 쉽게 이해 68
  70. 70. 수업 보고서 Google Doodle (블록 코딩) 69
  71. 71. 70
  72. 72. Q&A 그림 출처 71

×