'공부'에 해당되는 글 4건

  1. 2008/05/25 컴공학생들이 해보는 짝프로그래밍의 고찰 (2)
  2. 2008/04/20 아니 이런코드가 컴파일 되는거? (1)
  3. 2008/04/20 학교는 개발툴 전쟁? (4)
  4. 2008/04/02 프로그래밍 공부도 방법론을 적용하자 (3)

애자일방법론을 아시나요?

본인은 애자일방법론을 아주 좋아합니다.(현재 열심히 배우고 있습니다)

쉽게 애자일방법론을 말하자면

알파 -> 베타 -> 베타 -> RC1 -> RC2

위와 같은 순환으로 점진적으로 App를 완성시킨다는 것이죠. 처음 핵심만 만들고 점점 살을 붙이는 격이라 하겠습니다.

위키백과 - 애자일








이에 반면에 폭포수는 프로젝트마다 다르겠지만 대부분 위에 왼쪽 사진과 같습니다.(ㄷㄷㄷ)

여기서 말하고 싶은것은 애자일이 가지는 짝프로그래밍입니다.

짝프로그래밍을 말하려 하는 배경은 본인은 틈틈이 많은 학생들의 코드를 유심히 관찰해 보았습니다. 역시 학생이다 보니 명명법을 비롯해 제대로 된게 하나 없죠. 이것은 배워야 하는 문제이니 스스로가 노력해야겠죠.

하지만 문제는 모두 로직과 스타일이 다른데 스스로가 제대로 한 건지 못한 건지 모른다는 것입니다. 심지어 자신이 잘 짜고 있다고 믿는 학생도 있습니다. 출력만 예쁘게 잘 나오면 장땡인가 봅니다.

자 그럼 본론으로 코드는 사람마다 모두 다르다고 합니다. 맞습니다. 사람의 환경이 서로 다르니깐요. 그래서 인도나 미국회사들은 정해진 스타일의 틀을 지정하죠. 그래야 유지보수가 한결 쉬워지니깐요.

그런데 학생들은 자신의 코드에 대해 망각에 빠진 채 아무런 지적 없이 코딩을 한다는 것이죠. 하지만 정확히 지적하냐는 건 힘들기에 배제하겠습니다.


한컴퓨터로 두명이상이 코딩하기?

처음 이런 소리 들으면 도저히 이해가 안될 것입니다.(저도 그랬으므로)

하지만 애자일 관련 도서나 블로그를 보면 짝프로그래밍의 장점이 분명 있다는 것이고 프로젝트에 있어 매우 효과적이라는 것입니다. 짝프로그래밍 하다가 성격 안 맞으면 욕나오겠지만 유지보수 안돼서 버그나서 욕나오는거랑 맘먹을 것입니다.


그럼 어떻게 짝프로그래밍을 해야 할까요?

일단 학교 숙제를 가지고 서로 한다는건 엄두도 안날 것입니다. 왜냐면 코드가 같으면 낙제니깐요.ㅎㄷㄷ

또 짝이라 하지만 포기한 학생들 분명 있습니다. 즉 한명만 열심히 코딩 할 수도 있다는 것이죠.

그러므로 수업정책상 하기힘든 방법일 것 같네요.

하지만 스스로가 발전되길 바라는 학생이 있을 것입니다. 그런 학생들이 모여 서로 구현을 하려 한다면 분명 발전이 생긴다는 것 입니다.


결론!

프로그래밍 공부는 책을 가지고 반복

프로그래밍 구현은 두명 이상이 한명은 코딩치고 나머지 참여자는 같은 모니터를 보면서 의견내보고(여건이 안되면 어쩔수....)


장점.

컴퓨터대 개인으로 인해 생기는 망상이 깨진다.

코드가 더 정교하게 된다.

단점.

서로 잘났다 하는 친구랑 하면 싸움이 난다.


애자일하면 이렇게 된다.(잘 뭉치면 승리한다)

짝프로그래밍의 장단점에 대해 잘 정리된 글이네요. http://mars.egloos.com/1635173


생각

분명 팀 과제는 있지만 현실은 팀이 아니고 웬수라고들 합니다. 이런 상태에 이런 방법까지 제안한다면 A+ 받기 힘들죠.

그리고 코드는 그저 네이버검색에 의존하여 나온 코드 위주이고 또는 스스로 생각해낸 코드이니 서로 독특하죠.

