나는 다음 주에 15 세의 직장 경험 학생과 함께 앉아 개발자의 삶과 일에 대해 이야기하도록 자원 봉사를 받았습니다.
잡는 것은
- 30 분 밖에 안 남았어요
- 나는 그녀와 이야기하는 사람들 중 한 사람 일 것입니다. 비즈니스에서 다른 역할을하는 다른 사람들도 하루 종일 그녀와 함께 일의 요소를 겪을 것입니다.
무엇을 다뤄야하며, 30 분 만에 그녀에게 무엇을 가르쳐 줄 수 있습니까?
그녀는 아마도 개발이나 프로그래밍 경험이 없다고 가정합니다.
나는 다음 주에 15 세의 직장 경험 학생과 함께 앉아 개발자의 삶과 일에 대해 이야기하도록 자원 봉사를 받았습니다.
잡는 것은
무엇을 다뤄야하며, 30 분 만에 그녀에게 무엇을 가르쳐 줄 수 있습니까?
그녀는 아마도 개발이나 프로그래밍 경험이 없다고 가정합니다.
답변:
나는 고등학생들과 많이 교류하기 때문에이 질문에 자주 대답합니다. 15 살짜리가 50 살짜리보다 프로그래밍을 설명하기가 훨씬 쉽다는 것을 명심하십시오. 따라서 물건을 멍청하게 만들거나 멀리 가져온 비유를 사용할 필요가 없습니다.
나는 보통 어떤 프로그램의 예부터 시작합니다.
그 후, 나는 보통 컴퓨터가 인식 할 수있는 공식 언어로 프로그램을 코딩하고 종종 메모장처럼 간단한 프로그램으로 입력한다고 설명합니다. 언어는 수학과 영어 사이의 십자가처럼 보이며, 개념을 설명하고 컴퓨터가 따라야 할 공식과 지침을 제공합니다.
그런 다음 그들은 항상 컴퓨터에 항상 있는지 묻습니다. 이것이 제가 Facebook에 항상있는 이유이고, 아직 눈이 나 빠지지 않은 이유입니다. 사람들은 내가 "사람을 해킹"하는 방법을 알고 있는지 물어보고 여자들은 돈이 좋은지 또는 컴퓨터 과학 수업에 몇 명의 여자가 있는지 묻습니다.
그 후에도 여전히 관심이 있다면, 게임을하는 방법, Windows Messenger의 작동 방식 등과 같은 질문에 대답하기 쉬운 (또는 적어도 Wiki에 대한) 구체적인 질문을하기 시작합니다.
컴퓨터가 주위에 있다면 Firefox의 설정 대화 상자에서 버튼 클릭 처리기, 게임 엔진의 기본 루프 또는 물리 코드와 같은 실질적인 효과가있는 코드를 보여주고 말할 수 있습니다. 웹 사이트 등의 JavaScript 소스
나는 5 살짜리에게 다음과 같이 설명했다.
나 : "이야기에서 사람들이 어떻게 마법의 말을하고 세상의 것들을 바꾸는 지 알고 있습니까?"
그녀 : "예?"
나 : "그게 컴퓨터 프로그래밍이야."
그녀 (조용하게) : "와우."
15 ~ 30 분이면 실제 내용을 설명하기에 충분하지 않으며 기본 복잡성을 설명하는 것이 비명을 지르는 확실한 방법입니다. 당신은 매일 그것에서 일하고, 얼마나 멋진 지 잊어 버립니다. 세상의 다른 직업은 말로만 기능적인 것을 창조하지 않습니다 ... 어떤 시점에서, 다른 모든 사람들은 고기의 세계로 나가 망치로 물건을 때리기 시작해야합니다. 그것이 그들이 아이디어를 작동시킬 수있는 유일한 방법입니다.
우리가 아닙니다.
15 세인 사람은 모든 개념을 이해할 수 있습니다. 나는 14 살 때부터 프로그래밍을 시작했다. (수년 전에 학교에서)
데모에는 30 분이면 충분합니다. 브라우저처럼 널리 퍼져있는 프로그래밍의 마법을 보여주세요.
거의 15 살의 나이로, 나는 당신이 멋진 출발 을해야한다고 자신있게 말할 수 있습니다 .
어떻게 만드는지 설명하십시오.
10101010하루 종일 입력하지 않는다고 말합니다. 그들에게 그 방법 을 모른다고 말하십시오. ( 거짓말. 당신 은 무슨 10101010의미 인지 아십니까 ?;)) 몇 년 전이라고 말하십시오.의사 코드 샘플을 보여줍니다. 이해하기 쉽도록 :
Display Window
Display "I like cheese!"
Display OK button
If user clicks OK button, close Window
단계별로 해당 단계를 수행하십시오. 이것이 코드의 모양과는 다르다는 것을 알려주십시오. 코드는 다음과 같습니다 English + Math. 그러나 당신이 말하는 "언어"(읽기 : 문법)를 배우는 것은 어렵지 않습니다.
이번에는 조금 더 "수학"한 예를 보여주십시오.
User inputs A
User inputs B
C = A + B
Display C
이 코드는 계산기처럼 두 개의 숫자를 더한다고 설명합니다. 그들에게 "실제"코드를 보여주십시오. (대부분의 UI 및 기타 항목을 별도의 파일에 넣고 짧게 표시하는 파일을 짧게 유지하십시오.) 눈 바로 앞에 빼기 프로그램 (기호를에서 +로 변경하여)으로 변경하십시오 -.
프로그래밍을하기 위해 알아야 할 사항을 설명하십시오. (다양한 수준에서)
x + 1 = 2다음 x = 1.우리는 당신이 생각하는 것보다 더 많은 것을 알고 있습니다.
그래, 여전히 설명 할 것이 필요해
10101010.우리 중 일부는이 내용을 알고 있지만 어쨌든 말하지 마십시오.
프로세스, 패턴, 요구 사항 등과 같은 것들에 대해 이야기하기 시작하면 그녀는 즉시 종료됩니다. 오늘날의 어린이들은 시각적이고 시각적으로 동기가 부여되므로 이러한 유형의 자극을 촉진하는 데 도움이되는 것을 가져 왔습니다. 그녀에게 웹에서 멋진 무언가를 보여준 다음 높은 수준에서 그녀에게 무슨 일이 일어나는지 설명하십시오. 개발 랩톱을 가져 와서 화면에서 "멋진"일을 만들 것을 제안합니다. 앞에서 코드를 변경 한 다음 화면에서 변경되는 것을 지켜보십시오. 그 나이에, 그들은 매우 똑똑하고 시각적 인 것이 무엇이든 흥미를 유발할 것입니다.
Alice어떻습니까?
나는 그것을 일반적으로 말하고 싶습니다. 프로그래밍과 다른 많은 직업들은 문제 해결로 귀결됩니다. 매일 문제를 해결하는 방법을 보여주세요. 작업중인 프로젝트와 고객을 도울 방법에 대해 이야기 할 수 있습니다. 또한 당신이 (아마도) 당신의 일을 좋아하는 이유에 대해 조금도 포함 시키십시오.
필자의 경우 다른 직원이 자습서를 게시하는 교육용 비디오 자습서 웹 사이트를 개발했습니다. 나는 프로젝트에 대한 동기 부여 (사람들을 묶지 않고 다른 사람들을 원격으로 가르치는 것), 내가 직면 한 문제들 (난이를 어려운 문제로 볼 필요는 없다)과 내가 어떻게 해결했는지에 대해 설명했다. 또한 왜 내가 처음 프로그래밍을 좋아하는지에 대해 이야기하고 싶습니다.
그녀가 작업 한 소프트웨어의 예를 제시하십시오. 소프트웨어를 공개적으로 사용하는 클라이언트가 있습니까? 그녀에게 보여줄 수있는 사내 앱을 개발합니까? 그녀에게 작업의 최종 결과, 최종 사용자가보고 사용하는 것을 보여주십시오.
그런 다음 작성에 도움이되었다고 설명하십시오. 당신이 쓴 부분을 살펴보십시오. 가능하면 코드를 보여주십시오. 이러한 코드 줄이 어떻게 응용 프로그램의 일부를 만드는지 설명하십시오.
사람들이 코드를 사용하는 것을 보면서 얼마나 즐거워하는지 이야기하십시오.
어쨌든 14 살짜리 사촌에게 설명했습니다. 그는 매우 감동했고 다음 학기에는 프로그래밍 수업을 들기로 결정했습니다.
보드 게임 Robo Rally에 대해 잘 알고 있습니까?
나는 그것이 프로그래밍에 대한 완벽한 재미 비유라는 것을 알았습니다. 기본적으로 간단한 명령 (주로 화살표)을 사용하여 로봇을 프로그래밍하여 게임 보드의 특정 지점에 도달합니다.
나는 여전히 내 BigTrak을 가지고 있었으면 좋겠다 ...
간단하지만 유용한 것을 보여주십시오. 좋은 예는 다음과 같습니다.
이 접근 방식이 마음에 드는 이유는 다음과 같습니다.
더 나은 예제를 생각할 수도 있지만 스타일이 "첫 소개"에 도움이된다고 생각합니다.
첫째로, 당신은 당신이 논쟁해야 할 경쟁이 있습니다.
영화, 대중 문화 및 현장의 사람들 ( 그리고 그 문제에 대한이 질문) 조차도 프로그래밍 (및 컴퓨터 과학 분야의 대부분)을 일종의 마술로 묘사하려고 시도합니다. 마법이 아닙니다.
프로그래밍은 단순히 작업을 설명하고 이러한 작업을 결합하여 문제를 해결합니다. 평행선을 찾으려면 수학을 사용하십시오. 컴퓨터는 수학 교사와 같아 모든 작업 을 보여 주어야합니다 .
물리적 관점에서 보면 컴퓨터는 똑똑하지 않습니다. 컴퓨터는 우리가 말하는 것만 큼 만 알고 있습니다. 예를 들어 컴퓨터 프로그래머가 CD에서 음악을 재생하는 프로그램을 만들려면 컴퓨터에 CD에 저장된 데이터를 읽는 방법을 말한 다음 해당 데이터를 음파로 변환하고 마지막으로 스피커에서 음파를 출력하는 방법
이 아이디어를 한 단계 더 발전 시키면 프로그래밍이 어떻게 작업을 서로 구축 할 수 있는지 계속할 수 있습니다. 수학에서 대수를 배우기 전에 산술을 배워야했던 것처럼 컴퓨터는 더 복잡한 작업을 수행하는 방법을 말하기 전에 '기본을하는 방법'을 알아야합니다. 수년에 걸쳐 컴퓨터 과학자와 프로그래머는 컴퓨터가 기본적으로 충분히 '교시'할 수 있었으며, 우리가 서로 대화하는 방식에 훨씬 더 가깝게 '이야기'할 수 있었다.
실생활에서 수학 교사는 "15의 3의 제곱"을 풀라고 말할 수도 있지만, 이전에 "X의 Y의 힘"이 "곱하기 X 에 의해 X , 그것을 수행 Y의 시간을"[기술적 Y -1 배이지만 EH.]
우리는 작은 것들의 세부 사항에 초점을 맞출 필요가 없으며 너무 많은 실제 문제를 해결하기 위해 우리의 시간을 투자 할 수 없으며 순전히 수학 클래스처럼, 프로그래머는 '알려진'작업의 기초를 설립 하는 방법 기본을 수행 할 수 작업-이제 컴퓨터가 기본 작업을 수행하는 방법을 이해한다고 가정 할 수 있습니다.
나는 9 살 때 푹 빠졌던 일을 할 것입니다. C64를 다락방에서 빼내십시오.
10 PRINT "YOU SMELL"
20 GOTO 10
(아빠 감사합니다).
그렇다면 그 재미가 끝났을 때. 나는 그녀에게 숫자 추측 게임을 보여줄 것이다. 네, 모두 기본입니다. 컴퓨터가 지시를 내리는 것을 보여주기 위해 현대 언어가 죽을 필요가 없습니다.
Facebook과 같이 일상적으로하는 일부터 시작하고 로그인과 같은 간단한 측면이 매우 복잡한 방법을 설명하는 것이 도움이 될 수 있습니다.
여기에서 데이터베이스, 응용 프로그램 디자인 및 보안의 일부 측면으로 분기하여 제거 할 수있는 유용한 정보를 얻을 수 있습니다.
"페이스 북에 대해 한 가지가 있다면 변경할 수 있다면?"과 같은 것을 물어볼 수도 있습니다. 그런 다음 어떻게 변경하고 얼마나 많은 사람들이 참여할 것인지 그녀를 안내하십시오.
나는 처음에 파스칼을 프로그래밍하는 법을 배웠고, 나의 프로그램이 나의 입력을 받아들이고, 그것을 엉망으로 만들고, 다른 것을 인쇄하도록 펌핑되었습니다. 나는 거기에서 매료되었다. 어떤 사람들은 쉽게 걸을 수 있습니다.
아마도 그녀가 현장에서 관심을 가져야 할 소프트웨어를 개발하고있는 어딘가에서 일을하려고했을까요?
정답은 없습니다. 그녀가 아는 것에 대해 5-10 분 동안 퀴즈를 풀고 최선을 다해 시도하십시오.
높은 수준으로 시작하십시오. 컴퓨터 프로그래밍이 문제 해결에 관한 것이라고 설명하십시오. 문제를 해결하고 기계가 사용하고 이해할 수있는 많은 명령으로 작성된 솔루션을 고안하는 것입니다.
어려운 부분은 15 살짜리 소녀가 흥미롭고 관련성 이 있다는 예를 제시 할 수있다 . 그런 상황에 처한 적이 없었고 그녀를 알지 못하는 경우에는 무엇을 추천해야할지 모르겠습니다. "Hello world"프로그램이나 간단하고 그래픽적인 것 (창에 도형을 그리거나 마우스를 추적하는 등).
다음은 몇 가지 실패와 몇 가지 좋은 시도를 한 후에 취한 것입니다.
프로그래밍은 문제 해결입니다.
인터넷 브라우저 (페이스 북), 휴대폰, 금전 등록기 등 매일 사용하는 구체적인 프로그램부터 시작하십시오. 많은 예제를 제공하십시오. 이 모든 것들에 일종의 컴퓨터가 있는지 확인하십시오. 컴퓨터의 핵심은 프로세서입니다.
프로세서는 매우 빠르지 만 멍청한 작업자와 같습니다. 지시 사항을 제시하면 정확히 말한대로 지시합니다. 추가 작업을 수행하지 않으며 수행하도록 지시 한 내용이 잘못된 경우 사용자에게 알리지 않습니다. 이 프로세서는 모든 작업을 수행합니다. 정확히 방법을 알려 주면 전화를 걸거나 사진을 전자 메일에 넣을 수 있습니다.
그녀에게 탄산 음료 기계에서 탄산 음료 캔을 사달라고 매우 빠르지 만 멍청한 노동자에게 어떻게 말할 것인지 물어보십시오. 그녀가 단계를 설명하기 시작하면 ( "기계에 돈을 넣고 버튼을 누르십시오.") 프로그램처럼 해부하기 시작합니다 ( "돈은 무엇입니까? 기계에 어떻게 넣는가?" 버튼을 동시에 누르면 아무 일도 일어나지 않습니다. "). 화이트 보드가있는 경우 첫 번째 지침 세트로 왼쪽에서 시작하십시오. 그녀가 수정하면 새로운 큰 목록을 오른쪽에 놓습니다. 좋은 지침이 있으면 조각을 일반화하기 시작하십시오 ( "포켓에서 돈을 꺼내고 트레이 소리에서 소다를 제거하십시오-어떤 부분이 동일합니까?") 일반화를 수행하여 중간에 넣으십시오. 그리고 그들이 지금 포함하고있는 조각들을 가로지 릅니다. 결국 함수 호출과 같은 원래 명령과 일치하도록 조각을 묶으십시오. 다른 좋은 연습 : 편지를 보내고, 문을 통과하고, 원 / 사각 / 삼각형을 그립니다.
따라서 프로그래밍은 문제를 해결합니다. 문제를 부품으로 나누고 일반적인 부품을 식별 한 다음 해당 부품을 다시 그룹화하여 문제를 해결합니다. 곧 일부 문제가 많은 문제에서 공통적임을 알게 된 다음, 자신이 알지 못했던 문제를 해결하기 위해 부품을 모으기 시작합니다.
좋아,이 시점에서 그녀는 이해할지도 모르지만 아마도 지루할 것이다. 멋진 프로그래밍 예제 세트로 후속 작업을 수행하십시오. 셰이더 및 관련 비주얼 코드는 시연하기 쉽습니다. 아주 작은 코드 변경으로 그림을 올리고 변경할 수 있습니다. 그녀가 Facebook에 관심을 보인 경우 REST를 통해 Facebook과 대화하면서 친구의 친구 (6도) 데이터를 확인하십시오. 비디오 게임을 좋아한다면 몇 가지 오픈 소스 게임 데모와 함께 몇 가지 코드 스 니펫과 게임 작동 방법을 보여주십시오. 집에서 조사 할 수있는 몇 가지 무료 도구와 리소스를 보여 주어 마무리하십시오. (파이썬, C # 등)
내 실패한 시도 : 파이 계산을 설명하려고 시도 (그들은 묻고), C-Jump 보드 게임 http://c-jump.com/ (그들은 그것을 얻지 못했고 지침은 버그가있었습니다), 라이브 코딩 2D 게임 (시연 사이에 작은 단계를 밟더라도 관심을 가질 수 없었습니다).
행운을 빕니다!
간단한 프로그램을 만드십시오. 아니요, "Hello World!"가 아닙니다.
내가 한 것은 게임을 만드는 언어, 로봇을 제어하는 언어 등 많은 종류의 프로그래밍 언어가 있지만 HTML을 사용한다는 것입니다.
아무것도없는 웹 페이지를 만든 다음 전자 메일 주소로 전자 메일을 보낼 양식을 추가하십시오. 그녀는 아마도 소유자에게 새 이메일이 있음을 알리는 휴대 전화를 가지고있을 것이므로 친구와 가족이 연락 할 수있는 좋은 방법이라고 말할 수 있습니다. 그녀가 나중에 자신의 웹 사이트를 얻는다면, 웹 사이트에 양식을 넣을 수 있다고 말하면 고객과 비즈니스 파트너가 그녀에게 연락 할 수 있습니다.
또는, 그녀가 조금 장난 스럽다면 프로그래밍에 관심이있는 부분을 알려 드리겠습니다. 해킹. 그 당시 저는 14-15 세의 나이로 AOL (내가 한 수십 가지 일 중 하나를 능가하는 하나의 프로그램 이외)에서 AOL을 망칠 수있는 최고의 프로그램을 만들었습니다. 흰 모자 측면에서, 나는 또한 최초의 스팸 제거 프로그램 중 하나를 만들었습니다 (1995). 나는 온라인 환경을 훨씬 더 즐겁게 만들 수 있었으며, 우리는 그것을 그 자리에 남겨 두겠습니다. 내가 컴퓨터에서하고 싶었던 모든 것은 내가 알아 내야 할 모험이나 퍼즐이었고, 컴퓨터에서하고 싶은 것은 끝이 없었습니다. 물론, 그것이 작동하는 것은 때때로 골치 거리 였지만, 인간보다 더 빠르고 더 나은 성과를 거둔 프로그램을 작성하는 것은 일반 대중에게는 불가능했던 일을하는 것이 자랑 스러울 수있는 훌륭한 기계를 만드는 것과 같습니다. 이제는 진지한 것을 피할 수는 있지만 Visual Basic에서 시작시 (화면 또는 시스템 트레이에 앉아) 시작될 수있는 무언가를 만드는 것이 매우 쉬울 것입니다. 좋아하는 웹 사이트, 좋아하는 프로그램 등을 시작하도록 할 수 있습니다. exe 및 웹 사이트를 시작하는 데 필요한 명령을 소개 한 다음 단추를 만들도록 요청한 다음 해당 단추에 코드를 추가하면됩니다. 즐겨 찾는 웹 사이트 (페이스 북, 트위터 등) 및 프로그램 (iTunes, 워드 프로세서 등)을 넣습니다. 컴퓨터가 그녀의 방에있는 경우 추가 기능을 위해 알람 시계를 던질 수도 있습니다. 물론이야, 30 분이 지나서 그녀를 걸을 수 없으므로 이미 완료해야합니다. 마지막으로 2-3 페이지의 사용자 설명서, 코드 및 .exe를 전자 메일로 보낸 다음 약간의 판매 피치로 남겨 두십시오. 처음에는 쉽지 않지만 처음에는 쉽지 않습니다. 교수형은 그렇게 나쁘지 않고 인생에서 매우 유용하며 분석적 사고를 발전시키는 데 도움이 될 것입니다.
나는 18 살의 대학생들을 가르쳤고, 15 살의 아이들은 거의 같다고 생각합니다. 연습 없이는 성공을 기대하지 마십시오. 첫 수업에서 "파산"되기까지 몇 주가 걸렸습니다.
내가 배워야 할 가장 큰 것은 내가 생각했던 것이 너무 단순하고 명백해서 시간을 채울 수 없다는 것이 학생들에게 전혀 그런 것이 아니라는 것입니다. 나는 당신이 아기 단계로 가야한다는 것을 배웠습니다. 그렇지 않으면 그것은 단지 "gee whiz"마법입니다.
30 분 안에 어떻게 맞출 지 모르겠지만, 제가 만든 첫 번째 일은 집에서 만든 작은 컴퓨터를 보여주었습니다.이 스피커는 스피커를 안팎으로 클릭하여 약간의 튜닝을하도록 프로그램되었습니다. 클릭간에 지연으로 작동하도록 카운터를 줄임으로써 음표를 재생할 수 있다고 설명했습니다. 방금 요리법처럼 의사 코드를 보드에 썼습니다. 그런 다음 전선 아래에 걸 수있는 작은 커패시터가있어서 전체가 약 1000 배 느리게 실행됩니다. 그러면 클릭-대기-클릭-대기 ...가 들릴 수 있습니다. 그런 다음 커패시터를 풀면 약간의 조정으로 터집니다.
요점은 컴퓨터가 단순한 일만하고 한 번에 하나씩하는 것입니다. 이전 단계가 완료 될 때까지 각 단계를 시작하지 않습니다. (예, 알고 있습니다-파이프 라이닝과 그 모든 것, 그러나 우리는 초보자 와 대화하고 있습니다.) 모든 사람들이 한 번에 모든 것을 한 것처럼 보이게하는 것은 전자 속도 일뿐입니다. . 그것은 프로그래밍과 컴퓨터를 이해하기 시작할 수없는 진정한 기본 개념 중 하나입니다. 우리에게는 이것이 매우 세분화되어있어 우리가 그것을 알고 있다는 사실조차 알지 못하지만 초보자는 그것을 알지 못합니다.
이것은 간단한 "답변"보다 개인적인 경험입니다.
내가 왜 관심을 얻었습니까? 부모님은 1984 년에 IBM PC XT를 구입했습니다 (1984 년에 태어났습니다). 640kb RAM과 20MB HDD와 5 "FDD를 가지고 있으며 MS-DOS v3.2를 실행했습니다. 5 번째 표준이 될 때까지 만질 수 없었고 마침내 그것을 사용할 수있게되었을 때, 나는 몇 년 동안 쏟아 부었습니다. 그것에 대한 호기심의 축적.
반면에 내 동생은 원할 때마다 같은 PC와 Quadra 610 매킨토시를 사용할 수 있었으며, 테이블에 지불 한만큼 지불했습니다.
언니 를 가르치는 중 ... 나는 언니에게 컴퓨터 프로그래밍을 기본으로 가르치려고 노력했다. 나는 컴퓨터를 시작하는 것부터 프로그램을 입력하고 실행하는 것까지 모든 것을 그녀에게 만들었다. 그것은 라인 프로그램이었습니다.
10 PRINT "CAT"
20 END
30 분이 걸렸습니다. 그녀가 마침내 그것을 실행할 때, 그것은 'CAT'라는 단어를 인쇄했고 그녀는 분노했습니다. 그녀는 고양이의 그림이 나타날 것으로 예상했다. 그녀는 방에서 쏟아져 나왔고 그것은 영원히 프로그래밍의 끝이었습니다!
도덕 : 결과는 시간과 노력에 비례하는 것이 좋습니다.
고등학생에게 Labview 및 Lego NXT 교육 1 년 동안 FIRST Robotics 의 멘토 였으며 NI Labview에서 로봇을 프로그래밍 할 때 어린이를지도해야했습니다. 솔직히, 필요한 프로그래밍 기술은 고등학생의 수준보다 훨씬 높았습니다. 그러나 경쟁은 아이들이 공학에 대해 흥미를 느끼게하고 도전을 할 수있는 능력에 대한 기준을 높이기위한 것이 었습니다. 프로그램에 if 문과 루프 하나만 있으면 문제가 해결 된 것입니다. 사람들은 우리가 작년에 만든 로봇을 위해 만든 코드 다이어그램을 보았을 때 로봇의 프로그래밍 섹션에서 탈락했습니다.
사람들이 15 살짜리 아이들이 복잡한 일을 할 수 있고 여러 시간 동안주의를 기울일 수 있다고 말하면서, 나는 그렇게 할 동기가 부족하다는 것을 알았습니다. 그들은 뇌에 부담을주지 않는 쉬운 일을하기를 원했습니다. 그들은 쓰기 프로그램보다 선반 기계의 CAD 및 밀링 부품보다 훨씬 선호했습니다.
데모를 시작하기 전에 세계에서 CS의 자리를 차지하는 데 도움이된다고 생각합니다. 저는 Hal Abelson의 수학에 대한 CS에 대한 설명을 좋아했습니다. 수학은 법으로 세계를 설명하는 데 도움이되는 반면 CS는 일을 수행하는 방법을 설명하는 데 도움이됩니다. 그의 예는 제곱근 함수였습니다. 수학은 그것을 정의하지만 주어진 입력에서 그것을 찾는 데 도움이되지 않습니다. CS는 할 것이다. 낮은 수준에서 전기 공학 및 물리학은 인터넷을 가능하게하는 하드웨어의 토대를 마련했지만 사람들이 인터넷을 사용하게하는 방법에 대한 의문을 남겼습니다.
그런 다음 프로그래머가되는 것에 대한 의문이 있습니다. 그것을 이끌어 낸 것은 다른 기술 분야보다 더 빠른 시도, 테스트, 수정이 있다는 것입니다. 논스톱 문제 해결이지만 다른 분야에서는 단일 루프의 처리 시간이 몇 개월이 될 수 있습니다. 또한 거의 모든 다른 기술 분야에 유용합니다. 대부분의 다른 기술 분야에서 말할 수있는 것 이상입니다. 따라서 무엇을하고 싶은지 아직 모른다면 (아마도) 일찍 익히는 것이 좋습니다. 대학에서는 실험을 코딩 할 수있는 것보다 더 많은 교수에게 유용한 정보가 거의 없습니다.
물론 데모를 잊지 마십시오. 예를 들어, 지진 사본 (오픈 소스)을 가져 와서 한 줄만 변경하고 (예 : 중력 강도 변경) 다시 컴파일하는 것이 좋습니다. 또한 그녀가 코드를 보도록하십시오. 그녀가 많은 것을 이해하지 못했을 것이라고 안심 시키십시오. 지금은 횡설수설처럼 보이지만 다시는 배우지 않은 외국어 신문도 마찬가지입니다. 그럼에도 불구하고 그녀는 사물이 사물에 할당되고, 사물에 무엇을해야하는지, 여기에서 중력을 설정하는 등을 볼 수 있다고 말할 수 있습니다.
나는 14 살 때 프로그래밍을 시작했다. 대부분의 (등록한 50 명의 학생 중 47 명)은 1 년 중반에 중퇴하거나 내년에 고급 과정을 계속하지 않기로 결정했지만, 나는 그것을 고수하고 매우 중요한 것을 배웠다.
프로그래밍을 통해 아무것도 아닌 무언가를 만들 수 있습니다. 당신은 필요를 채우는 유용한 도구, 당신과 당신의 친구들을위한 재미있는 활동, 또는 당신이 친구들에게 보여주고 "내가 한 일을 봐라" 라고 말할 수있는 유용한 도구로 단어를 바꿀 수있는 힘이 있습니다 .
우리는 "Hello World"를 시작으로 배웠지 만 코드가 사용자와 상호 작용할 수있을 때까지 관심이 없었습니다 . 우리가 "cin"으로 입력을 읽는 법을 배운 순간, 수업 시간에 Mad-Lib 프로그램을 만들었습니다. 첫 번째 장애물은 공백이 포함 된 입력을 읽은 다음 출력 형식을 지정하는 것입니다. 나중에이 이야기를 파일로 저장하고 싶었으므로 파일 IO를 배워야했습니다. 내 목표를 달성하기위한 장애물을 해결하는 것이 저의 참여였습니다.
그 해에 우리는 네트워크 관리자가 컴퓨터 수업 중 통신에 사용했던 "Net send"및 Novell SendMessage 클라이언트 사용을 기록하고 있음을 발견했으며 학생들이 테스트에서 부정 행위를 한 후 사용을 중지했습니다. 그래서 관리자가 비활성화 한 대화방을 대체하기 위해 대화방을 작성했습니다. 내가 만든 최초의 정말 유용한 일이었습니다. 나는 Battle.Net의 채팅 시스템을 모델로 삼아 사용자 등록, 중재자, 심지어 기본 암호화 및 섀도 파일 시스템으로 사용자가 변조하는 것을 방지했습니다 (모든 파일은 공유 네트워크 드라이브에 있어야 학생들이 프로그램 액세스 및 사용). 이것들은 내가 이미 알고 있던 개념이 아니라 문제를 해결하기 위해 스스로 생각 해낸 해결책이었습니다. 나에게 그것은 프로그래밍의 기쁨이었다.
따라서 소프트웨어 개발의 의미에 대한 논의를 넘어서 질문에 올바르게 대답하기 위해서는 대화식 데모가 좋은 아이디어 일 것입니다. 카메라의 모든 거대한 사진의 크기를 자동으로 조정하는 등의 문제를 해결하는 것이 좋습니다. 조금 더 복잡하지만, 그녀는 친구들과 공유 할 수있는 간단한 메시지 남겨두기 웹 페이지로 재미를 느낄 수 있습니다. 새 메시지가 게시 될 때마다 누군가에게 이메일을 보내도록하고 코드를 편집하여 사용자 대신 이메일로 보내도록 할 수 있습니다. 또한 페이지에 마지막 X 개의 댓글 수를 표시하고 해당 번호를 조정하여 결과를 확인하도록합니다.
누군가의주의를 끌고 계속 유지하고 싶을 때는 물어보십시오. 물을 마시는 것과 같은 간단한 작업을 어떻게 수행 할 것인지 묻는다. 그런 다음 그들이 제공 한 지시 사항 ( "홀을 내려가십시오"와 같은)이 실제로 좌회전, 우회전, 정지 등의 문제를 어떻게 처리하지 않는지 보여주십시오. 경계 조건을 이해하고 처리하는 것이 비즈니스입니다. 프로그래밍 그런 다음 "do-until"루프가 "벽에 올 때까지 걸을 때"종류의 상황을 처리하는 방법을 보여줄 수 있으며, 다른 작업에서 1 피트 앞쪽에서 메타 작업을 수행 할 수 있습니다. 걷기
이것이 전설인지 사실인지는 확실하지 않지만 언젠가 왜 뻣뻣한 지에 대해 읽었습니다. 이야기의 일부는 기차에서 만난 아이 (또는 아이)에게 프로그래밍을 보여주었습니다.
여러분 중 일부는 아시다시피 _ 왜 루비 사람 이었습니까 (그리고 루비는 일반 사람들에게 매우 친절합니다). 그는 루비에서 어떤 게임을하고 있었지만 어떤 아이는 그에게 다가 가서 무엇을하고 있는지 보려고 접근했습니다. 그는 먼저 결과를 보여주었습니다 . 작동중인 게임. 그런 다음 아이에게 코드에서 결과를 변경하기 위해 코드를 수정 하는 방법을 보여주었습니다 . 그런 다음 아이 가 코드를 가지고 놀고 수정 된 결과 를 보도록했습니다 .
나는 그것이 결과, 수정, 놀이와 같은 일반적인 작업 흐름이어야한다고 생각합니다. 인간 친화적 인 언어로 된 프로젝트 (게임이 최선의 선택 일 것입니다)를 찾아서 아이에게 보여 주어야합니다.
슬프게도이 이야기가 사실인지 아닌지는 전혀 모른다. 여전히 매우 시원합니다.
또한 하나 더. MessageBox델파이에서 프로그래밍에 대한 첫 경험을 기억 합니다. 컴퓨터가 내가 원하는 것을하고 즉시 결과를 볼 수 있기 때문에 시원했습니다.
그런 다음 마이크로 컨트롤러가 나타났습니다. 내 코드가 현실 세계를 바꿀 수 있기 때문에 더 좋았습니다. 변수에 값을 할당하면 출력 포트에 전압이 표시되어 엔진이 움직이기 때문에 너무 추상적이지 않았습니다. 멋졌어. 이 방법을 선택하고 싶을 수도 있습니다-Arduino와 같은 것을 아이에게 보여주십시오.
알다시피, 나는 그것이 결과를 바꾸고 보는 것에 관한 것이라고 생각 합니다.
프로그래밍에서 내가 가장 좋아하는 비유는 Satanicpuppy와 같은 마법사 (해리 포터 스타일)입니다. 나는 아이들뿐만 아니라 비 기술적 인 동료들에게도 이것을 사용하며, 그것은 잘 작동하는 것처럼 보이고 컴퓨터가 우리에게주는 힘을 확실히 전달합니다.
컴퓨터는 우리의 마술 지팡이입니다. 손목과 주술을 올바르게 튕겨서 마법을 수행 할 수 있습니다. 프로그래머로서, 우리는 전임자들이 작업하고 정제 한 철자 책 (라이브러리)을 이용할 수 있습니다. 새로운 주문과 주문을 만들거나 기존 주문과 함께 사용할 수 있습니다. 일부는 쉬우 며 일부는 실제로 효과적으로 사용하기 위해 더 많은 연습이 필요합니다. 동일한 문제를 해결하기 위해 종종 절충과 여러 가지 방법이 있습니다 (좋은 물약이나 주술을 사용해야합니까?).
이 확장 된 은유는 실제로 잘 확장 될 수 있으며 종종 필드 외부의 사람들이 액세스 할 수있는 방식으로 프로그래밍에 대한 열정을 전달할 수 있습니다.
아이들을 이해하는 가장 좋은 방법은 먼저 아이가되는 것입니다 ..! 어렸을 때 숙제, 터 잡기 등을 싫어했습니다. 그래서 당신의 관심을 끌 수있는 진입 점이 있습니다. 30 분 동안 모든 것을 설명 할 수는 없지만 관심있는 어린이들이 영감을 얻는 것으로 그들에게 일종의 노출을 제공 할 수 있습니다. 숙제와 같은 관련 주제로 시작하십시오. 컴퓨터가 몇 초 만에 부과를 어떻게 쓸 수 있는지 이야기하십시오.
나는 당신에게 최선을 다하겠습니다 ..! 잘 했어