본문 바로가기

기술자료/.NET

처음하는 프로그래밍 [1] - 머릿말

지금 부터 동생님을 위해 자그만한 글타래를 펼쳐보려 합니다.
사실 프로그래밍의 프자도 모르는 사람에게, C#이라는 도구를 던져주고
프로그래머 같은 생각을 하며, 프로그래밍을 짜라고 하면 상당히 막막한
입장에 빠집니다.
게다가, 제대로 기능을 활용 못하는 도구를 실행 시켜 맨 도화지 같은 상태에서 프로그래밍을 시작하기란 정말이지 힘든일이 아닐 수 없습니다.
어제 문득 동생님의 프로그래밍을 돕다가 "왜 프로그래밍을 못짤까?" 라는 화두를 나에게 스스로 던져 보았습니다. 물론 프로그래밍을 모른다는 것도 있을 것이며, 제가 잘못 알려준 것도 있으며, 더욱이 제가 C#을 제대로 모르는 것도 있을 수 있습니다.
그러나 그보다 더 근원적인 무언가가 있을 것이라 생각이 되었고, 담배를 입에 물면서 고민을 했습니다.
난 언제 부터 프로그래밍적인 사고를 갖게 된 것일까요? 그래서 지금의 위치에 있는 것일까요? 물론 무척 잘하거나 많이 아는 것은 아니지만, 최소한 이런 저런 기술책을 보면서도 그다지 난해하다고 생각되지 않다고 생각된 내용이 왜 내 동생에게는 난해하다고 생각하는 것 일까요?  내가 나름대로 쉽게 가르친다고 생각도 했고, 나중에 겪을 수 있는 혼란을 미리 예방한다는 생각에 알려주었습니다. 그러나 내 동생은 그렇게 받지 못하고, 도리어 혼란속에 허우적 대고 있다는 것입니다.

결론은 "개구리, 올챙이적 생각을 못한다" 였습니다.

그래서 내 시작이 어떤 것이였는지, 그리고 내가 가진 철학은 무엇인지를 알려주고, 혼란을 최소화 하기 위한 문제/답 스타일의 이야기를 펼쳐 알려줘야 겠다는 생각이 듭니다.

1. 프로그래밍 시작.
내가 프로그래밍을 시작하게된 계기는 무엇일까...라는 생각을 했습니다.
사실 굉장히 개인적인 부분이고, 그 시작이 될 수 있는 부분은 인연과 같은 우연적인 요소가 강하기 때문에, 사실 단언해서 이것이 정답이며 이렇게 걸어야 한다! 라고 말하긴 힘듭니다.

하지만, 제가 만난 사람들과 이야기를 나누면서 프로그래밍을 시작한 계기들을 정리하자면 다음과 같습니다.
  - 개인적인 흥미로 시작했습니다.
  어릴 때, 게임을 보거나, 자신이 만든 프로그램 결과물이 즐겁거나, 아니면 성취감에 대한
  정신적 만족감을 느껴 본 것입니다. 보통은 큰 규모의 프로그래밍 보다는 작은 규모의
  프로그래밍, 특히 정답이라는 형태가 잡혀 있는 문제와 답 형식 간단한 구현을 통해 책을
  통해 다양한 시도를 하면서 독학을 하게 되었을 것입니다.
- 일을 하다가 시작했어요.
  프로그래밍 하는 것을 선배 혹은 사수(자신의 직속 상관)을 통해서 신입사원때 배운 것
  입니다. 위를 통해 전수 받는 것이기 때문에, 그 형태는 다양하게 나오게 되는데, 보통
  많이 갈구는 스타일한테 배운 사람이 많이 늘더군요. 역시 매를 맞아가면서 배워야
  빨리 는다는 아주 원초적인 교육적 원리인 것 같습니다.
- 학원(학교)에서 배웠습니다.
   더 이상 시도해볼 것도 없거나, 자신의 실력이 없거나, 돈을 많이 벌 수 있다는 등의
  다양한 계기로 인해 학원에서 부터 출발할 수 있습니다. 또는 학교에서 정규 과정을 통해
