웹에플리케이션 만들기 – JS, PHP 프로그래밍 16 : 프로그래밍 접근방법

지금부터 어떻게 프로그래밍을 공부하는게 좋을 것인가 라고 하는 주제이야기를 좀 해볼까합니다 자 어떻게 공부하는게 좋을까에 대한 정답은 없을 거에요 상황에 따라서 사람의 성향에 따라서 다를 겁니다

다만 저의 사견을 듬뿍담아서 저는 이렇게 생각한다는 거죠 우선 제일먼저 해야 할 것은 언어를 배우는 겁니다 그런데 제가 좀 강조하고 싶은 것은 적정용도 또는 적정수준으로 배우는게 필요하다고 생각해요 여기에서 이야기하는 적정용도라는 것은 여러분이 하고 싶은 것이 무엇이냐에 따라서 적합한 언어를 선택할 필요가있다는 겁니다 만약에 여러분이 웹개발을 하고 싶은데 C를 공부한다 아 조금 잘못된 선택이에요 효율적인 선택이 아닙니다 그런데 여러분이 운영체제를 내가 직접 만들어보겠다

그런데 php를 배워요 이건 완전히 잘못된 선택입니다 php는 운영체제를 만들 수 없다고 봐야겠죠 그리고 웹서버가 아니라 서버가 아니라 웹브라우저에서 동작하는 어떤 이 로직을 만들려고하는데 여러분이 Javascript를 안배우고 자바를 사용하려고 한다 이거는 완전히 잘못된 선택입니다 바로 그런 점에서 적정용도의 언어를 선택해야 된다 라는 것이 고요 적정수준이라는 것은 처음 프로그래밍를 시작하면 대부분의 사람들은 서툰 코딩실력을 갖게 될거에요 그런데 그 서툰 코딩실력에 대한 그 걱정 때문에 너무 공부에만 집중하다보면 무언가를 만드는 과정이 뒤에 등장하게 될 수 있습니다

그래서 저 같은 경우는 투트랙 전략을 쓰시는 게좋을거 같아요 다시 말해서 두 가지 전략인데 첫 번째는 장기전략 장기전략은 장기적으로 능숙한 언어의 사용자가되는 것 그리고 단기전략은 서툰코딩의 실력으로 무언가를 만들어보는 것 우리가 언어를 공부하는 것은 언어를 공부하기 위해서가 아니잖아요? 언어를 공부하는 것은 그것을 통해서 어떤 문제를 해결하고 싶어서 또는 이것을 통해서 무언가를 만들어보고 싶어서 라고 하는 겁니다 그 목표를 잊으시면 안돼요 그래서 수단과 목적을 혼동하면 안된다는 것이죠 그 다음에 해야 할 것은 API를 탐험해보는 건데요 API라는 것은 프로그래밍을 통해서 제어할 수 있는 대상들을 얘기하잖아요? 제가 이전 시간에도 말씀드린것처럼 오늘날에는 API가 폭발적으로 증가하고 있습니다

바로 그런 맥락에서 이 프로그래밍이라는 것이 주목받고 있는 것이고 이 세상에 어떤 API들이 존재하는 가를 끊임없이 호기심을 가지고 탐구하는 것 탐험하는 것 그것은 프로그래머에 있어서 아주 중요한소양이라고 생각합니다 마치 견문을 넓히는 것과 같은 일이라고 생각해요 그래서 우리가 배운 우리가 익힌 이 서툰 프로그래밍실력과 그리고 우리가 알게 된 API들을 조합해서 어떤 애플리케이션을 좀 기민하게 만들어보는 거죠 그리고 이 과정에서 굉장히 중요한 것은 그것을 좋아할 관객을 찾는 겁니다 애플리케이션을 만든다는 것도 일종의 표현이고 저는 인간에게 표현이라는 것은 단지생각을 표현하는 것 뿐만 아니라 표현자체가 인간에게 굉장히 중요한 욕망이라고 생각합니다 심지어 그 욕망을 잘하기 위해서 사람들은 생각한다고도 보거든요

그래서 여러분들이 어떤 표현의 욕망을 한껏 끌어올리기 위해서는 좋은 관객들이 필요하고 그 좋은 관객들을 더 잘 만족시키기 위해서 끊임없이 고민하고 숙고하고 노력하게 되는 것이죠 그런데 그 관객이 꼭 전 지구적인 엄청난 규모의 시장 뭐 이런 거창한 것이 아니래도 일단은 자기 자신이 관객이 될 수 있죠 자기 자신에게 필요한 무언가 문제를 소소하게 해결해본다던지 아니면 주변에 있는 친구들 가족 또는 주위에 있는 어려운 사람들 그 사람들을 프로그래밍을 통해서 좀 더 그 사람들의 삶의 질을 높여 주는 것 그것을 통해서 그분들이 기뻐하는 모습을 보는 것 바로 그것이 우리가 처음 프로그래밍을 시작하는 단계에서 일을 재밌게 느끼게 하는 또 지속하게 하는 핵심적인 원동력이 되지 않을까 싶어요 그렇게 해서 우리가 무언가를 끊임없이 만들어가는 과정에서 꼭 거쳐가야할 관문은 바로 한계를 경험하는 겁니다 처음에는 조그만 프로그램이었어요 기능도 별로없었고 또 혼자만들었습니다 그런데 시간이 지나면서 코드도 많아지고 기능도 많아지고 많은 사람들이 프로젝트에 참여하면서 여러 가지 한계들이 생기게됩니다 바로 그 한계로 인해서 절망감이 생기죠 그리고 그 절망감은 차곡차곡 누적이 될겁니다

