태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

 

 

 

 
분류 전체.. (1308)
마이크로소.. (132)
민수네 가족 (17)
호랭이 사.. (141)
열이아빠의.. (7)
PlayPhone (98)
NetworkON (1)
ratharn의.. (10)
큐브 해법 (10)
사람들 (6)
개발 이야기 (94)
아이티 이.. (539)
영어 이야기 (2)
좋은책 이.. (8)
대기중인.. (1)
발명 이야기 (2)
건강하게.. (15)
마소  구글  블로그  호랭이  삼성전자  마이크로소프트  LG전자  개발자  마이크로소프트웨어  아이폰 
 free offers
└>free offers
 online pharma..
└>online pharma..
 Go here
└>Go here
 visit my webp..
└>visit my webp..
 Go Source
└>Go Source
«   2021/12   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
+ ITViewpoint
+ 도이모이
+ with okgosu
+ 학주니닷컴
+ 열이아빠의 R⋯
+ Gsong.s Blog
+ 비주얼스튜디⋯
+ 광파리의 글⋯
+ LovedWeb
+ 블루오션의⋯
+ 울지 않는 벌새
+ PC 지존
+ 디지털통
+ 아크비스타
+ 고독한 프로⋯
+ Total : 2,101,173
+ Today : 4
+ Yesterday : 8
  

 

 

 

cube _해당되는 글 3건
2007.07.04   큐브 강좌-2 | 1층 십자 맞추기 (7)
2007.07.02   큐브 강좌 -1 | 큐브 맞추기 단계 (11)
2007.06.30   큐브와 개발자의 관계 (5)

 

큐브 강좌-2 | 1층 십자 맞추기
+   [큐브 해법]   |  2007. 7. 4. 09:32  


큐브 맞추기 두 번째 시간.

어떻게 그 사이에 십자 맞추기는 해 보셨나요?

ㅎ.ㅎ 잘 안 된다면 지금부터 알려드리는 방법을 잘 보고 다시 해 보세요.

사실 십자 맞추기는 정말 쉽습니다. 방법만 알면 너무너무 간단하지요.

일단 가장 먼저 알아야 할 것은 한 색으로 십자를 맞추되 맞춘 색의 옆 면이 일정한 규칙대로 배치되어야 한다는 점입니다.

우리는 흰색을 기준으로 맞춰볼 거니까.

흰색으로 십자를 맞춘다면 흰색을 윗면으로 하고요.

정면이 파란색, 오른쪽이 주황, 뒤쪽이 초록, 왼쪽이 빨강 순으로 배치되어야 하는 것입니다.

호랭이 아들은 이 순서를 시계 반대 방향으로 '파주초빨'이라고 외우더군요.
 

사용자 삽입 이미지



자 그럼 어떻게 하면 흰색 면도 맞추면서 동시에 옆 면도 볼 수 있느냐?

그건 아주 간단합니다.

흰색 십자를 만드는 데 사용하 할 수 있는 조각은 네 개뿐.

그 중에서 지금 맞춰야 할 색(파랑)이 붙어있는 조각을 먼저 찾아서

아래 사진에서 처럼 맞춰야 할 칸의 면에 가져다 놓는 것입니다.

조각이 어떤 방향을 보고있던지 간에 일단 이 안에 들어오기만 하면 무조건 맞출 수 있습니다.

사실 이 범위 안에 들어오게 하는 건 쉽습니다. 그냥 돌리기만 하면 되니까 안 알려 드리겠습니다.

일단 이 색칠된 자리 중 아무 곳에나 조각을 가져다 놓으세요.

맞추는 방법을 설명하기 전에 먼저 기준을 정해야 하니

지금 큐브 사진에서 위쪽이 흰색 십자를 맞출 면이고요.

약간 왼쪽으로 보이는 면을 정면, 오른쪽으로 보이는 면을 우측면이라고 부르겠습니다.

사용자 삽입 이미지



흰색과 파란색이 있는 조각을 영역 안에 가져왔는데

흰색 면이 사진에서 처럼 오른쪽에 있거나, 왼쪽이나 아래쪽에 있다면 완전 럭키입니다.

그냥 90도나 180도만 돌리면 제 자리로 올라갈테니까요.

사용자 삽입 이미지


문제는 이 녀석입니다.

조각을 영역 안으로 가져왔는데 흰색이 정면을 쳐다보고 있으면

정말 난감합니다.
사용자 삽입 이미지


앞에서 처럼 그냥 정면에 있는 면을 90도나 180도 돌려 버리면 사진과 같은 모양이 될 테니까요.

이럴 때는 그냥 블록 조각을 확 빼서 뒤집어 끼우고 싶어지기도 합니다.

하지만 이걸 맞추는 방법은 아주 간단합니다.
사용자 삽입 이미지


자 그럼 이런 난감한 녀석을 처리하는 방법에 대해 알아보겠습니다.

먼저, 사진에서 처럼 정면을 보고 있는 흰색 면을 위나 아래가 아니라 오른쪽, 혹은 왼쪽 모서리에 가져다 놓습니다.

이 상태에서 흰색면이 향한 방향 쪽으로 90도 돌립니다.
사용자 삽입 이미지


자 그럼 우리는 흰색이 오른쪽 모서리에 있었으니까 90도 돌리고 나면

사진에서 처럼 흰색 면이 왼쪽으로 가게 되겠지요?

자 그럼 끝났습니다.

