생활코딩 작심5일 후기 share

today 2016-02-21 face Posted by appkr turned_in Learn & Think forum 0

지난 주는 생활코딩 작심5일 수업에 자원봉사자로 참여했었다. 첫 날은 다른 일 때문에 참석하지 못했고, 나머지 4일 동안을 참여 했다.

이 강의는 일반인에게

  • 웹 서비스의 기본적인 동작 원리를 가르쳐 주고
  • 웹 프로그래밍 입문을 돕는 것

이 목적이다.

학습 항목은 개발환경설치, HTML, CSS, JavaScript, PHP, SQL, AWS 서버 준비 및 코드 배포 등 이다. 이 강좌를 완주한 수강생들은 “무엇을 모르는 지 모르는 상태” 에서 “무엇을 모르는 지는 아는 상태”, 즉 스스로 문제를 해결하기 위한 기본 지식과, 다음 단계로 나아가기 위한 소양을 갖추게 된다.

교육자는 감동을 주는 사람이다. 단언건데, 생활코딩 운영자 egoing 님은 교육자이다. 그 감동은 오랫 동안 남아 있을 것이다. 왜냐하면…?

• • •

눈 높이

가슴에 손을 얹고 말해 보라. 내가 아는 것을 정말 6 살 어린이에게 설명할 수 있는 지를? 가장 먼저 부딛히는 벽은 어휘의 선택일 것이다. 내가 사용하는 어휘는 6 살 어린이가 이해할 수 있는 단어들로 재배열하고, 풀어서 말해야 하는데…

If you can’t explain it to a six year old, you don’t understand it yourself. <footer>Albert Einstein</footer>

이번 이벤트의 정원은 100 명 이었으나, 출석부를 기준으로 총 120 명 정도가 참석하셨고, 마지막날 출석률은 80 명 정도였다. 전라도 광주에서 오신 분이 있는가 하면 (Spatially), 연령대는 중학교 2 학년 학생 ~ 70+ 어르신까지 (Temporally) 다양했다. 또, 배경 지식 수준도 다양했는데, 참석자의 70 % 정도가 “웹” 프로그래밍을 한번도 안해본 분들이었다.

조교로서 가장 많이 봐 드려야 했던 분 중에, 자신을 기자라고 소개하신 한 분이 있었다. 딱 봐도 코드를 한번도 짜본 적이 없는 분이셨다. 그런데, 끝까지 완주하셨다. 눈 높이이 맞는 교육이 이루어졌다는 것은 완주율로 알 수 있다.

테니스 동호회에 참여하면서 배운 점 중 하나는, 신입 회원이 들어왔을 때 그 들이 떠나는 이유는 딱 두 가지라는 것이다.

  1. 우리 동호회의 수준이 자신의 실력/기대 수준에 못 미치거나,
  2. 아니면 자신의 실력이 우리 동호회 활동하기에 벅차거나.

그 외 잘 활동하다가 떠나는 경우는 생업이나 인간관계 때문에 발생하는 테니스라는 본질과는 무관한 이유였다. 이번 강좌에서 완주하지 않고 떠나신 분들은 1 의 이유, 즉, 이번 강의에 굳이 참여하실 이유가 없는 분들이었으리라.

목적 적합성

우리는 하나를 얻기 위해 하나를 포기해야 한다. 가령, 적시성을 얻기 위해 정확성을 잠시 보류해야 한다거나… 프로그래밍 입문자에게 변수, 자료형, 조건문, 반복문 등 기초를 전달하는 것이 본질이라면, 그 본질을 벗어 나는 곁다리 장식들은 버려야 한다. 이게 목적 적합성이다.

아래는 이 강좌의 최종 코드이다.

<?php $conn = mysqli_connect('localhost', 'root', '111111', 'opentutorials'); ?>
<!DOCTYPE html>
<html>
<head>
  <title>작심5일</title>
  <meta charset="utf-8">
  <link rel="stylesheet" href="style.css">
</head>
<body id="target" class="white">
<h1><a href="index.php">작심5일</a></h1>
<ol>
<?php
$sql = "SELECT id, title FROM topic";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
  print("<li><a href=\"index.php?id={$row['id']}\">{$row['title']}</a></li>");
}
?>
</ol>
<div id="article">
  <input type="button" value="white" onclick="document.getElementById('target').className='white'">
  <input type="button" value="black" onclick="document.getElementById('target').className='black'">
<?php
if (empty($_GET['id'])) {
  print("<h2>Welcome!!!!</h2>");
} else {
  $sql = "SELECT * FROM topic WHERE id={$_GET['id']}";
  $result = mysqli_query($conn, $sql);
  $row = mysqli_fetch_assoc($result);
  print("<h2>{$row['title']}</h2>");
  print($row['description']);
}
?>
</div>
</body>
</html>

웹 개발을 전업으로 하는 프로 개발자들이 이 코드를 본다면, 목적, 배경, 과정에 대한 이해 없이 결과만 보고 바로 코드의 품질을 비난할 것이다. 이 강좌는 “무엇인가를 하는 법” 을 가르쳐 주는 것이 목적이다. 배운 내용을 기반으로 “무엇인가를 잘 하는 법” 은 스스로 해야 한다.

강의와 결과물 코드는 목적 적합했다.

• • •

지난 일주일의 경험은 정말 알차고 보람있었다. 소중한 일주일을 경험하게 해 주신 egoing 님과 미림여자정보과학고 함기훈 선생님 외 선생님들, 수업에 참여하신 수강생 분들에게 감사드린다.

comments powered by Disqus
keyboard_arrow_up