소회(所懷)

하지 않게 신입 사원 교육을 맡았다. 작년에 태국 친구들 교육을 진행하긴 했지만, 한국 사람을 교육하기는 처음이다.^^ 업무로 주어진만큼, 일에는 소흘함이 없어야 한다.

사람을 아는 방법에는, 물어보는 것만큼 쉬운 방법이 없다. 그들의 답에 따라, 내가 알려줄 내용도 정해지는 것이다. 욕심이 난다고 모든 것을 알려주더라도, 받아들이는 사람이 준비되어 있지 않다면 무슨 의미가 있겠는가!

Why I make quizzes?

그래서, 첫 날에는 퀴즈를 본다. 다른 이가 무엇이라 하든 전혀 상관없다. 혼자 어떻게 생각하는지 간략히 적어서 내게 주면 된다. 물어보는 분야는 상당히 좁다. 3가지 부분을 물어보는데, 프로그래밍 패러다임, 디자인 요소에 대한 이해 그리고 특정 언어에 대한 이해로 구성된다. 10문제 내외로 언어에 대한 소양 뿐만 아니라, 프로그래밍에 대한 전체적인 이해가 있는지 물어본다. 다소 OOP언어에 종속적인 개념이 많지만, 시대가 시대인 만큼 당연히 알아야 한다고 생각한다.

QUIZ

[프로그래밍 개괄]
1. Declarative Language와 Imperative Programming에 차이는 무엇인가?

2. Static Language과 Dynamic Language의 차이를 서술하시오.

[디자인 개괄]
1. Abstraction 과 Generalisation 대해 각각 서술하시오.

2. GoF의 [Design Pattern]에서 1원칙인 'Program to an interface, not to an implementation’에 대해 서술하시오.

3. Refactoring과 Unit Test는 어떤 관계가 있는가?

4. Global Variables의 장단을 설명하고 적절한 예를 들어보세요

5. Unix의 기본 철학은 무엇인가? 30년이 지난 지금에도 적절한가?

[C# 언어 개괄]
1. C#에서 동적으로 instance를 만드는 방법, 2가지를 설명하시오

2. Lambda Expression이란 무엇이며 왜 사용하는가??

3. Extension Method를 사용하는 이유를 설명하고, 구체적인 예를 들어보시오.

Nobody expect that newbie knows these

대답은 'I think so.'다. 동의한다. 초급 개발자가 위의 사항에 대해서 식견이 있다면, 회사의 채용 프로세스 정말 잘 갖춰져 있거나, 우수 선별 인원이 회사를 찾은 것이다. 이렇게 훌륭한 동료와 일하는 기쁜 일이 있을까?

현실은 그런 친구를 만나기란 정말 어렵다는 사실이다. 그럼에도 불구하고 이러한 퀴즈를 내는 것이, 이 퀴즈가 새로운 친구들의 점수를 매기려는 목적이라기 보다는 앞으로 알아갔으면 하는 것들을 다소 거친 방법으로 전달함에 있다. 즉, 앞으로 전개될 수업과 개발 업무 속에서 이러한 개념들을 잘 정립(正立)해 가기를 바라기 때문이다.


2~3문제에 대해 답을 적은 이가 제일 준수했으며, 한 문제도 풀지 못한 사람도 있었다. 이쯤되면 문제를 낸 내가 잘못이다. 허나, 중요하다고 믿었는데... ㅠㅠ