프로그래밍을 다시 시작한다면 무엇부터 공부할거 같으세요?

2013-11-27 09:51

학문에는 관통하는 지식이 있을 것이라 생각합니다. 나는 10년 이상을 프로그래밍으로 밥을 먹고 살고 있지만 아직까지 그 관통하는 지식을 찾지 못한 듯 해요. NEXT의 모 교수님은 프로그래밍의 가장 기본이 되는 지식은 '이산 수학이다.'라고 이야기했는데요.

만약 지금까지 프로그래밍을 해본 선배 개발자로서 다시 프로그래밍을 처음 시작하는 입장으로 돌아간다면 무엇부터 공부하고 싶은가요? 그 주제를 선정한 이유는요?

무엇인가를 공부하는 방법에는 여러가지가 있을 겁니다. 주제를 선정했으면, 그 주제를 어떻게 공부할 것인가가 있는데요. 어떤 방식으로 접근하시겠어요.

코딩을 지탱하는 기술의 칼럼에서는 다음과 같이 이야기하고 있네요.

'무엇을 배우면 좋습니까?' 이는 자주 듣는 질문이다. 이 질문에 대답하기 전에 우선 한 가지를 물어보고 싶다. '여러분은 무엇을 만들고 싶은가요?' 목적이 명확하지 않으면 최선의 방법 또한 가르쳐줄 수 없다.


정보는 방대하다. '어쨌든 전부 다 한 번은 공부해보자'는 전략은 어리석다. '무엇을 배울지, 무엇을 배우면 좋을지'를 정할 때 필연적으로 지표가 될 수 있는 것이 '무엇을 만들고 싶은가?', 즉 목적을 명확히 하는 것이다. 그리고 목적을 달성하기 위해 필요한 것부터 배우면 된다.


'무엇을 만들까?'를 결정할 수 없다면, 혹시 처음부터 완벽한 것을 만들려고 생각하고 있는 것은 아닌지 고민해보자. 누구도 생각한 적이 없는, 모두를 만족시키는 것을 만들려고 생각하고 있지 않은가? 처음부터 굉장한 것을 만들려고 생각해서 오히려 손도 대지 못하고 있다면, 시간이 흘러도 굉장한 것을 만들 수 없다. 우선은 간단한 것도 괜찮으니, 무엇이라도 만들어보자. 그 과정에서 '나는 이것을 할 수 있어', '이것은 아직 어려우니까 공부할 필요가 없어' 등을 알 수 있게 된다. 이 과정을 반복해가면 보다 복잡한 것을 만드는 능력이 몸에 베게 된다.

무엇인가를 배운다는 것은 참 힘든 일이라는 생각을 합니다. 특히 지식이 점점 더 방대해지는 현 시점에서는 더 그렇고요. 여러분은 어떻게 생각하십니까?

0개의 의견 from FB

14개의 의견 from SLiPP

2013-11-27 10:23

저는 이론 공부보다 코딩부터 시작했었는데요. 그 후 코딩을 하면서 부족함을 느끼는 부분을 부가적으로 공부해나갔던 것 같아요. 만약 다시 공부를 하게 되도 저는 코딩부터 많이 해보지 않을까 생각합니다. 그리고 나서 코딩 경험을 바탕으로 해서 제가 무엇을 더 잘 알아야하는지를 파악하고 공부할 것 같아요. 약간 귀납적인 접근이라고 할 수 있을 것 같아요. 다만, 이것에 단점은 학습의 폭이 경험에 의존하게 된다는 점인 것 같아요. 하지만, 반대로 제가 무엇을 목표 없이 공부했을 때 시간을 투자해 쌓은 지식이 몇개월 뒤 거의 사라지는 경험도 많이 해보았던 것 같네요.

지식이 방대해지는 문제는 이렇게 생각해요. 삼국지에 보면 유비가 공손찬과 함게 노식 산하에서 공부를 하던 시기에 유비에 대한 인물평이 어떻게 나오냐하면, 세부적인 것을 다 밝게 알지는 못해도 중요한 맥을 잡는 능력은 유비가 뛰어났다고 나와요. 요즘 같이 많은 지식이 쏟아져 나오는 시대에 이런 능력이 필요한 것 같습니다. 정말 똑똑해서 모든 것을 다 밝히 알면 물론 나쁠게 없겠습니다만, 저를 비롯한 대게의 사람들은 역량의 한계가 있다고 생각해요. 그럴 때는 본인이 배울 수 있는 게 10 정도라고 하면 10을 어디에다가 투자하는 게 굉장히 중요한 요소가 될 것 같아요. 그래서 적은 역량을 어디에 투자하냐고 고민해볼 때 유비와 같이 맥을 잡는 데 투자하는 게 좋지 않나 싶습니다. 맥을 잡고 있으면 나중에 필요할 때 대략 어떻게 접근해야 할지는 아는 셈일 것 같고요. 예를 들어 요즘 많은 사람들이 좋아하는 Big Data도, 대략 어떤 개념이고 어떨 때 사용할 수 있을지 정도만 알고 있는거죠. 다만, 위에 인용대로 어떤 목적에 의해서 무엇을 시작한다면 맥을 잡는 것을 뛰어넘어 상세하게 보고 파악하는 것도 필요할 것 같아요. 예를 들어서 본인이 HashTable이 탐색할 때 빠르다 정도만 알고 있었고 HashTable을 실무에서 쓰게 되었다면, 어느 순간에는 HashTable이 어떻게 되어있길래 탐색할 때 빠른지를 공부한다던지 이런 게 필요하지 않을까 싶습니다. 이렇게 반복해나가다보면 충분한 경험과 더불어 필요한 지식도 쌓을 수 있지 않을까요?