그래서 개인이 작성한 코드를 학생들끼리 서로 교환하고 서로 지적받고 물어봐야 한다고 생각을 합니다.

즉 분명히 코드의 피드백은 있어야 한다고 생각을 합니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.

비주얼스튜디오에서 한글은 가능하단건 알았지만 실지로 한번 전부 한글로 해보았습니다.

소스는 저번 구구단에 대한 얘기를 할때 만든 소스를 사용해 보겠습니다.


#include<stdio.h>

#define 한줄의총커서 72
#define 엑스문자표시총행 16
#define 구구단한계산의글씨량 5

#define 구구단앞숫자 9
#define 구구단뒷숫자 9

void 야너곱하기만해(int x, int y)
{
        printf("%dX%d=%d",x,y,x*y);
}

void 몇줄띄기(int count)
{
        for(int i=0;i<count;i++)
               printf("\n");
}

void 몇칸띌래?(int count)
{
        for(int i=0;i<count;i++)
               printf(" ");
}

bool 짝수이면_(int value)
{
        if(value%2==0) return true;
        else return false;
}

void main()
{
        int
여태총몇줄했어= 0;
       
int
총몇개계산했어= 0;

        int 임시1야= 0;
       
int
임시2야= 0;

        for(int i=1 ;i<=구구단앞숫자;i++)
       
{
               for(int j=1 ;j<=
구구단뒷숫자;j++)
              
{
                      
총몇개계산했어++;
                      
임시1야= (여태총몇줄했어%엑스문자표시총행)+1;

                       if(임시1야<= 엑스문자표시총행/2)
                      
{
                              if(!
짝수이면_(총몇개계산했어))
                             
{
몇칸띌래?((임시1야-1)*구구단한계산의글씨량);
                             
}
                              else
                              {
몇칸띌래?(한줄의총커서-(임시1야*구구단한계산의글씨량)-(임시1야-1)*구구단한계산의글씨량);

                              }

                              임시2야= 임시1야;

                       }

                       else

                       {

                              if(!짝수이면_(총몇개계산했어))

                              {

몇칸띌래?(임시2야*구구단한계산의글씨량);

                              }

                              else

                              {

                                      몇칸띌래?(한줄의총커서-(임시2야*구구단한계산의글씨량)-(임시2야+1)*구구단한계산의글씨량);
                             
}
                       }
야너곱하기만해(i,j);
                       if(
짝수이면_(총몇개계산했어))
                      
{
몇줄띄기(1);

                              여태총몇줄했어+= 1;

                              임시2야--;
                      
}
               }
        }
        getchar();

}

VS 2003부터 가능하지만 VS2003은 앞글자가 영문이어야 한다고 하더군요.

솔직히 지저분하고 쫌 웃기지만  초보들이 읽기에 더더욱 편할 것 같네요.

모로 가든 서울만 가면 되지 않을까요? ^^ (서울을 출력으로 비유한게 아니라 배움)

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.

현재 다양한 개발을 위해 적합한 툴을 전도하고 있습니다.

전도의 이유는 아직까지 10년 전의 툴로 10년 전의 기술을 하고 있다는 게 저는 납득이 되질 않거니와 기술도 재미없기 때문에 학생들의 의욕도 없다는 것이죠.

VS?

그래서 VS 2008 무료판을 받고 즐겁게 재미있게 역량을 보이길 바라고 있습니다.
그런데 관점은 전혀 다르게 보고 판단 한다는 것입니다.

대표적인 피드백은 다음과 같습니다.

1. 배우는 입장은 아무것이나 해도 된다.

2. 자기의 취향에 맞춰야 한다.

말로만 비춰보면 100% 맞는 말입니다. 틀린 거 하나 없습니다.
저는 참고로 메모장으로 공부 하였습니다. 하지만 컴파일러는 현재 나오는 것으로 했죠.

"아무거나?"
네! 메모장이 되었든 드림위버가 되었든 이클립스가 되었든 비주얼스튜디오가 되었든 아무거나 하시길 바랍니다.

"취향?"
웹이 되었든 임베디드가 되었든 윈도우즈용이 되었든 맥용이 되었든 원하는 것을 하세요.

사용자 삽입 이미지adobe dreamweaver CS3

사용자 삽입 이미지