뭔 소리냐구요?
사용자 삽입 이미지


그냥 요렇게 90도만 더 돌려 주면 되니까요.

쉽죠!

나머지 세 개의 조각을 끼워 넣는 방법도 똑같습니다.

자 그럼 어떻게 하면 좀 더 빨리 맞출 수 있을 지 연습하면서 십자 맞추기를 해 보시구요.

사용자 삽입 이미지


다음 시간에는 흰색 면 전부를 맞추면서 흰색면과 접하는 조각들의 색상까지 맞추는 방법에 대해 알아보겠습니다.

---------------------------------------------------------------------------------

아 왜 큐브가 바뀌었냐구요?

사진을 찍으려는데 제 큐브가 보이지 않아서

편집장님껄로 슬쩍 가져다 찍었거든요. ㅎ.ㅎ




     333큐브, cube, 구글큐브, 십자, 십자맞추기, 큐브, 큐브-2, 큐브1단계, 큐브맞추기, 큐브해법
     0   
BlogIcon bliss 2007.07.04 11:19
이거 보고 배워야지.. ㅎ
BlogIcon 열이아빠 2007.07.04 12:29
오오~~구글 큐브네요.
이거 갖고 싶당...
마소 선물로...추천을..ㅎㅎ
호랭이님도 이벤트 한번 해주세요..
BlogIcon 호랭이 2007.07.04 14:06
ㅎ.ㅎ 아래 써 놓았듯이 저거 편집장님 껍니다.

제가 개발자 데이 다녀올 때 여러 개 가져오긴 했지만

지금은 없다는 거! ㅠ_ㅠ

구글 코리아에서도 저런 아이템을 기념품으로 만들겠다는 이야기가 있었는데

강력하게 건의해서 다시 받으면, 제 블로그에서 이벤트 하겠습니다. ㅎ.ㅎ
BlogIcon 호랭이 2007.07.04 14:07
bliss님 해 보시고 안 되면 피드백 부탁드리겠습니다.

ㅎ.ㅎ
BlogIcon hshuh1587 2009.10.03 18:26
근대xvz를쳐봐
BlogIcon 오병헌의1587의000 2009.11.19 18:19
안녕하세요,저는hshuh1587fm써는오병헌입니다누구의모험을쳐고......
BlogIcon 오병헌의1587의000 2009.11.19 18:21
아!???혹시누구의모험쳐봤죠?

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

큐브 강좌 -1 | 큐브 맞추기 단계
+   [큐브 해법]   |  2007. 7. 2. 18:22  


큐브 강좌를 시작하겠다고 말 했으니 바쁘단 핑계로 손을 놓고만 있을 수는 없겠지요.

자 그럼 첫 번째 시간에는 뭘 배우게 될까요?

사실 첫 번째 시간에는 별로 배울 게 없습니다.

다만, 큐브를 맞추기 위해 반드시 알아둬야할 원리에 대해 말씀드리려고 합니다.

아래 큐브를 한번 보시죠.

사용자 삽입 이미지

워~ 너무 지저분 하다고요!

호랭이가 가방에 넣고 다니면서 쓰다보니 시트지가 좀 찢기기도 하고 더러워 지기도 했습니다.

하지만 지금 봐야 할 건 그게 아닙니다.

잘 보세요. 큐브.

어릴 적에 큐브 한 번 안 가지고 놀아본 사람 없겠지요.

이상하게 큐브는 남여노소를 가리지 않고 가지고 놀 수 있는 아이템입니다.

그래서 영화에 자주 등장하기도 하고요.

그런데 저 작은 큐브 하나로 만들 수 있는 조합의 개수가 무려 4,000 경이 넘는 다는 걸 아시나요?

사용자 삽입 이미지

그러다 보니 일단 이렇게 섞여 버리면 도무지 맞출 방법이 없습니다.

큐브에 대해 이야기 하다보면 백이면 백한 명이 "야 내가 한 면은 맞출 수 있는데" 혹은 "내가 두 면 까지는 맞춰 봤는데, 그 이상은 못 맞추겠더라"라고 말합니다.

하지만 이 글을 읽고 있는 당신도 아마 그 맞췄다는 한 면이 아래 사진과 같은 모양일 것입니다.

사용자 삽입 이미지

한 면 잘 맞췄네!

뭐가 문제일까요?

큐브 따위에 인생을 논하는데 대한 거부감을 느끼실 줄은 모르지만

위의 사진은 눈 앞의 것에 집중하느라 나머지 모든 것을 잃은 것과 비슷한 결과입니다.

한 면을 맞추기 위해 모서리는 신경도 쓰지 않았기 때문이죠.

호랭이도 저런 식으로 맞춰봤더니 두 면 이상은 죽었다 깨어나도 맞추지 못하겠더라고요.

그럼 어떻게 맞춰야 하느냐?

사용자 삽입 이미지

한 면을 맞추되 그 면과 마주하는 모서리의 색깔까지 맞춰야 합니다.

"야 한 면 맞추기도 어려워 죽겠는데 어떻게 저렇게 맞추냐?"라고 말씀하시는 당신.

아마 일주일 뒤에는 저렇게 맞추는데 30초도 걸리지 않을 것입니다.

사실 호랭이가 강좌를 통해서 알려드리는 방법은 마음 독하게 먹으면 하루에도 마스터할 수 있는 내용입니다.

