수요일, 12월 05, 2012

[B급 프로그래머] 하루 안에 배울 수 있는 몇 가지 유용한 (컴퓨터) 기술이 무엇일까요?

Quora를 읽다가 "하루 안에 배울 수 있는 몇 가지 유용한 (컴퓨터) 기술이 무엇일까요?"라는 질문이 올라와서 들어다 봤는데 재미있는 대답이 올라와서 간단하게 번역해봤다.

  • Git(또는 Hg)와 Github 활용법 배우기
  • SVN 활용법 배우기
  • 간단한 정규 표현식 배우기
  • 프로그래밍 면접 질문이 담긴 사이트 방문하기. 답을 제대로 할 수 있도록 연습하자.
  • 웹 페이즐 방문해 기초 자료를 추출하도록 크라울러(웹 로봇)을 설정하자.
  • 선형 대수 라이브러리를 프로그램하기(행렬, 벡터, 곱셈)
    • 특이값 분해(SVD) 기능 추가하기
    • 역행렬 기능 추가하기
    • 최소 자승법으로 회귀 기능 추가하기
    • 흩어진(sparse) 자료를 효율적으로 다루도록 라이브러리 구축하기
    • 파이썬(또는 루비)으로 리스트 표현법 익이기
  • 좋아하는 프로그래밍 언어의 멋진 매뉴얼을 읽자. 과거에 파이썬 때문에 시간을 날렸는데, Counter 자료 구조가 존재한다는 사실을 몰랐기 때문이다. Counter처럼 Dict를 사용하는 바람에 버그에 시달렸다. 이런 사례가 제법 많을 것이다.
  • 스택 오버플로 계정을 얻어 사이트 활용법을 배우자. 영어를 아는 프로그래머가 스택오버플로를 모르면 뭔가 잘못된 것이다.
  • 직접 단순한 기계 학습 알고리즘을 구현한다. csv로 입력 받아 훈련하도록 분리해 테스트 집합을 구축하고, 쉽게 변경 가능한(또는 탐색 가능한 하이퍼파라메터를 사용한) 단순한 알고리즘을 돌려 적절한 통계를 출력하도록 만든다.
  • Excel로 단순한 선 그래프 작성법 익히기. 결과를 제대로 얻었는지 확인한다(적절한 축, 단위 표기)
  • Excel 이외 다른 방법을 사용한 단순한 선 그래프 작성법 익히기. 결과를 제대로 얻었는지 확인한다
  • 자기가 자주 사용하는 언어에 대해 이클립스를 설치하고 각 언어별로 'Hello world'를 성공적으로 작성할 수 있는지 확인하기 (장래 시간을 크게 절약해줄 것이다)
  • NoSQL 데이터베이스의 기본 기능 익히기(mongoDB는 하루 안에 상당량을 배울 수 있다)
  • SQL의 가장 단순한 기능 익히기(쿼리 전문가가 될 필요는 없다)
  • HTML이나 XML을 제대로 파싱하는 도구 익히기
  • 리스트의 리스트로 그래프 자료 구조를 구현하기
  • 페이지 랭크, 클러스터 상관 계수 탐색, 공통 이웃 개수 찾기를 구현해보자.
  • BFS(너비 우선 탐색), DFS(깊이 우선 탐색), 최단 경로, 최소 신장 트리. 알고리즘 배경 지식이 없다면 며칠을 투자해도 좋다.

경험과 경력이 풍부한 개발자 분들께서 상기 내용 이외에 혹시 후배 개발자분들께 전해주고 싶은 좋은 팁이나 힌트(물론 하루 안에 실천이 가능해야 한다.)가 있으면 댓글 부탁드리겠다. 어느 정도 쌓이면 내용을 정리해 블로그로 올려드릴 계획이다(물론 어느 분이 추천했는지 credit과 함께).

뱀다리: 개인적으로는 자신이 가장 잘 아는 프로그래밍 언어의 기본 라이브러리가 어떻게 구현되어 있는지 코드를 읽는 방법을 적극 추천한다. 특히 평상시에 매뉴얼을 봐도 오락가락하는 클래스나 API에 대해 코드를 직접 보면 실력이 엄청나게 늘어난다. 루비와 같은 스크립트 언어라면 아예 라이브러리 코드가 기본으로 설치되므로 특별히 준비할 내용도 없기에 조금만 신경을 쓴다면 하루 동안 많은 내용을 배울 수 있을 것이다.

EOB

댓글 2개:

  1. '사용하는 에디터의 한단계 위 기능을 익힌다'? 위에 언급되지 않은 것을 찾자니, 궁색한 대장장이의 답 같네요.

    답글삭제
  2. 저도 개발자는 아니지만 나열된 목록들에 대해 한번쯤 공부해 보고 싶네요. +_+

    답글삭제