주변에 보면 일 안하면 불안해하고 이런 건 아닌데
이상하게도 일을 존나 하는 놈들이 간혹 있다.
일을 즐기는 건데, 이게 바로 적성이다.
적성에 맞는 다는 건 남들이 보기엔 하기 싫은 '일'인데
자기한텐 그게 일로 안느껴지는 거 그게 적성이다.
남들이 싫어하는 일일 수록 그렇다.
근데 좋아하는 일로 밥 벌어먹고 살다 보면 그것도 일처럼 느껴진다.
그땐 슬럼프가 시작되는 거다..
이게 바로 "천재는 노력하는사람을 이길수없고, 노력하는사람은 즐기는자를 이길수없다."는 말의 의미다.
즐기는 새끼는 천재+노력+적성이란 말이다. 여기서 최소한 노력+적성이라도 맞아야지 안맞으면 때려치는 게 답이다.
실력주의의 직종인데 적성이나 재능 둘 중에 하나가 없으면 포기하는게 답이다.
어려운 프로그램을 짜는 것에서 일말의 성취감도 느끼지 못한다면 딴 길을 알아봐라.
(어려운 프로그램이란 복잡한 기능을 구현하는 것을 말하지 지저분한 코드를 말하는 것이 아니다.)
"난 프로그램을 짜는 것이 좋아"라는 사람들은 혹시 수학을 좋아하는 지 생각해봐라.
단호히 말해서 수학을 싫어한다면 제대로된 프로그래머가 될 거라는 생각은 절대로 하지마라.
여기에 강력히 반발하는 프갤러들도 있을 텐데 "아니 내가 프로그래밍하는 걸 좋아하는데 니 말대로면 적성이 있는 건데 뭔 개소리냐"
두가지 문제가 있다. 첫째로 수학이란 용어가 지칭하는 것은 무엇인가? 고등학교에서 처럼 계속 풀어보고 유형을 외워서 문제를 푸는 것을 말하는 것이 아니다.
어려운 기호, 어려운 수식? 그것이 의미하는 바도 모르는 채로 공식을 암기해서 써먹는 것을 말하는 것이 아니다.
진정한 의미에서의 수학이라는 과목이 아닌 학문을 싫어하는지를 잘생각해봐라.
둘째로, 이제 여기가 중요한 대목인데 프로그래밍은 수학 그 자체다. 어려운 코딩을 해본 사람들은 다수 동의할 것이다.
그래서 프로그래밍을 좋아하면서 수학을 싫어할리는 없다. 서로 엇갈린다면 둘 중 하나에 대해 잘못 이해하고 있는 것이다.
프로그래밍이 좋은데 수학이 싫다면 프로그래밍의 본질을 모르고 아직 제대로된 프로그래밍을 못하고 있다는 의미고
수학은 좋아하는데 프로그래밍이 싫다는 경우도 그 수학이 본질적인 의미의 수학을 말하는 것인지와 프로그래밍에 대해 잘 이해하고 있는지를 확인해봐야한다.
즉, 결국 자기가 '진짜' 수학(시험을 위한 암기식 주입식이 아닌 수학)을 좋아한다면 자신의 프로그래밍에 대한 적성은 거짓이 아니라는 것이고
그래도 수학이 싫다면 절대로 제대로 된 프로그래머는 될 수 없다. 원근법 같은 기법을 모르면 미술을 제대로 할 수 없듯이 프로그래밍에서도 마찬가지다.
그렇다면 그냥 때려치는 게 답이다. 프로그래머는 수학을 잘해야 한다. 잘하지 못해도 좋아해야 한다. 코딩이란 어떠한 기능을 구현하거나 출력 되는 어떤 값을 구하는 것이다.
수학이랑 아주 똑같다. 문제를 보고 이해하고 패턴을 보고 어떤 개념을 써야할 지 구상하고 써내려간다.
결국 수학()을 싫어하면 프로그래머를 때려쳐야 한다는 말에 대해 기분이 나빴다면 프로그래밍에 대한 개념이나 수학에 대한 개념을 잘못 받아드리고 있다는 것이다.
주변에 프로그래밍 재밌다고 해도 사람들은 미친놈이라고 하는데 프로그래밍이 뭔지도 수학이 뭔지도 모르는 놈들이다. 그냥 무시해라.
근데 한가지 중요한 점은 노는 게 프로그래밍 보다 좋다고 해서 적성이 없는 건 아니다. 좋아하고 덜 좋아하고의 차이일 뿐이다.
근데 프로그래밍이 이렇게 즐겁다는 인식을 할 수가 없게 되었다면 다시금 초심으로 돌아가야할 때가 온 것이다.
초심으로 돌아가는 방법은 흰때를 매는 것이다. 새로운 것을 배워라. 검은띠란 본래 흰때가 검은 때가 묻어서 변해가는 것이다.
검은띠만 매고 다니면 검은띠는 색이 바래져서 흰띠가 되어버린다. 이것이 무술인이라면 더 멋있고 그게 변하는 영역이 아니라 더 좋지만
시시각각 변해가는 IT업계에서는 치명적인 문제다.
결국 좋은 프로그래머(현직에 남는 프로그래머)는 프로그래밍을 즐겨야하고 수학을 좋아하며, 흰띠를 매는 프로그래머가 좋은 프로그래머다.
흰띠를 안매면 도태 되고, 맨다고 잃어버리는 것은 아니니, 새로운 것을 거부하지 마라. 새로 배울때의 불안함과 복잡함 어려움.
지금 쓰고 있는 기술은 처음에 안그랬나? 꼰대들이 자기는 늙어서 어쩌고 저쩌고... 이거 다 거짓부렁이다. 그냥 자기 플랫폼이 이제 완성이 되었는데
이걸 버리자니 바뀌는 과정에서 본래 ㅡ 이렇게 갈 곡선이 v로 가게 되는 잠깐의 침체가 무서워서 피한 거다.
(참고로 지능은 나이가 들수록 높아진다. 근육도 써서 떨어지는 것 보단 운동부족으로 약해지는 것이 더 큰 비율을 차지한다.
노화 자체가 없다는 주장은 아니다. 다만 지능이 낮아 지는 이유는 노화가 아니다. 노화로 유전자가 망가져서 그런 것이 아닌 이상에야 머리는 쓸 수 록 좋아진다.
폰 노이만도 암으로 죽을 당시 지능은 젊은 시절 보다도 최고였다. 중년이 기억력이 낮은 원인은 두가지다. 머리를 안써서 대가리가 후달려져서 후달려지니
더 안써서 더 후달려지는 것 때문이고 두번째 이유는 지능과 관계 없이 나타나는데 사전의 두께가 두꺼울 수록 정보를 찾기가 어렵다.
기억해내는데 뇌에 정보가 많아서 시간이 걸리는 것이다. 하지만 대가리를 항상 풀가동 했다면 뇌의 회전 속도가 빨라져서 기억 속도가 실질적으로 유지된다.
사실 엄청 어려운 문제(나는 누구인가가 아니라 P-NP 문제 같은 난제나 머리가 아픈 추론)들을 생각하고 살아왔다면 기억력은 오히려 올라간다.
다만 어떤 병에 의해 치매가 온다면 이건 어쩔 수가 없다..)
여튼 결론은 적성이 없으면 때려치고 자기가 일처럼 안느껴지는 일을 해라 그게 너의 적성이다. 그게 만약 프로그래밍이라면 이제부터라도 수학을 해라
애초에 프로그래밍을 계속할 수 있다면 둘 중 하나다. 코딩을 하면서 지능이 올라가거나, 아니면 처음부터 머리가 좋던가.
근데 새로운 것을 받아들일 수 없고 기존의 것만 한다면 대가리는 병신이 될 것이다.
지금 당장 수학에 대해 알아보고 공부해라. 하지만 될 수 있으면 어려운 프로그래밍 책을 사라 분명히 수학이 들어 있을 것이다.
만약 당신이 지잡이고 이산수학이나 공수와 같은 수학이 어렵다면 고등수학을 선행해라. '수학독본' 같은 책이 좋다.
기본을 모르면서 공수 같은 걸 하니까 잘 못하는 거다. 개념만 알면 된다. 문제집을 풀라는 것도 아니고 개념을 이해하란 것이다.
고등수학은 알고 공수 같은 걸 배울 필요가 없다면 어려운 책들을 읽어라. 유명한 고전들을 읽는 것이 좋다.
Code Complete
The Pragmatic Programmer
C Programming Language (2nd Edition)
Refactoring: Improving the Design of Existing Code
The Mythical Man-Month
Code: The Hidden Language of Computer Hardware and Software
Head First Design Patterns
Programming Pearls
Effective Java (2nd Edition)
or Effective C++
Test Driven Development: By Example
이 책은 기본이다.
Introduction to Algorithms (CLRS)
Compilers: Principles, Techniques, and Tools (the Dragon Book).
The Art of Computer Programming (TAOCP)
Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four)
The C++ Programming Language
이 책들은 어려운 책이다. 물론 위에 책들도 대게 어려운 책이다. 이외에도 컴공 관련 '수학' 책들도 많다.
이산수학 쪽을 뒤져봐라.
C 언어를 공부한다면 왜 1 < a < 10 이라는 표기는 쓰면 안되는지와 같은 내용은 알아야한다.
프로그래밍은 어려운게 기본이다.
음 재밌겠다 읽어봐야지
항상 생각하는거지만.. 수학이 프로그래밍에 필수적인가 라고 묻는다면 대답이 참 애매한것같다. 하지만 항상 수학을 잘하고싶다. 어려운 프로그램을 만들때마다 수학은 재밌고, 편리하며, 필수적이라고 느끼게된다.
ㄴ 프로그래머라면 여러가지 스킬을 많이 익힐 수 있으면 장땡이지만 수학이 그런 스킬을 늘려주는 가장 빠르고 가장 효율적인 수단이기에 필요하다는 거고. 만약 컴퓨터공학자가 될 거라면 수학은 무조건 필요하고