그럼 그게 어느 정도의 임계점에 지났을 때 이런 생각을 하겠죠 아 정말 이렇게는 할 수 없겠다 다시 말해서 더 잘만들고 싶다 이런 생각이 들겠죠 그때 더 잘할 수 있는 방법을 찾는 게 중요합니다 그리고 더 잘할 수 있는 방법들에 대한 우리 선배 프로그래머들의 여러 가지 성취들이 있어요 연구들이 있는데 그런 연구들을 찾아볼 수 있는 좋은 곳이 바로 대학의 전공과정이겠죠

여기서 이야기하는 대학이라는 것은 대학교에 진학하라는 얘기가 아니고요 대학교에 다니고 계시다면 너무 좋은 환경에서 공부하고 계신거고 그렇지 않다고 하더라도 대학에서 무엇을 배우는지를 유심히 보시고 그 배우는 것들 각각의 취지가 무엇인지를 좀 파악해놨다가 여러분들이 경험하고 있는 그 한계를 느꼈을 때 그것을 해결해줄 수 있는 분야를 찾아서 공부하시면 됩니다 그리고 이 프로그래밍의 세계는 그 어떤 분야보다도 오픈된 공부 방법들이 오픈된 지식들이 아주 풍부하기 때문에 여러분들이 혼자서 공부하려고 해도 다른 분야에 비해서는 훨씬 더 수월할겁니다 그리고 저역시도 그런 어려움을 느끼는 분들을 위해서 이런 심도있는 분야에 대한 수업을 만들기 위해서 노력할거니까요 제가 도와드릴테니까 또 저 뿐만 아니라 여러분들을 도와주는 많은 사람들이 프로그래밍 세계에서는 많이 있을 겁니다

그분들과 잘 협력해서 이 난관을 잘 헤쳐나가지면 되는 거죠 그리고 최근의 화두중의 하나는 Computational Thinking 이라고 해서 이 컴퓨터적 사고라고 하는 것이 좀 화제가 되고 있는데요 이런 분야에 대한 정보들도 좀 찾아보셔서 이게 뭘 이야기하는 건지도 한번생각해보시면 좋을 것같습니다 그래서 이런 분야들이 이야기하는 것들 우리 선배 개발자들의 성취는 이런 것들이 있을거같아요 알고리즘 데이터 스트럭터, 디자인패턴, 프래임 웍크, 컴퓨터구조 여러 가지 성취들이 있는데 여러분들이 어떤 한계를 충분히 경험하고 그것으로 인해서 절망감이 충분히 성숙됐을 때 이러한 분야들을 접하면 마치 박하사탕을 눈으로 먹은 것처럼 시야가 뻥 뚤리는 느낌이 들겁니다 그리고 뭔가 막연하게 둥둥둥 떠다니던 그런 생각들 또는 어떤 가능성들이 이런 분야들을 만나면서 아주 견고하게 응집되는 느낌을 받을 수 가있고 그때 느껴지는 그 지적 짜릿함이 저는 굉장히 크더라고요 그런데 중요한 것은 제가 생각하기에 순서입니다 처음부터 방금 보셨던 디자인패턴, 데이터 스트럭쳐 또 알고리즘 이런 것들을 여러분들이 공부하는 것이 나쁜건 아니에요 너무나 좋은 건데 제가 생각하기에 이렇게 공부를 처음부터 저런 학문적 성취들을 접하게 되면 제가 걱정되는 것은 무엇이냐면 잘 이해가안가는 것도 문제겠지만 무엇보다도 문제는 공감하기가 어려울수가 있습니다

왜냐하면 저런 학문적 성취들은 거대한 데이터 늘 효율적으로 처리하기 위해서 아니면 무언가를 빠르게 처리하기 위해서 아니면 엄청나게 많이 늘어난 이 코드를 그래서 생긴 그 코드에 복잡도를 줄이기 위해서 그리고 많은 사람이 프로젝트에 참여할 때 발생하는 수많은 문제들을 낮추기 위해서 고안된 방법들이라는 것이죠 저러한 방법들을 공감하기 위해서는 저 방법을 고안한 사람들이 느꼈던 그 절망감을 여러분들도 느낄 필요가 있다는 것이죠 그래야지만 이러한 공부들이 그냥 지루하게 아주 평면적으로 보이는 것이 아니라 그 안에 그 학문들 속에 들어있는 그 리듬감 아니면 그 도도하게 흐르는 그 흐름들 그런 것들을 경험하면서 무슨 대하드라마를 보는 것처럼 정말 재미있게 공부할 수 있거든요 그래서 제가 얘기하고 싶은 것은 우리가 처음부터 꼭대기층으로 도약할 수는 없어요 일단은 그 다음 도약지점으로 도약하고 그러면 그 다음 지점에서 다음 지점에 도약지점이 보이잖아요? 그럼 거기를 또 올라가고 올라가고 이런 식으로 차근차근 차근차근 올라가다보면 어느 순간에 자기가 생각하기에는 꼭대기라고 생각했던곳에 올라와있을 수도 있고 알고보니까 거기가 꼭대기가 아니라 거기도 그냥 도약지점중의 하나였을 뿐 일수도 있는것이죠 자 그렇게 해서 이번시간에는 우리가 어떻게 프로그래밍을 공부하면 좋을까 또 어떻게 프로그래머로서의 그 뭐랄까요 경험을 쌓아가는 것이 좋을까에 대한 저의 어디까지나 주관에 담아서 이야기를 해왔습니다 이거는 저의얘기고 저도 이걸 잘하고 있는 사람이 아니고 아 나도 이렇게 해봐야겠다 라는 생각에서 여러분들이랑 같이 이야기를 해본것이기 때문에 자신의 방법을 찾으셔야해요 그리고 그 방법을 찾는 것을 게을리해서는 안된다고 저는 생각합니다