첫번째 코딩 과제

신입 사원들이 들어오면 가장 먼저 하는 것 중 하나가 아주 간단한 프로그램을 작성해보도록 숙제를 내주는 것인데 코딩을 해본 경험이 적은 이들에게 목표를 주고 그 목표에 따라 소프트웨어 코드를 작성하는 것은 매우 중요한 일이다.

물론 회사 뿐만아니라 학생의 경우에도 처음은 있다.
경험적으로 첫번째 아주 짧은 코딩 과제는 Tic-tac-toe나 사다리 게임을 주는 편이다.

보통 학생에게 가이드한다면 다음과 같이 접근을 한다.




코딩은 반드시 직접 해봐야 돼.
먼저 생각을 해보고 궁금한 것은 물어보고 해서 한 사이클을 해보자.
틱택토 게임을 콘솔로 만드는 걸 해보면 되는데 먼저 스펙을 정해야 돼. 위키피디아 보고 판단해봐.

https://en.m.wikipedia.org/wiki/Tic-tac-toe

하나씩 단계를 밟아야 하니까.

먼저 언어를 정하고. 
C로 하라고 하고 싶지만 먼저 좀더 간단하게 할수 있는 java나 python으로 해도 돼.
Java를 해봐야 하니까 자바로 시작하면 되겠다.

1. 언어 결정 (자바 추천)

2. 게임 구상

2.1 위키피디아 보고 룰 이해

2.2 1인용, 2인용 (2인용이 쉽겠지? 1인용은 컴퓨터 자동 플레이 지능을 구현해야 하니까!)

2.3 콘솔, 그래픽 (콘솔부터 하는 거지. 그래픽은 나중에 붙여도 되니까. 항상 독립적인 요소를 단위를 너무 크지 않게 빌딩해가는 습관이 필요해. Divide and conquer하면 어떤 큰 것도 해결 가능!)

3. 모듈 구상 (어떤 파트들을 개발해야 하지?)

여기서부턴 먼저 생각을 해보길...

첨이니까 예시를 들자면

3.1 main 부분 (프로그램 시작부)

3.2 게임 클래스 (3x3 크기 판을 갖고 있고 처음에는 모두 빈 값. 나중에 1번 사용자가 수를 두면 X로 마킹, 2번 사용자가 수를 두면 O로 마킹할 배열 변수겠지?)

3.3 play함수. 게임 클래스 안에 있을 테고 사용자와 위치를 입력 받겠지? 그리고 룰에 따라 해당 위치에 빈 값이 아닌 다른 값이 이미 있으면 에러 처리. 빈 값이면 해당 위치에 사용자에 따라 O나 X값 저장. 그리고 게임이 끝났는지 체크. 이건 별도 함수로 만들어 호출하는 게 좋겠네.

3.4 decideEndOfGame 함수. 더 둘 데가 없거나 승부가 결정나면 이를 판단해서 게임의 끝을 알려주는 함수. 아마 가장 지능적인 함수가 될듯.

3.5 결과를 알려주는 함수

처음에는 실행하면 한 판만 하게 만들고 그 다음에는 여러 판을 할수 있게 고쳐서 기능 추가를 해보는 것도 좋겠어.

한 사이클을 체험해보자. 이 경험이 굉장히 자신감을 갖는 데 중요해~
먼저 위키피디아 보고 2.3까지 구상해봐. 
예시한 것과 다르게 생각해도 돼~

댓글

이 블로그의 인기 게시물

[Java] Java G1 GC의 특성에 따른 Full GC 회피 튜닝 방법

엄밀한 사고(Critical Thinking)란 무엇일까

일론 머스크의 First Principle Thinking (제1원리 기반 사고)