하지만 천천히 가겠습니다. 일단 제가 하루에 다 올리기에는 찍고 편집해야 할 사진이 너무 많고요. 또 금새 질리게 될 것이기 때문입니다.

호랭이가 포스트 하나 올릴 때마다 한 단계씩 따라하시다 보면 당신도 1분 정도에 큐브 여섯 면을 맞추게 될 거라고 미쓤미꽈?

사실 이 방법은 여덟 살배기 호랭이 아들도 척척 따라하는 방법입니다. =_=;

자 그럼 다시 본론으로 돌아가서 위의 사진처럼 맞추고 나면 뭐가 달라지냐?
"어차피 한 면 맞추기는 매한가진데"라고 생각하시는 분들을 위해 전체 맞추는 순서를 알려드리겠습니다.

일단 한 면을 맞추고 그 모서리 색상까지 맞게 되면 아래 사진처럼 모서리의 중심 색이 자동으로 맞게 됩니다. 이는 수직으로 교차된 3개의 축에 달린 여섯 개의 조각은 항상 고정되어 있기 때문입니다.

일단 이렇게 해서 한 면과 그 면에 접하는 색상이 T 자로 되면, 그림처럼 비어있는 모서리 부분의 색을 맞춰넣으면 됩니다.

그 다음은 맨 윗면의 색상을 십자(+) 모양으로 맞추고요. 다시 십자로 맞춘 색상의 모서리 색상을 맞춥니다.

다시 맨 윗 면의 색상을 다 맞춘 후에 색상이 맞지 않는 네 개 혹은 세 개의 코너 색상만 맞추면 큐브는 다시 원래의 모양으로 돌아오게 됩니다.

사용자 삽입 이미지

욕 나오시나요?

뭐 어차피 머지 않아 저런 순서로 맞추게 될 거라고 미리 보여드린 것 뿐입니다.

하는 방법은 간단합니다.

머리 나쁜 호랭이도 하니까요.

자 이제 다음 시간에 알려드릴 방법에 대해 말씀드리겠습니다.

한 면과 모서리의 색상을 맞추려면 먼저 다음 사진 처럼 색상을 맞춰서 십자(+) 모양을 만들어야 합니다.
사용자 삽입 이미지

이때, 주의할 점은 흰색을 십자 모양으로 맞추되 옆 면의 색상이 파란색 부터 시작해서 시계 반대 방향으로 돌아가며, 주황, 초록, 빨강 순으로 맞추셔야 한다는 점입니다.

일단 사진과 같은 모양으로 스스로 맞춰보세요.

하다보면 어렵거나 도저히 안 되는 것들이 있을 것입니다.

그 방법들은 이틀 이내에 다시 알려드리겠습니다.

그럼, 파이팅~ ㅎ.ㅎ




     333 해법, cube, 큐브, 큐브 맞추기, 큐브 해법
     1   
쿨워터 2007.07.25 15:29
글 재미있게 잘 봤습니다. 저도 한번 한 면 맞추기에 도전해볼까 합니다. ^^
큐브호랭이 2007.07.25 16:34
넵. 파이팅입니다.
하다가 잘 안 되는 부분이 있으면 뭐든 문의해 주세요. ㅎ.ㅎ
큐브달인 2007.07.31 19:15
호랭이야 사실 난 발로 했다
BlogIcon 큐브호랭이 2007.10.18 04:33
ㅋㅋㅋㅋㅋ 난 무르팍으로 핸눈데!!!
알 수 없는 사용자 2008.12.06 16:53
살려주센..
이뿌의 2009.06.20 18:10
ㅜㅜ... 저는 파란색이 왜 반대쪽으로 갈까요ㅜㅜㅜ
BlogIcon 오병헌 2010.02.25 11:23
큐브달인!!오늘은다른튜브가 뭔데!!!
큐브달인 2010.09.03 18:48
안녕하세요 큐브달인 이만호입니다
이게머얔... 2010.11.20 18:55
십자가 도저히 안맞춰지네요 ㅠㅠㅠㅠㅠㅠ모르고 그냥 막돌렸으뮤ㅠㅠㅠㅠㅠㅠ어떻게해야 십자만들죠?ㅠㅠㅠㅠㅠㅠ
2011.06.18 22:51
비밀댓글입니다
BlogIcon ㅗ롷ㄹ럴어ㅡㄹ흐ㅑ라 2011.06.18 22:52
큐브달이나고 큐브호랭이 뻥!~ 어떻게 무르팍하고 발로 맞춰!

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

큐브와 개발자의 관계
+   [개발 이야기]   |  2007. 6. 30. 08:29  


다음 글은 마이크로소프트웨어 2007년 7월호의 '개발고수 12인이 말하는 실전 노하우'에서 발췌한 것입니다.

글을 읽다보면 큐브나 개발뿐 아니라 세상 사는 어떤 분야에서도 다들 비슷한 단계를 거치게 되는 것이 아닌가 하는 생각이 듭니다.

또, 지금 나의 위치는 어떤가라는 생각도 들지요. 호랭이는 큐브 맞추기도 초보 수준이지만 블로그도 기자도 그리고 아빠로서도 아직 초보수준이라는 생각이 들었습니다.

중급 단계로 넘어가려면 아직 해야할 노력들이 참 많은 듯합니다. ㅎ.ㅎ

------------------------------------------------------------------------------------

큐브 맞추기로 말하는

개발자 실력 향상 시나리오
 

