This reposity has been abandoned. Please see https://ccss17.github.io/ProgrammerBase/readme/
이 레포지토리는 더 이상 관리되지 않습니다. https://ccss17.github.io/ProgrammerBase/readme/ 에 방문해주세요.
개발 공부를 하다보면 스택오버플로우의 답변을 한번쯤 참고해보셨을텐데요. 전세계 개발자가 바로 이 사이트를 통해 개발 관련 질문을 올리고 정보를 공유하고 있습니다.
이곳에서 질문에 대한 답변이 사용자들에게 채택되면 점수가 오르는데, 얼마나 공신력이 있는 곳이면 상위 1% 의 스택오버플로우 유저는 구글 입사가 프리패스된다는 말도 들은적이 있네요.
이 커뮤니티는 매년 전세계 개발자를 대상으로 설문조사를 하는데 이 서베이를 보면 트렌디한 기술이 뭔지, 나만 모르고 있던 좋은 기술이 뭔지 알 수 있습니다. 다음 링크를 통해 2019년 설문조사에 들어가보세요.
https://insights.stackoverflow.com/survey/2019
왼쪽 카테고리를 보면 여러 항목에 대한 설문조사를 한 것이 보이는데 다음과 같이 Technology 분야가 메인 디쉬라고 볼 수 있을 것 같습니다.
나머지 항목은 궁금하시면 더 살펴보셔도 되고 지금 이 시간에는 이 설문조사를 통해 전세계에서 가장 핫한 플랫폼과 에디터가 뭔지 알아보겠습니다.
설문조사에서 Platforms 항목을 찾아보면 다음과 같은 설문결과를 볼 수 있습니다.
개발자들에게 인기있는 플랫폼 1위는 53.3% 로 리눅스네요. 어제 배웠던 도커는 3위를 차지했는데 이는 스택오버플로우가 2019년에 처음으로 도커에 대한 설문조사를 한 결과라고 하니까 개발자들이 얼마나 도커에 주목하고 있는지 감이 오시나요? 전세계 개발자들이 이런 플랫폼과 기술들에 왜 사랑에 빠졌는지 몰라서는 안되기 때문에 꼭 배워봐야 합니다.
이제 Most Popular Development Environments 항목을 보면서 개발자들이 어떤 개발환경을 가장 좋아하는지 알아보겠습니다.
설문조사는 "모든 개발자", "웹 개발자", "스마트폰 어플 개발자", "데브 옵스" 를 대상으로 진행되었는데 "스마트폰 어플 개발자" 를 제외하고는 Visual Studio Code 즉, VSCode 가 1위를 차지했습니다. 심지어 "스마트폰 어플 개발자" 에서도 VSCode 가 Android Studio 와 매우 미세한 차이로 2위를 차지했으니, 전세계 개발자들이 VSCode 가 제공하는 개발환경에 얼마나 푹 빠져버렸는지 알 수 있겠죠?
여기에서는 좋은 정보나 최신기술을 어디에서 찾을까 에 대한 대답을 알아보겠습니다. 하지만 부족한 제가 알아볼 수 있는 한 알아보고 저만의 결론을 내린 것이기 때문에 이것들이 최선의 해답이 되지 않을 거라는 것은 명백합니다. 그러니 각자 제가 드리는 지식에 안주하지 말고 최신동향과 좋은정보에 예민해지려고 노력해야 합니다.
프로그래머만큼 최신기술과 좋은정보에 민감해야만 하는 직종은 없을겁니다. 그래서 프로그래머들은 각자의 분야에서 최신기술이나 좋은정보를 모아둔 Awesome Repository 를 만들기로 했고 다음과 같은 좋은 레포지토리들이 탄생했습니다.
보시면 아시겠지만 레포지토리의 이름들이 각각의 분야의 이름을 기반으로 규칙적으로 awesome-<분야> 라고 되어있음을 알 수 있습니다. 그렇다면 이러한 Awesome Repository 들을 내가 관심있는 분야에서도 찾고 싶은데, 도대체 어떻게 해야 할까요?
정답은 Awesome Repository 들을 모아둔 Awesome Repository 에 방문하는 것입니다.
| Awesome | Repository |
|---|---|
| Awesome | https://github.com/sindresorhus/awesome |
이 레포지토리는 Github 레포지토리의 스타가 470,793 개(2020/05/22 기준) 로 가장 많은 sindresorhus 가 Awesome Repository 들을 모아둔 레포지토리로써 이 단일 레포지토리에 스타가 약 134,000 개가 달려있습니다.
여기에서 각자 관심있는 주제나 분야, 툴들의 Awesome 한 정보들을 찾아보세요. 저는
https://github.com/carpedm20/awesome-hacking#readme
https://github.com/ChristosChristofidis/awesome-deep-learning#readme
에 관심이 있습니다.
https://awesomeopensource.com/
Hacker News 는 Paul Graham 이 만든 인터넷 커뮤니티로써 컴퓨터 해커에게 흥미로운 모든 것을 공유하기 위한 커뮤니티입니다.
단 여기서 "해커" 란 정보보안가를 뜻하는 것이 아니라 좀 더 포괄적인 의미로의 "해커" 입니다. 해킹이란 원래 무언가를 능수능란하게 다루거나 호기심과 지적욕구에 의해 컴퓨터와 네트워크를 탐험하는 행위라는 의미 였는데 여기에서는 이와같은 포괄적인 의미로 보아야 할 것 같습니다.
왜냐하면 해커 뉴스에는 컴퓨터 보안에 관련된 정보 뿐만 아니라 인공지능, 웹 개발, 게임 개발, 전자 회로, 수학 관련 글(선형대수학 관련 글이 꽤 올라옵니다), IT대기업(Google, Amazon, Facebook 등)의 최신동향 등등 정말 다양한 좋은 정보들이 많이 올라오기 때문입니다. 심지어 취업을 잘 하려면 어떻게 해야 하는지에 대한 글도 올라옵니다.
이렇게 좋은 정보들에 예민하게 반응한다면 자신이 있는 공동체에 좋은 정보를 공유함으로써 그 공동체가 한 단계 더 성장할 수 있습니다. 그 공동체가 동아리가 될 수도 있고 기업이 될 수도 있고 친구들이 될 수도 있습니다. 그렇게 되면 좋은 정보의 원천이 된 여러분이 사람들로부터 더욱 인정받게 되고요.
-
실제로 이 ProgrammerBase 를 만들게 된 계기와 아이디어를 MIT 의 Missing Semester 에서 착안했는데, 이것 또한 다음과 같이 Hacker News 에서 발견한 것입니다.
여러분이 이 ProgrammerBase 를 통하여 조금이라도 실력을 높힐 수 있었다면 제가 말했던 "공동체(고스트 동아리) 자체가 한 단계 성장" 하는 것의 실례가 되는 셈입니다.
-
Hacker News 에는 다음과 같이 Discord 가 Go 언어에서 Rust 언어로 갈아타게 된 과정에 대한 글도 올라왔었습니다.
실제로 글을 읽어보면 대충 Go 의 가비지 콜렉터보다 Rust 의 가비지 콜렉터가 Discord 에서 더 좋아보이더라 라는 결론으로 Rust 를 쓰게 되었다고 했습니다. 물론 Go 도 최고의 언어이고 분명 Rust 보다 더 효율적으로 사용되는 상황과 분야가 있을 겁니다.
여러분이 이러한 새로운 프로그래밍 언어에 대한 좋은 정보를 갖춘 다음 여러분이 하고 있는 프로젝트에 이러한 새로운 제안을 하게 되서 그 혁신으로 프로젝트가 조금이라도 더 개선된다면 여러분의 입지는 더욱 커지는 것이고 능력을 더 인정받게 될 겁니다. 그리고 여러분 한 사람으로 인해 프로젝트와 그 공동체가 더욱 발전하게 될 겁니다.
-
Hacker News 에는 다음과 같이 MS 에서 메모리를 혁신적으로 최적화하여 신경망 학습 시 메모리를 효율적으로 절약할 수 있는 기술에 대한 글도 올라왔습니다.
대충 microsoft/DeepSpeed 라는 것을 쓰면 신경망 학습이 5배배 빨라지고 메모리 효율이 최대 64배배 높아진다는 내용입니다. 심지어 PyTorch 와 호환된다고까지 하니까 만약 여러분이 PyTorch 로 진행되는 프로젝트에 참여중이라면 충분히 이런 정보를 공유할 수 있고, 여러분이 속한 공동체를 발전시킬 수 있습니다.
마지막으로 한 가지 사례만 더 들고 Hacker News 는 마무리 하겠습니다.
-
어느날 Hacker News 에는 다음과 같이 Can AI Become Consious? 라는 글이 올라왔습니다.
이 글에서는 정보통합이론(Integrated Information Theory) 를 소개하면서 핵심적으로 다음과 같은 사실을 설득하려 했습니다.
-
인과적 힘을 갖는다면 어떤 물리 체계일지라도 의식을 갖는다. 뇌의 뉴런이 다른 뉴런을 자극하여 촉발시키는 것 또한 인과적 힘의 예시라고 볼 수 있고, 컴퓨터 회로에서 트랜지스터가 다른 트랜지스터에게 자극을 주는 것도 인과적 힘의 예시라고 볼 수 있다.
-
정보통합이론은 임의의 물리 체계가 얼마나 의식적인가 측정하는 방법 또한 개발하였고, 이것을 의학에 응용하여 뇌손상을 입은 환자나 식물인간이 얼마나 의식을 갖고 있는지 측정하기도 하였다.
-
정보통합이론은 의식이 인간에게만 존재하는 유일한 특성이 아니라고 말한다.
-
현재의 기계(컴퓨터)가 의식을 가질 수는 없으나 미래에 탄생할 기계가 의식을 갖게 되고 인간과 같은 지능을 갖게 될 것이라는 것은 의심할 수 없는 사실이다.
-
지능이란 행동에 관한 것이다. 가령 당신은 당신에게 주어진 환경에서 살아남기 위하여 어떻게 행동할 것인가? 그러나 의식이란 행동에 관한 것이 아니다. 의식이란 존재에 관한 것이다.
-
폰 노이만 구조로 구현된 표준적인 회로에서의 트랜지스터는 통상적으로 두 개 이상의 트랜지스터로부터 입력을 받고 두 개 이상의 트랜지스터에게 출력을 보낸다. 이것이 인과적 힘인 것은 맞지만 극단적으로 복잡한 인과적 힘을 갖고 있는 뇌의 약 860억개의 뉴런이 갖고 있는 인과적 힘과 명백히 다르다. 그러므로 폰 노이만 구조 위에서 실행되는 어떠한 인공지능이라 할지라도 그것은 인간의 뇌처럼 의식적이지 못하다.
만약 여러분이 인공지능 관련 프로젝트에 속해있고 이런 글을 읽었다면 인공지능이 의식을 가질 수 있는지에 대한 연구가 진행되어온 이 정보통합이론에 더 관심이 생겨서 "Integrated Information Theory" 나 "정보통합이론" 이라는 키워드로 검색을 하다가
이런 책들을 찾아보았을 수도 있습니다.
-
레딧은 매우 광범위한 주제와 커뮤니티가 존재하는 거대 커뮤니티이지만 프로그래머들 또한 레딧에서 상당히 큰 생태계를 만들고 그곳에서도 매우 좋은 정보가 공유되고 있습니다. 여기에서는 가볍게 몇가지 서브레딧만 알아보고 나중에 여러분이 개인적으로 마음에 드는 서브레딧을 찾아보세요.
Github trending 은 현재 Github 에서 가장 핫하고 트렌드한 레포지토리가 올라오는 곳입니다. 이곳에서도 좋은 정보를 많이 얻을 수 있습니다. 왜냐하면 전세계의 개발자들이 최근동안 가장 관심을 기울이고 있는 레포지토리들이 올라오기 때문입니다.
여기에서 마음에 드는 레포지토리의 Star 버튼을 누르면서 관심있는 레포지토리들을 Your stars 페이지에 모아두세요. 이렇게 Star 버튼은 추천 뿐만 아니라 즐겨찾기 기능도 있는 것입니다.
매년 하는 Stackoverflow Survey 도 좋은 정보를 얻을 수 있는 소스가 됩니다. 하지만 이미 다뤘기 때문에 넘기겠습니다.
영어로 검색해야 좋은 정보를 얻을 수 있습니다.
이것은 너무 당연하지만 한동대학교에 처음 입학한 새내기도 GBC 를 수강하므로 다시 한 번 영어 검색을 강조하겠습니다.
이것은 너무 당연한데 한글로 검색하면 대한민국 인구가 5천만명에 불과한 반면 영어권 화자 인구는 약 11억명 입니다. Google 은 페이지 순위 매기기 알고리즘 으로 여러분이 검색하는 키워드로 필터링 된 웹 페이지 중에서 사람들이 가장 많이 방문할 것같은 페이지 순서대로 검색 결과를 나열합니다. 그러므로 영어로 검색하면 11억 명의 거대한 집단지성이 도출한 가장 가치있는 결론을 Google 이 맨 위로 올려서 보여줍니다.
이제 질문을 바꿔보겠습니다. 만약 여러분이 한 회사의 사장이라면 5천만명 중에서 1등한 사람을 뽑겠습니까, 11억명 중에서 1등한 사람을 뽑겠습니까. 이 질문에 대한 대답은 객관적으로 당연히 11억명 중에서 1등한 사람을 뽑아야 합니다.
또 다시 질문을 바꿔보겠습니다. 그러면 11억명 중에서 1등인 그 사람이 영어를 쓰는데 나는 영어를 못해서 말이 안통해서 같이 일을 못한다면 어쩔 수 없이 5천만명 중에서 1등한 사람과 일해야겠습니까, 아니면 영어를 어떻게든 극복한 다음에 11억명 중에서 1등한 사람과 일해야겠습니까. 사실 이건 개인의 가치관의 차이가 있기 때문에 객관적인 확답을 내리긴 어렵지만 저는 개인적으로 영어를 극복한 다음 11억명 중에서 1등한 사람과 일해야 한다고 생각합니다. 그러니까 제 개인적인 의견은 어떻게든 영어의 장벽을 극복하고 한글 검색 보다 영어로 검색하는 것이 좋은 것 같다는 의견입니다.
이것에 관한 건 순전히 경험적인 지식이므로 스스로 터득해야 합니다만, 제가 경험한 바로는 다음과 같이 검색하는 것이 가장 효과적이었습니다.
-
[플랫폼] [세부 플랫폼] [세부 사항]
- 가령 Python 코딩 중
numpy모듈의where함수가 궁금하다면 python numpy where 이라고 검색하는 것입니다.
- 가령 Python 코딩 중
-
[세부 플랫폼] [세부 사항] in [플랫폼]
- 가령 Python 코딩 중
numpy모듈의where함수가 궁금하다면 numpy where in python 이라고 검색하는 것입니다.
- 가령 Python 코딩 중
더 세부적으로는 다음과 같은 링크에 구글 고급 검색 명령어
https://www.spyfu.com/blog/google-search-operators/
https://support.google.com/websearch/answer/2466433?hl=en
등을 찾을 수 있는데 이것으로 검색하는 방법도 있습니다.
구글 검색 명령어가 얼마나 강력한지 검색만으로 개인을 해킹할 수 있다고 해서 구글 해킹 이라는 용어도 생겼습니다.
또 경험상 비교할 때는 플랫폼 대상 vs 대상 으로 검색하는 것이 효과적이었습니다.
경험적 지식이라는 사실을 계속 강조하는 것은 불확실한 지식이라는 것입니다.
- 가령 Python 코딩 중 기본 라이브러리인
random.random와 외부 라이브러리의numpy.random의 비교가 필요하다면 Python random.random vs numpy.random 이라고 검색해보는 것입니다.
검색할 때는 항상 원작자를 찾아야 합니다. 여러분이 기독교인이라면 세상과 인간의 원작자인 하나님과 성경을 찾을 것입니다. 갤럭시를 쓰고 있는데 그것에 문제가 생겼다면 그것의 원작자인 삼성을 찾아가야 합니다. 하지만 코딩할 때 문제가 생겨서 검색할 때를 보면 꽤 많은 학생들이 원작자의 공식 문서를 먼저 찾기보다 2차 창작물, 즉 블로그나 문답사이트부터 찾는 것을 볼 수 있습니다.
하지만 언제나 원작자의 공식 문서를 먼저 찾아보는 것이 순서입니다. 그것이 가장 정확하고 명료한 설명이기 때문입니다. 그런데 원작자의 글을 도무지 찾을 수 없거나 원작자의 글이 너무 어려워서 이해가 안되면 그 다음에나 2차 창작물, 즉 블로그나 문답사이트를 알아보아야 합니다.
-
가령 Python 에서
numpy를 사용하던 중where이라는 함수에 대한 이해가 필요해졌습니다. 그러면 Google 에 python numpy where 이라고 검색합니다. 그러면 Google 이 다음과 같이 원작자의 글 을 1등으로 추천해주는 것을 볼 수 있습니다.
근대 철학의 아버지 데카르트는 너무나도 명료하여 조금의 망설임도 없이 진리로 받아들일 수 있는 사실을 모든 지식의 토대, 즉 공리로 삼고자했습니다. 그것은 (1) "나는 생각한다. 고로 나는 존재한다." (2) "모든 현상은 원인을 갖는다." (3) "결과가 원인보다 거대할 수 없다." (4) "정신에는 완전성, 공간, 시간, 그리고 운동의 개념이 내재되어 있다." 입니다. 데카르트가 옳다면 두번째 공리 "모든 현상은 원인을 갖는다." 에 따라 어떠한 대상물이라도 그 원작자가 항상 존재합니다. 왜냐하면 그 대상물 또한 그것을 있게한 원인을 갖기 때문입니다. 그러므로 원작자가 존재하지 않을 수 없으니 검색할 때 언제나 원작자를 찾으려고 하는 것이 좋습니다.