관통하는 지식은 개발 뿐만 아니라 다른 영역에서도 찾을 수 있는 것 같아요. '나누어 해결하기' 같은 것도 저는 관통하는 지식이라고 생각하는데요, 이는 소프트웨어에서만 쓰이는 것 같지는 않아요. 회사 조직도를 보면 여기서도 역시 나누어 해결하기가 사용된다는 것을 볼 수 있는 것 같아요. 그래서 저는 최근에는 제한을 두지 않고 무엇이든 배우려고 노력해보고 있어요. 문학이든 철학이든 역사든 예술이든 기회 닿는대로 읽어보고 그것을 통해서 무엇가 배우려고 하는것인데요. 이는 제가 굉장히 좋아하는 개념인 르네상스 엔지니어를 목표로 삼다보니 그렇게 되는 것 같습니다. 한정 된 시간을 이런 쪽에 투자함으로써, 이후 개발 경쟁력이 떨어지는 결과가 생길지도 모르겠습니다. 다만, 한번 시도해보는 것은 나쁘지 않은 것 같아요. 나중에 진짜 안 되겠다 싶으면 다시 개발만 열심히 공부하면 되겠지라고 편하게 생각하고 있습니다.

비가 몇일 째 계속 오네요. 형 그럼 오늘도 즐거운 하루 보내세요.

2013-11-27 10:28

개념을 배워야 된다고 생각해요~ 언어가 사고를 지배하고, 그 언어에는 그 것만의 개념이 있으니까. 언어에는 공통 개념이 있고, 각 언어에 따른 특화된 개념이 있구요. 대학에서.. 그 개념에 대해 논하는 데는 얼마 없더라구요..^^;

과연 프로그래밍 언어가 중요할지, 알고리즘이 중요할지, 설계하는게 중요할지, 프로젝트 하는게 중요할지. 이러한 단어들에 대한 범위와 개념에 대해 명확히 알고 들어가는게 좋을듯해요.

이걸 무턱대고 배우라고 하면 이론이라 재미 없겠죠.

그래서 다시 시작한다면, '무작정 프로젝트 1회 완료 및 실패하기'을 주고 싶어요 ㅋㅋ 그 실패에서 본인이 무얼 해야 되는지, 자신이 무엇을 원하는지 발견 할 것 같습니다. ㅋㅋ

  • 페북 링크 타고 왔다가~~ 남겨요~
2013-11-27 13:48

코딩과 전산 기초 이론을 병행하면서 하되 코딩에 흥미를 잃지 않는 수준에서 적절하게 이론과 실습을 병행해야 한다고 개인적으로 생각합니다. 코딩과 이론을 병행해야 하는 이유는 굳이 말하지 않아도 다들 동의하실거 같구요. "흥미를 잃지 않는 수준에서" 라는 기준을 둔 이유는 주변에 전공을 하다가 중도에 포기하는 사람을 보면 흥미와 적절한 난이도???가 조화를 이루지 못해서 아닌가 하고 생각했었거든요.

2013-11-27 20:28

정말 다양하네요. 개개인의 경험에 근거해서 의견을 주셨기 때문에 다양할 수 밖에 없다는 생각이 드네요.

개인적으로는 어디부터 시작하느냐는 그리 중요하지 않을까라는 생각을 해봅니다.

자신에게 맞는 학습 방법을 찾는 것이 1차적으로 중요하다는 생각을 하고요. 이 학습 방법을 찾는다면 평생 동안 지치지 않을 속도로 꾸준히 학습하는 습관을 만드는 것이 중요하다라는 생각을 합니다. 프로그래밍이라는 것이 즐기지 않으면 할 수 없는 영역이기 때문에 즐기면서 했으면 합니다.

그래도 한 가지 꼽으라면 @Fritz Lee 님이 이야기했듯이 국어에 한표 던지고 싶네요. 국어에서도 특히 듣기와 글쓰기에 대한 연습을 했으면 좋겠다는 생각을 합니다.

평생 동안 공부하며 살아야 되는데 힘들 때도 있겠지만 즐기면서 꾸준히 학습하는 습관 만들어 보는 것 어떨까요?

2013-11-27 23:54