소프트웨어 개발에는 끝이 없다는 말이 있다. 더 이상 수정할 필요가 없을 만큼 완벽하게 완성된 소프트웨어란 없다는 뜻이다. 마찬가지로 더 이상 실력향상이 필요 없을 만큼 완벽한 경지에 이른 개발자도 없다. 모든 개발자는 끊임없이 성장해야 한다. 하지만 모든 사람이 같은 속도와 성취도를 가지고 성장하지는 않는다. 효과적인 개발자의 실력향상과 성장에 대해 얘기해본다.

요즘 필자에게 취미를 묻는 사람이 있다면 필자는 주저 없이 ‘큐브 맞추기’라고 대답한다. 많은 사람들이 어릴 때 많이 가지고 놀았던 정육면체의 그 루빅스 큐브(Rubik’s Cube)이다. 큐브는 여섯 가지 색깔을 가진 총 26개의 블록을 이리 저리 회전시켜 모든 면의 색이 같아지도록 하는 간단한 놀이기구다. 기껏해야 6면을 가진 26개의 블록, 그중에서도 고정되어있는 가운데 6개를 제외한 20개의 블록을 움직이는 게임일 뿐이다. 하지만 큐브를 움직여 만들 수 있는 블록의 조합이 무려 43,252,003,274,489,856,000가지나 된다는 사실을 아는지? 무려 4,000경이나 되는 조합의 수가 나온다는 것이다. 그 많은 조합을 가진 다양한 방식으로 섞인 큐브를 모든 면이 같은 색을 가지도록 조합하는 것은 그리 간단한 일이 아니다. 그래서 많은 사람들이 큐브를 도전했다가 한 면 정도의 색을 맞춘 뒤 금방 포기하고 만다.

알고 보면 큐브의 세계는 나름 심오하다. 그 조합의 수만큼 다양한 색을 맞추는 솔루션들이 있다. 많은 수학자들이 큐브에 담긴 수학적 원리를 연구하고 있기도 하다. 큐브를 자기만의 방식으로 더 빨리 또는 더 적은 횟수로 맞추는 대회가 우리나라를 비롯해 전 세계에서 매년 열리고 있다. 큐브관련 동호회와 카페에서 수만 명의 회원이 활발한 활동을 하고 있다. 최근 몇 년 사이에 불어 닥친 복고 게임의 열풍 덕분에 오래도록 잠잠했던 큐브의 인기가 전 세계를 다시금 강타했고, 급기야 지난해에는 아마존의 게임 베스트셀러 부문 1위를 차지하는 사건을 일으키기도 했다. 

개발 노하우를 이야기해야 하는 이 코너에서 필자는 왜 갑자기 큐브 얘기를 하는 걸까? 필자가 보기에 큐브의 실력을 쌓아나가는 것과 개발자의 실력 향상 과정이 무척이나 닮아 있기 때문이다. ‘큐비스트’라 불리는 큐브 전문가가 되기 위해 노력하는 사람들의 모습과 개발자의 모습을 비교하면서 개발자의 실력 향상을 위해 필요한 자세가 무엇인지를 살펴보자.

큐브의 실력은 사용하는 큐브 기술에 따라 초급, 중급, 고급, 그리고 진정한 고수로 구분될 수 있다. 


초보자 – 기본개념 익히며 열심히 따라 하기

큐브 초보자들이 빠지기 쉬운 함정은 바로 처음부터 고수를 흉내 내려는 욕심이다. 고수들은 손이 보이지 않을 만큼의 빠른 회전으로 무작위로 섞여 있는 큐브를 10초대 초반의 짧은 시간 안에 맞춰낸다. 초당 7회전 이상의 빠른 손놀림과 중간에 버벅거림 없이 바로 다음 단계로 넘어가는 모습 등에서 우리는 감탄하게 된다. 그뿐인가. 한손으로 맞추기, 눈 가리고 맞추기, 심지어 발로 맞추기도 가능하다. 어떤 제약 조건과 환경에서도 아무런 주저 없이 척척 해내는 고수들의 모습을 보고 초보자들은 한편으로는 좌절하지만, 다른 한편으로는 강한 도전 욕구를 느끼게 된다. 

문제는 어설프게 고수들의 손놀림이나 흉내 내려고 하는 사람들은 이 시점에서 대부분 실패한다는 것. 고급 큐비스트들이나 사용하는 솔루션과 알고리즘 자료를 모아다가 이해도 되지 않은 상태에서 억지로 적용해보려고 애쓰다보면 어느새 큐브에 대한 흥미는 점점 떨어지고 결국엔 그나마 초보자로서 느낄 수 있었던 최소한의 기쁨마저 맛보기 힘들어진다.

착실하게 초보의 단계를 밟아 나가는 사람은 그런 고수들의 어려운 기술보다는 자신에게 맞는 기초 내용에 충실하려고 노력한다. 일단 큐브에서 사용되는 각종 용어들과 기호들에 익숙해진다. 센터, 코너, 엣지 블록이라는 기본 구성요소를 익히고 각 블록의 특징을 이해한다. 큐브는 사실 어떤 면의 색을 맞추는 것이 아니라. 가운데 있는 블록을 제외하고는 2개 이상의 색을 가진 블록의 위치를 맞추는 것이다. 이런 개념과 함께 초보자용 솔루션을 공부하기 위한 회전 기호에 익숙해지도록 연습한다. 외울 것이 제법 많지만 그 장벽을 넘어야 한 시간이 걸려서라도 큐브를 한번이라도 맞춰보는 짜릿한 기분을 느낄 수 있다.