하지만 학생들의 관점은 바로 언어(특히 C,C++,C#,자바)라는 것과 또 그 외에 아무것도 모른다는 것입니다. 다른 쉬운 것들 편한 것들 아주 재미있는 것들이 허다한데 C가 개발의 시작점이라 인식이 완전히 박혀 있는 상태입니다. 이 글을 읽어도 아마도 당연히 C가 기초라고 못마땅하실 것입니다.

사실 VS6.0을 해본 저도 아이콘 변경이나 그림삽입 같은 멀티미디어적인 요소에 엄청난 삽질을 해야만 하였고 디버깅도 어지럽게 네이티브코드로 가버리는 등 온갖 삽질투성이게 됩니다. 저는 이런 것이 배움에 있어 더디게 한다고 문제 삼아 왔지만 학생측은 당연시 해왔고 그로 인해 언어는 어렵다라는 인식만 가중되고 있게 됩니다.

다시 한번 위에 피드백을 보자면 배우는데 왜 10년 전 도구와 기술을 배우나요?  그리고 취향이 고전적인가요? 또 현재 컴퓨터에 10년 전 프로그램 찾아보세요. VS6.0 말고 무엇이 있나요? (추가 : 스타크래프도 있네요.)

(추가 - C가 않좋다는 것은 절대 아닙니다. 해당프로젝트에 걸맞으면 C도 당연히 써야죠! 언어가 구식이라는 것을 지적하는게 아닙니다.)

세상은 바뀌고 있고 그 세상에 맞춰 기술은 변화하고 있습니다. 스스로도 변화해야 할 것입니다.

저의 관점은 간단히 말하자면 이렇습니다.

· 코딩은 짧게 생각은 깊게 하라.

· 다양하게 해보고 그 중에 원하는 것을 깊게 하라.

· 자신의 창조물을 만들어라.

지금 하고 있는 기술로는 저의 관점을 충족할 수가 없을 것입니다. 학교의 방침은 따르시되 스스로가 길을 만들어 나가길 바랍니다.

그 길은 자신이 우물 안에 있다는 것을 깨달을 때 더 잘 보일 것입니다.

본인 또한 그 길이 잘 보이도록 노력하겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.

후배1 : 어떻게 공부해야지 프로그래밍언어를 쉽게 있을까요?

본인이 어느 후배에게나 듣는 상담내용입니다. 이 물음의 본인의 답변을 요약 하자면 다음과 같습니다.

  1. 책을 읽어라.
  2. 손으로 읽어라.
  3. 지속해라.

뻔한 답변에 뻔뻔하기까지 한 듯 하네요, 하지만 실제로 하나하나 살을 붙이며 이야기를 전달하고 각종 예를 들어가며 더욱 이해시키고 있습니다.

그럼 책을 어떻게 읽고 지속하는지를 말하기 전에 경험상 실패 사례를 말씀 드리겠습니다.

학생 김철저.

맘먹고 공부하려는 김철저학생은 열심히 공부하겠다는 독한 맘을 먹고 주먹을 불끈 쥔 학생입니다. 이 학생은 철저하고 확실하게 공부하기 위해 두껍고 어려운 책을 골랐습니다.

그 다음 그 두꺼운 책의 한 장을 넘기고 한 글자 한 글자 놓치지 않고 밑줄 그으며 공부를 했습니다. 하지만 처음부터 이해 못하는 것 투성이고 무슨 요상한 단어들로 가득하여 졸음만 올 뿐이었습니다. 그래도 독한 맘은 오래 가서 일주일이 지났습니다. 하지만 갈수록 어려운 단어에 도저히 이해가 되질 않고 이제 겨우 100페이지도 넘겼는데 전에 내용은 하나 생각이 안 나고 과연 할 수 있을까 하는 의심만 생기게 됩니다.

그리고 곧 여태껏 배운 내용은 까마득할 뿐 뭔 발전이 있겠냐며 핑계를 합리화 하고 포기를 하게 됩니다.

이와 같은 학생의 사례는 아주 많이 봐왔습니다. 그리고 도서관의 기초적인 자바나 C,C++ 책을 보면 100페이지 이내는 공부한 흔적으로 닳아 있으나 100페이지 넘어는 깨끗하다는 것을 볼 수 있습니다.

의심이 시작되면 흔들리기 마련이게 되고 포기의 시작이기도 합니다.

폭포수

저는 이 방법론을 단계별 완성을 목표로 하는 폭포수공부법이라고 하겠으며 나쁜 방법이라 말하진 않겠습니다. 이 같은 방법은 지루하지만 앞 단계가 확실히 하고 다음 단계를 학습 해야 하는 학습에 적용 할 수 있을 것입니다.

드럼을 예로 들자면 먼저 원스트록으로 1비트 2비트 3비트 4비트 8비트 9비트 16비트 24비트 32비트를 단계별로 다양한 템포에 연습을 하고 더블 스트록으로 넘어 가야 합니다. 바로 넘어갈 순 있겠지만 오히려 더 늦은 학습이 되거나 뭔가 부족한 게 여력 할 것 입니다.

그럼 프로그래밍언어는 어떻게 공부해야 할까요?

언어는 거대한 건물과 같습니다. 그 건물은 하늘에서 내려다 보거나 멀리서 보면 전체를 볼 수 있지만 볼 수 없다고 가정하고 무척 가까이에 있다고 생각을 해보십시오.

자 그럼 이 건물을 이해하려면 구석구석 살펴봐야 합니다. 위에 글에 김철저학생의 방법은 처음 보이는 벽부터 열심히 조사했다고 할 수 있습니다. 이 벽이 어디 벽이고 어떤 용도의 벽인지 열심히 살펴보고 있다는 것이죠.

쉽게 그리고 반복

우리는 벽이 있구나 하고 지나 다른 곳을 살펴봐야 합니다. 한번 손으로 만져보기도 하고 또 그 다음 벽을 보고 계속 보다 다 보았으면 다시 처음 그 벽을 조사합니다.
그때 처음 이해되지 않았던 벽은 (예를 들어)화장실을 가리는 벽이라는 것을 깨달을 것입니다.
또 반복을 합니다. 그럼 더 깊이 어느 벽하고 연결이 되어 있고 어떤 벽하고 재질을 비교 할 수 있게 됩니다. 이 후 계속 반복을 한다면 벽의 구조가 학습이 되어 어느 정도의 건물을 이해하게 됩니다.


저는 이 방법을 민첩하게 반복하고 회귀하는 애자일공부법이라고 말하겠습니다.반복 주기

본인의 방법은 애자일공부법으로 한 권의 책을 3번 읽은 적도 하나의 챕터를 몇 번씩이나 읽은 적이 많습니다. 그리고 하나의 책보다 많은 책을 보려고 노력 하였고 그 와중에 좋은 책들은 정독을 하였습니다.

저는 되도록 많이 그리고 빨리 그 와중에 자세히라고 말하고 싶습니다.

저의 프로그래밍언어 공부 법을 정리 하자면

  1. 책을 읽어라.
  2. 이해가 되지 않는 챕터는 그냥 읽고 예제를 타이핑해본다.
  3. 그리고 이해되지 못한 챕터를 다시 읽어본다.
  4. 그래도 이해가 안 된다면 그 챕터를 무시하고 다음 챕터를 읽는다.
  5. 책을 다 읽었다면 이해가 되지 못했던 챕터를 다시 읽어본다.
  6. 그래도 이해가 안 된다면 완전 무시해라.
  7. 다른 책을 찾는다.
  8. 다시 1번으로..
  9. (다른 책을 읽어보고 다시 이해가 안되어 완전 무시된 챕터를 다시 읽어본다.)

임하는 자세를 정리하자면

  1. 절대 의심하지 말고 꾸준히 읽어라.
  2. 긍정적으로 생각해라.
  3. 주의에 학습에 대한 핍박이 있더라도 절대 흔들리지 말아라.

학습에 있어서 반복은 아주 큰 도움이 될 것이며 책의 '머리말'이나 '들어가며'라는 부분을 꼭 읽어보시길 바랍니다. 그 곳에 학습하는 방법이 녹아져 있으며 완독에 있어서 중요한 부분이라고 생각을 합니다.

많은 학생들 중 어떤 학생은 책은 소용없고 그냥 프로그램 하나 짜거나 분석하는 게 좋다라는 학생도 있고 강의를 듣는 게 좋다고 하는 학생이 있습니다.

저는 딱 한 권이라도 완독하라고 강조를 합니다.
그리고 책의 첫 장에서의 자신과 끝장에서의 자신은 엄청난 차이가 분명 있다고 덧붙입니다.

꾸준히 반복해라


읽으세요, 그것만큼 빠르고 쉬운 학습은 없습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
1 

글 보관함

get rsstistory!