분야에 따라 다르겠지만, 러프하게 구분해보면

프로그래머, C/C++/Asm 그리고 공학적 지식 개발자, 좋아하는 것부터 시작해도 되지 않을까 하고, 도메인 지식과 여러 IT 경험이 많으면 좋을 것 같아요. 코더는 특기는 아니지만 취미 이상으로 손이 가는대로 맘이 가는 대로 ^^

2013-12-03 20:33

저는 더 많은.. 다양한 경험을 추천하고 싶습니다. 어떤걸 만들고 싶은지.... 무엇을 하고 싶은지.... 기술보다 내가 하고 싶고 필요한 것이 무엇인지?? 나아가 다양한 문화를 가진 많은 사람들이 필요한 것이 무엇인지 보고 느끼는 것이 가장 필요하다고 봅니다. 좀더 어릴때.... 고정관념으로 머리가 굳어지기 전에...... 자유롭게 생각하는 법을...

그 후에 만들고 싶은 것을 찾았을때 공부하고 협업하겠습니다. ^^

2014-03-17 14:34

예전 제 자신에게 했던 질문이 생각나네요 고3으로 돌아간다면 정신차리고 공부할 수 있겠는가. 한 집안의 가장으로 제 자식에게도 이러한 공부를 강요(?)하게될 입장일 수 있으나.. 지금 다시 생각해봐도 답은 아니요 라고밖에 못할 듯 싶습니다.

요점은 컴퓨터를 시작하고 프로그래밍을 시작하게 된 계기가 세계최고의 프로그래머가 되겠다는 생각도 아니였고(국민학교 다니던 시절 GW-basic 하는데 무슨 다른 생각이 있었겠나요) 이 컴퓨터로 일확천금을 벌어보자고 시작한 것도 아닌. 단순 가지고 만들고 노는게 재밌어서 였죠.

이산수학 영어 인문학. 제가 컴퓨터를 시작하면서 처음으로 질문했던 말이

"이 게임 하는 암호가 뭐에요?" 였습니다.

그 말 한마디로 시작해서 벌써 인생 절반이상을 컴퓨터와 함께하네요. ^^; 결론은 좋아서 하지 않는다면 의미가 없다고 생각합니다. 훙미가 충분하다고 가정을 한다면 수학적인 사고능력, 그리고 커뮤니케이션 능력 두가지를 먼저 학습하도록 권장하겠습니다.

2014-05-04 00:17

뜬금없지만 철학과 인문학을 먼저 공부하고 싶습니다.

추상적인 업무를 구체화 시키는 연결자 역할을 수행하고 있는사람들이 개발자라고 가정했을때

좀 더 다른 각도에서 자신만의 상상력을 발휘해서 개발한다면 정말 무서운 인재가 될 것 같습니다.

이미 상상력이 뛰어난 사람들이 이 세상을 움직이고 있으니까요..

2014-05-09 02:44

공부에서 카테고리를 정해야 한다면, 너무 많은게 나올 것 같습니다.

전 그래서 가장 먼저 필요한건 상상력이고, 그 상상력을 구체화할 수 있는 레이아웃을 잡는 방법이라고 생각됩니다...

고로 기획이 먼저가 아닐까 생각합니다.

2017-04-29 23:19

어떤것을 배운다기 보단 "주위환경 돌아보기" 가 가장중요한것 같습니다.

프로그래밍 경험이 있던 사람이 프로그래밍을 다시 시작해서 현재 나온 언어라던지 기술등을 습득하여 사용하는데 까지는 오래걸리진 않습니다.

하지만 정말로 '잘하고싶다' 면 주위에 방해요소들을 반드기 제거해야 하고 자기자신 스스로 훈련이 필요합니다. 아직까지 학생의 티가 묻어있기에 현재 프로그래밍을 전공하는 학생들에게 조언해주고자 합니다.

<방해요소 및 개선> 1. 소소한 약속들 : 코딩은 사간싸움이므로 중간중간 맥이 끉긴다면 잘할 수 없습니다. 약속과 모임은 크게 한방에 처리하고, 코딩에 시간을 많이 들여야합니다. 지금 좀 참고 나중에 코딩 잘하면 오히려 소소한 약속들 때문에 더 바빠질것입니다.

  1. 밥먹고 코딩만 해보기 : 이는 제가 사회적 관계가 나쁘다는걸 의미하진 않습니다.. 다만 진짜루 마치 연예인이 데뷔 전 음지에 있듯이 우리도 취업 전엔 1년정도는 밥만 먹고 코딩만 해보는게 좋습니다. '밥만먹고' 라는것에 오해가 없기를

  2. 의자에 장시간 앉기 : 컴퓨터랑 사귀어보자

  3. 사회는 흔히 '열심히'가 아닌 '잘해야'한다라고 하는데 코딩은 '열심히'가 더 큽니다.기본기부터 하나씩 올라가는게 중요하지 잘하고자만하면 '복붙개발자' 밖에 안됩나다.

의견 추가하기