초보 개발자들도 마찬가지다. 어설프게 고급 개발자들이나 보고 연구하는 책을 구해 처음부터 어려운 주제로 폼을 잡으려는 개발자라면 이미 개발자로서의 첫 걸음을 잘못 내디딘 것이다. 일단 가장 기본이 되는 프로그래밍 언어와 기초 개념들을 충실하게 공부하는 것이 초보자의 바른 자세다. 기초는 대충 건너뛰고 바로 중급 이상의 기술로 넘어가려는 욕심은 결국 어느 단계에서 더 이상의 성장을 막는 장애물이 되고 만다.

초보 큐비스트는 일단 가장 기초가 되는 해법을 열심히 외워서라도 큐브 맞추기를 많이 해보는 것이 중요하다. 처음에는 잘 알지 못한 채 무작정 따라 하기만 했던 솔루션이지만, 어느 단계에 이르면 솔루션 하나하나가 지닌 원리와 심오한 뜻이 무엇이었는지를 자연스레 알게 된다. 물론 초보자용은 좀 지루하다. 필수 회전수도 고급 큐비스트들이 사용하는 것의 2~3배 이상 된다. 하지만, 그것을 충실히 따라하면서 익히는 과정 없이는 결코 다음 단계로 나아갈 수 없다.

필자가 초급 개발자들에게 항상 강조하는 바는 일단 기초적인 내용의 코드라도 잘 만들어진 것을 열심히 분석하면서 흉내 내보라고 하는 것이다. 필자가 처음 프로그래밍을 배울 때는 마소나 컴퓨터 서적에 나온 모든 코드를 일일이 손으로 다 입력하고 그것을 흉내 내서 코딩하는 연습을 했었다. 그리고 그 중에 괜찮은 것이 있으면 그것을 잘 기억했다가 써먹으려고 노력했다. 자신의 실력을 과신하고 처음부터 자기 방식대로 하겠다고 욕심을 부리기보다는 일단은 고수들의 코드와 개발 방식을 겸허하게 받아들여 흉내내볼 필요가 있다. 물론 처음부터 고급 기술을 따라해 보라는 의미는 아니다. 가장 기초가 되는 코드들을 중심으로 그것들이 어떻게 만들어졌는지부터 하나씩 살펴보고 따라해 보는 것이 중요하다.

필자는 지금도 배우고 싶은 새로운 기술이 있다면 관련 서적이나 레퍼런스에 나오는 예제들을 빠짐없이 손으로 다 입력해서 실행해보고 그것을 숙지하려고 노력한다. 튜토리얼이나 예제에 등장하는 내용은 사실 그 기술을 만든 사람이 가장 핵심이라고 생각하는 내용을 간추리고 간추려 모아놓은 것이다. 그 내용과 순서를 완전히 숙지하지 않고 더 깊은 내용만 추구하려는 태도는 기술을 온전히 익히는 데 도움이 되지 않는다.

간단한 예제를 반복적으로 코딩 연습하는 것은 기초적이지만 핵심적인 내용을 빠르게 사용할 수 있는 훈련으로 적합하다. 그러면서 조금씩 원리를 깨닫게 되고, 머지않아 반복되는 패턴이 보이기 시작할 것이다.

기초에 충실하면서도 꾸준한 반복연습을 하는 것이 다음 단계로 나아가는 최적의 지름길이다. 큐브 초보자들은 초보 기술을 이용해 보통 양손으로 1분 이내에 큐브를 맞추는 단계가 될 때까지 연습한다. 처음에는 초보자용 솔루션을 보고 30분에 맞추던 것을 이제는 기초 공식을 보지 않고도 1분 이내에 맞추는 수준으로 올라간다.

처음에는 단순한 CRUD 코드를 작성하는 데도 예제를 봐야 하고 레퍼런스 매뉴얼을 뒤져가며 쩔쩔매다 며칠씩 보내곤 하지만, 이를 꾸준히 반복 연습하다보면 다소 응용된 CRUD를 몇 시간 내에 개발할 수 있는 실력을 얻게 된다. 이쯤 되면 슬슬 자신감이 붙기 시작하지만, 한편으로는 한계를 느끼게 된다. 지금까지 해온 것을 좀 더 빠르고 효과적으로 할 수 없을까라는 의문이 들기 때문이다. 바야흐로 이제 중급으로 올라갈 때다.


중급 – 다양한 응용기술에 관심 돌리기

초급 단계에서 이미 충분한 시간과 여유만 주어진다면 큐브를 다 맞출 수 있는 실력을 갖췄다. 하지만 여전히 그 하나하나 솔루션의 원리가 완전히 이해되진 않는다. 아무래도 기초적인 방법을 따라하면서 숙지하는 식으로 연습했기 때문이다. 그래서 중급이 되면 이제 반복되는 단순한 회전과 비효율적인 해법들을 좀 더 고급스러운 것으로 대치하기 시작한다. 흔히 말하는 각종 중급용 공식들과 팁들을 익혀나간다.

