생산성을 높이기 위한 필수 규칙

  1. 무조건 editor가 아닌 IDE를 사용해야한다. pycharm을 쓸 때랑 sublimetext를 사용할 때의 생산성 차이는 압도적이다. (특히 refactor 기능)
  2. 무조건 local에서 바로 실행할 수 있어야한다. 즉시 응답하는 빠른 run이 가능해야만 손쉽게 디버깅을 할 수 있다. local run은 단순히 pytorch cpu에서 실행해도 전혀 상관이 없다. 서버에서 실행해야하는 경우도 가능하면 toy환경을 local로 가져오는 것이 좋고, 그마저도 힘들다면 sftp를 이용해서 remote의 코드를 pycharm으로 수정하도록 한다. 기계학습의 경우 데이터의 아주 일부분이라도 프로젝트에 내장시켜서 local run이 가능하게 해야한다.
  3. 개발 환경을 docker로 한 번 감싼다. 그래야 다른 환경에 쉽게 옮길 수 있다. docker commit을 이용해서 현재 환경을 복사하면 되기 때문이다.

개발도구의 기본 개념

IDE(Integrated Development Environment)

Text editor + compiler + debugger가 합쳐진 코딩 전용 프로그램이다. IDE를 사용해야 Refactor기능 등에 있어서 훨씬 편리한 코딩이 가능하다.

ex) PyCharm, VSCode, Visual Studio

TextEditor

메모장의 매우 고급화된 버젼으로 볼 수 있다. 대표적인 예로 아주 기능이 뛰어난 Sublime Text 3라고 할지라도, 기능이 제한적이다.

ex) Sublime Text 3, Notepad ++

Jupyter나 Notepad++의 한계

서버에 있는 python 코딩을 Jupyter로만하다가 한계를 느끼고 PyCharm을 도입하기로 했다. 우선 주피터를 사용해서 웹으로만 코딩을 하면, 찾기 기능이 잘 안되고, 한번에 이름을 못바꾸고, 탭키 사용이 제한적인 등 많은 불편함이 있다.

Notepad++의 경우 직관적이고 쉬운 사용법이 강점이지만 체계적인 프로젝트 관리와 ssh를 직접실행할 수 없는 단점이 있다. 이에 PyCharm의 경우 제대로 설정만 한 번 해놓으면 거의 모든 작업을 다 할수가 있다.