서 출발 할 수 있습니다. 여기서는 대부분은 정규적인 과정이 있으며 그 중간 중간,
  간단한 문제와 답을 함으로써 기초적인 지식을 쌓게 합니다. 물론 Bit 전산원 같이 무척
  까탈시러운 과정을 통해 통과할 수 있습니다.
- 기타.
  그 외에는 다양한 계기들과 다양한 조건들이 있을 것입니다.

어느 부분 부터 시작된 것인지는 알 길은 없지만, 분명 저 중에 한가지 이거나 2~3가지가 복합적일 것입니다. 이것도 저것도 아니라더라도 기타에 다 걸릴 것입니다(笑). 무엇이 중요하고 잘 판단한 것인지는 개개인 마다 틀린 기준이기 때문에, 어디서 부터 출발하는 것이 좋은지는 알 수 없습니다. 단지, 자신이 어디에 처한지 정도 알 수 있겠죠?

2. 프로그래밍을 위한 자세
사실 프로그래밍을 하기 위한 자세란 딱히 없습니다. 대충 대충 짜든, 설계를 해서 짜든 결과만 제대로 나오기만 해도 반은 먹고 들어갑니다. 하지만, 프로그램 = 일 이라는 공식에 빠진 사람들은 대부분 이 4D(4-Danger)업종에서 발전없이 고생만 하다 나오는 것이 대부분의 패턴입니다. 크게 다르진 않죠. 그래도 곰같이 우직하게 일하시는 분들도 있지만...

여기서 제가 말하고 싶은 것은 2가지 입니다. 물론 이 내용들은  프로그래밍뿐 만 아니라 일 자체를 임할때 필요한 자세입니다.
첫번째는, 어느 방법으로 출발을 했던 일단 프로그래밍에 대해 재미있게 그리고 즐기면서 해야 합니다. 든 일은 재미있고 즐겁게 해야 그 결과가 완벽하거나 두세배의 결과치를 얻을 수 있습니다. 일 자체의 결과물 뿐만 아니라, 스스로의 능력도 배가 되는 것을 알 수 있습니다.
두번째는, 목표를 정확히 하는 것입니다. 내가 무엇을 할 것인지, 무엇이 될 것인지를 알아야 합니다. 내가 프로그래밍으로 무엇을 만들 것인지를 알아야 그 내용을 구현할 수 있을 것입니다. 또한 어떻게 배워야 하는지, 무엇을 더 공부해야 할지를 알 수 있을 것입니다. 거기에 내가 어떤 위치에 도달해야 하는지를 명확하게 하면 보다 더 정확한 목표의식을 가지게 됩니다.
이런 목표의식과 즐겁게 일을 할 수 있는 마음을 가질 수 있거나 그와 유사한 형태까지 갔다면 제가 이제 부터 풀어나갈 이야기들을 쉽게 수용하고 빠르게 배울 수 있을 것입니다.
아니라고 해도, 진행이 조금 늦을 뿐 배우기는 할 수 있을 것입니다.

3. 이야기를 하기 위한 Agenda
이 처음하는 프로그래밍을 위한 특별한 교육 순서는 없습니다. 그렇다고 많은 교재들이 택하고 있는 함수는 어쩌내, 클래스는 어쩌내, 상속은 어쩌내 하는 방법을 택하기엔 지겨울 듯 싶구요. 그래서 프로그래밍에 대한 나만이 가진 생각들을 말씀 드리고, 이 후에 문제와 답을 통해 간단한 프로그래밍을 실제로 구현해도록 합니다.
하다가 더 필요하다 싶으면 더 많은 내용을 이야기 할 것입니다.
다음은 이 이야기를 위한 순서 입니다.

  0. 머릿말
  1. 프로그래밍이란?
  2. 문제와 해결방법
  3. C#과 .NET Framework
  4. 고객 관리 프로그램
  5. 그래픽 프로그램.
  6. 정리