개발자도 마찬가지다. 기초를 충실히 갖춰 웬만한 프로그램은 시간만 충분히 주어진다면 만들 수 있겠지만 그래도 여전히 뭔가 부족하게 느껴진다. 고수들의 그것에 비하면 자신들의 개발 속도와 나오는 코드의 질이 뭔가 달라 보인다. 이제 기초를 넘어선 각종 응용기술과 개발 전략에 눈을 뜰 때이다. 이때 필요한 중요한 두 가지는 개념에 대한 깊이 있는 이해와 다양한 새로운 기술을 익히는 것이다.

자바라는 객체지향 언어를 배워 이제껏 잘 써왔지만 여전히 객체지향적 설계와 프로그래밍에 대한 깊은 이해가 없다면 이제 객체지향 원리들을 충실히 익힐 차례다. 또 개발자들이 부딪치는 많은 문제들에 대한 표준화된 솔루션을 정리해놓은 디자인패턴 같은 것도 공부해야 한다. 그러면서 기존에 그저 흉내 내기에 급급했던 코드들이 왜 그런 식으로 구성되었어야 했는지를 하나씩 깨닫게 마련이다.

중급 큐비스트들도 원리에 대한 이해가 점점 생겨나게 된다. 이전에는 회전을 더 많이 하더라도 가장 단순한 방법을 써서 맞추는 데만 충실했다면 이제는 그 각 회전이 가지는 의미를 알 수 있어야 한다. 큐브 공식에 가장 자주 등장하는 패턴인 ‘공식-역공식’ 패턴의 특성도 이해해야 한다. 또 방향(Orientation)과 조합(Permutation)이라는 큐브 맞추기의 중요한 원리도 이해해야 한다. 그런 것을 학습하면서 그동안 써왔던 기술들이 어떤 원리에 의해 만들어졌는지를 깨닫는 과정에 들어선다.

물론 중급 레벨에서 너무 많은 것을 기대해서는 안 된다. 다만, 이전에는 단순히 외우고 베끼고 따라 하기만 했던 것을 이제는 좀 더 깊이 들여다 볼 수 있도록 훈련하는 것이다.

중급에서 익혀야 할 또 한 가지는 속도의 향상이다. 중급 큐비스트라면 이제 양손으로 30초대에 진입하는 것을 목표로 해야 할 것이다. 초급에서는 사용하지 못했던 단축 솔루션들을 익히고 원리를 응용한 핑거 트릭(Finger Trick)이나 핑거 숏컷(Finger Shortcut) 등을 배우면서 속도의 향상에 힘쓴다.

개발자들은 생산성의 향상에 주목한다. 이제까지는 어떻게 만들던지 코드가 돌아가기만 하면 된다는 생각이었지만, 이제는 가능하면 빠르고 정확하게 동작하는 코드를 어떻게 효율적으로 작성할 수 있는지에 집중해야 한다. 초보 때는 원리를 배우기 위해서라도 가능한 한 직접 모든 것을 만들어 사용했다면 중급에서부터는 효율성을 중시해 다양한 라이브러리와 프레임워크를 도입해 보는 게 좋다. 너무 욕심을 부리지 않는 범위에서라면 새로운 기술을 익히고 그런 잘 만들어진 기술을 활용하는 즐거움에 빠져보기도 하자. 


고급 – 시간과 품질의 싸움

많은 큐비스트들이 큐브도 원하는 대로 맞출 수 있고, 제법 속도도 나는 중급 단계에서 그냥 주저앉는 경우가 많다. 더 이상의 고급 수준으로 가는 것에 대한 욕심이 없기 때문이기도 하고, 고급 실력을 갖추는 데는 사실 엄청난 노력이 필요하기 때문이기도 하다. 개발자들 또한 중급 정도의 실력이면 어디 가서나 눈치 안보고 나름의 실력을 뽐낼 수도 있고, 또한 주어진 일을 해내는 데도 무리가 없으므로 그 정도에서 만족하려는 경향이 있다. 어쩌면 그 가운데 소수의 사람들만이 도전하기 때문에 그 다음 단계가 고급이라고 불리는지도 모르겠다.

상당수의 중급 큐비스트들은 고급 난이도에 도전을 시도한다. 6면을 맞추는 데 30초 대 정도의 큐브 실력이면 어디에든지 충분히 실력을 뽐내 이목을 집중시킬 수 있다. 하지만 이제는 그런 차원이 아니라 진정한 자신에 대한 도전이 시작되는 것이므로 고급 기술을 익혀 시간을 20초대, 더 나아가 10초대 후반까지 도전하려고 한다. 그러기 위해서는 먼저 고급 기술들과 이론들을 익혀나가야 한다. 10대 때 이미 자신만의 고급 큐브 솔루션을 개발한 제시카 프리드리히 교수와 같은 천재적인 사람들에 의해 만들어진 고급 기술들은 초보자가 기억하고 알아야 하는 것보다 10~20배 이상의 공식을 암기하고, 또한 그것을 응용할 수 있는 수 백 가지의 케이스를 빠르게 파악할 수 있는 능력을 요구한다. 이는 며칠, 혹은 몇 주간의 노력으로는 도저히 도달할 수 없는 수준이므로 적어도 몇 달, 혹은 몇 년에 이르는 엄청난 노력이 필요하다. 하루에 12시간씩 연습한다는 사람들의 이야기도 종종 들어본다. 직장인인데도 틈만 나면 큐브를 손에 들고 연습하고 공식을 암기하고 다양한 응용케이스를 풀어보는 훈련을 한다. 그렇게 해서 큐브 맞추는 시간을 5초, 10초 단축하는 데 엄청난 노력을 들이는 것이다.

고급 개발자가 되는 길은 어떠한가? 역시 만만한 것은 아니다. 중급에서는 그저 기능 구현을 직접 하지 않고 남들이 만든 것을 가져다가 응용해 쓰는 훈련을 했다. 이제 고급 개발자가 되면 이제까지 해보지 않고 다루지 않았던 기술과 영역까지 받아 들여 생산성을 극대화 하고 전체 애플리케이션 구조의 효율을 따질 수 있다. 또한 품질과 유연성까지 고려한 개발이 이뤄지는 것이다.

이렇게 하기 위해서는 또한 새롭게 공부하고 훈련할 것이 많다. 품질의 향상과 궁극적인 생산성 극대화를 위해 다양한 툴을 익히고 사용한다. 이전에는 이클립스와 그 번들에만 충실한 채 썼다면 이제는 자신만의 효과적인 개발을 위한 각종 플러그인과 써드 파티 툴들을 익히고 익숙해진다. 또한 테스트 주도 개발처럼 개발의 스타일을 완전히 뒤집어버리는 큰 도전에도 과감히 뛰어들게 된다. 그것이 자신의 실력을 20~30%만 더 향상시켜 준다고 해도 기꺼이 도전할 의지가 있는 것이다.

반대로 기초의 더 아래까지 내려가 가장 깊은 원리를 파고들게 된다. 이전에는 그저 가져다가 잘 쓰기만 하면 됐다고 생각했던 각종 오픈소스 제품들을 이제는 소스코드 레벨을 들여다보며 그 원리를 파악하려고 노력한다. 어떤 개발자는 자바의 바이트코드까지 분석해가면서 성능 향상을 위해 노력하기도 한다.

고급개발자는 그저 개발 경험과 시간이 많다고 저절로 되는 것이 아니다. 부단한 노력과 함께 자신의 실력을 향상시킬 수 있는 것이라면 무엇이든지 도전해보는 용기가 필요하다. 큐브의 고급공식을 적용하다보면 오히려 중급 때보다도 시간이 더 오래 걸릴 때가 있다. 아무래도 이전에 손에 익숙한 방식이 아닌 탓에 숙련이 되려면 그만큼 시간이 더 필요하다. 물론 충분한 연습이 따르면 이전에 사용하던 기술로는 도저히 따라올 수 없는 대단한 효과를 나타낸다.

고급개발자들이 새로운 프레임워크나 기술을 과감히 적용하려고 하다보면 자꾸 이전에 익숙하게 쓰던 방식이 더 편하지 않았는가라는 유혹에 휩싸일 수 있다. 하지만 그렇더라도 끝까지 포기하면 안 된다. 필자가 가장 넘기 힘들었던 단계는 오랫동안 익숙하게 사용해왔던 자바의 표준 기술 스택들인 JSP, EJB, JDBC 등을 버리고 스프링이나 하이버네이트 같은 프레임워크 기반의 기술을 사용하기 시작할 무렵이었다. 이전에 JSP Model1으로 개발할 때는 3시간이면 충분했던 웹 모듈이 SpringMVC로 개발할 때는 일주일이나 걸렸던 적도 있다. 십수년간 써와서 너무나도 익숙한 네이티브 SQL을 쓰지 않고 ORM이라는 다소 거추장스러워 보이는 기술을 쓰려니 다대다 관계의 테이블들을 읽어오는 것 하나를 하려 해도 매뉴얼을 뒤져야 했고, 또한 이게 맞나 싶어 자꾸 확인하면서 진행하려니 무척 답답했던 게 사실이다. 하지만 그때 포기하지 않고 끝까지 도전한 끝에 지금은 스프링과 하이버네이트 등을 이용해 누구보다도 빠르고 더 깔끔하게 우수한 코드를 작성할 수 있는 단계에 이르렀다고 생각한다.

또 하나 고급의 단계가 되기 위해 요구되는 것은 자신만의 기술과 응용력이다. 다양한 천재적인 큐비스트들에 의해 만들어진 고급 공식들이 있다. 그럼 고급 큐비스트들은 그것을 단순히 외울까? 현존하는 최고급 큐브 공식은 약 1,500개의 시퀀스를 가지고 있다. 각 시퀀스마다 적어도 5~10회전은 필요로 하니 우선 수만 개의 회전조합을 기억하고, 큐브의 상태를 딱 본 후 어떤 것을 어떻게 적용할지를 떠올릴 수 있어야 한다. 과연 그런 방식이 미련하게 암기한다고 되는 것일까? 절대 그렇지 않다. 오히려 그런 고급공식은 큐브의 개념과 원리를 완벽히 이해하고 있다면 자연스럽게 도출해 낼 수 있다.

고급 큐비스트들은 모두 자신만의 솔루션을 가지고 있고, 또 계속해서 그것을 개발해 낸다. 이전보다 조금 더 나은 회전을 할 수 있는 손동작이 있거나 회전 순서, 방식이 있다면 그것들을 끊임없이 찾아내고 자신의 것으로 만들려고 노력한다.

고급 개발자들도 또한 자신만의 노하우와 경험에서 나오는 다양한 팁과 기술들 보유하고 있고 끊임없이 자신만의 새로운 기술을 개발해낸다. 또한 그렇게 만들어진 자신의 기술을 남들과 나누는 것도 고급 개발자의 멋진 모습이 아닐 수 없다. 후배 개발자들에게 좋은 개발 팁과 기술을 알려주고 조언해주는 것, 또 자신이 작성한 좋은 코드를 오픈소스와 갈은 형태로 온라인에 공개해 많은 사람들이 배울 수 있도록 해주는 것. 그런 모습이 없이 진정한 고급 개발자라고 말할 수 있을지 의심스럽다. 이처럼 최고의 기술을 위한 부단한 노력과 자신만의 기술 창조를 위한 수고는 고급 개발자로서의 가치를 멋지게 드러내줄 것이다.


고수 – 고수에겐 끝이 없다

고급 개발자의 레벨을 넘어서서 언젠가는 최고의 경지에 다다른 고수의 길로 가는 사람들도 있다. 현재 3×3×3 큐브의 세계 챔피언은 20대 초반의 한국 청년이다. 그는 다른 사람들은 한 면도 채 맞추기 힘든 11초라는 짧은 시간에 큐브 6면을 모두 맞춰낸다. 그것도 어쩌다 한번이 아니라 여러 번 시도한 평균 시간이다. 그가 큐브를 맞추는 모습을 촬영한 동영상을 아무리 천천히 살펴봐도 그 회전을 제대로 볼 수 없다. 제대로 보려면 아마 초고속 카메라가 필요할 것 같다. 현재 그의 한글 블로그에는 전 세계의 수많은 큐비스트들이 방문해 글을 남기고 간다. 그만큼 인기가 높고, 따르는 사람이 많다.

그런데 그의 블로그를 계속 읽다보면 그 최고의 큐비스트는 그런 인기에 그다지 관심이 없음을 알게 된다. 대신 오늘도 0.1초를 더 줄이기 위해 더 나은 방법이 없을까를 고민하며 세계의 많은 큐비스트의 사이트 등을 뒤지고, 그 과정에서 좋은 것을 발견하면 그것을 연습하고 그 결과를 블로그 등에 공개하며 살고 있다. 물론 연습은 끝이 없다. 날마다 빠짐없이 자신의 기록을 측정하고 공개한다.

고수라는 것은 마치 도를 닦다가 뭔가 깨달음을 얻어 어떤 경지에 다다르는 것처럼 어느 순간 끝이 보이는 그런 위치로 가는 것을 의미하진 않는다고 생각한다. 과연 개발자의 끝이 있을까? 현재 세계 최고의 개발자라고 칭송받는 사람이 그대로 가만히 있어도 여전히 최고수의 자리를 지킬 수 있을까? 그렇지 않다. 오히려 최고의 개발자라고 불리는 사람일수록  꾸준히 자신의 실력을 향상시키고 새로운 기술과 좋은 전략을 배우기 위해 노력하고 있다.

세계적으로 유명한 개발자들을 만나 그의 강연이나 얘기를 듣다보면 다음과 같은 그들의 말에 종종 놀라게 된다. “저는 이곳 모임에서 여러 분들을 만나 이번엔 이런 것을 배울 수 있었습니다.”

그들은 자신보다 실력이 부족하다고 생각되는 다른 개발자들에게서도 무엇인가를 끊임없이 배우려고 노력한다. 그 겸손한 자세야말로 그들을 진정한 고수의 자리에 올려놓은 힘이 아닐까 생각해 본다.

이처럼 최고의 큐비스트와 최고의 개발자들이 지닌 공통점은 결국은 겸손이 아닐까 싶다. 자신의 실력에 자만하지 않고 노력을 게을리 하지 않으며, 끊임없이 배우려는 자세와 자신의 것을 남들과 공유하려는 마음가짐. 그것은 결국 모든 개발자가 지향해야 할 궁극적인 고수의 자세일 것이다.

------------------------------------------------------------------------

이일민 tobyilee@gmail.com | 오픈소스 기술을 엔터프라이즈 시스템에 적용할 수 있는 전략과 기술 연구에 많은 관심을 가지고 있다. 스프링 프레임워크와 하이버네이트 등의 오픈소스 프레임워크의 교육, 컨설팅, 기술 지원을 제공하는 Epril의 대표 컨설턴트로 활동하고 있다. 한국스프링사용자모임의 기술고문으로도 활동하며 오픈소스 기술의 저변확대를 위해 노력하고 있다. 오픈소스 기술에 대한 정보를 공유하는 toby.epril.com 블로그를 운영 중이다.





     cube, 개발자, 고수, 이일민, 큐브
     0   
... 2007.07.21 18:52
다읽어봤네요 휴..
... 2007.07.21 18:52
제가 큐브를해봐서 알지만 세상일이 큐브만큼 복잡하고 어려운일일줄이야..
저도 노력해야겠네요
BlogIcon 마소호랭이 2007.07.21 19:27
ㅎ.ㅎ 그러게요.
...... 2009.01.23 15:50
저도 큐브를 맞추긴하는데...
그리고 큐브를 우연히 돌리다가 맞을 확률은 로토 1등당첨을 1200연속 당첨될 확률과 같다고 하네요
BlogIcon 오병헌 2010.01.05 14:12
어머! 난큐브가싫어해요 왜그런지아서요? 아 근대별을따다줘에 부모님이 죽은다고말했는대요..........그러면 큐브 로또?그러면소원을 말해봐(네게만 말해봐)so같이해어.................................

아이디 
비밀번호 
홈페이지 
비밀글   

 

<<이전 | 1 | 다음>>

열이아빠's Blog is powered by Daum