현실의 개발자는
(1) 어떻게 해야 할지 방법을 찾고(검색)
(2) 개발 툴을 이용하여 코딩한다(체화).
많은 사람들이 오해를 하는 것이 개발자는 프로그래밍 언어의 문법을 완벽히 외우고 있다고 생각하는 것이다. 경험상 90년대 초반까지는 개발자들이 그런 생각을 가졌던 것 같다. OS 환경과 프로그램이 단순했던 시기에는 프로그래밍 언어만 집중할 수 있었기 때문이다. 그렇기에 프로그래밍의 경력이 쌓일수록 문법이 완벽히 체화되었다. 참고로 당시에는 "라이브러리(엔진, 프레임워크, 등등)"가 지금과 비교할 수준이 아닐 정도로 적었기에 프로그래밍 언어 문법 외의 신경 써야야 할 것들이 별로 없었다.
그러나 윈도 프로그래밍(94년 기점)으로 넘어가면서 분위기는 달라지기 시작했다. 프로그래밍이 거대화되고 대량생산이 가능해지다 보니 수많은 API와 서든 파티(외부 회사)의 기술들을 접목하게 되었다. 그런 이유로 프로그래밍 언어의 중요성보다는 "개발환경과 구조"가 더 중요한 포인트가 되었다.
...
2000년 이후부터는 셀 수 없는 다양한 환경과 수많은 방법론(==공법)이 나오기 시작했다. 프로그램을 만들기 위해 프레임웍이나 기술구조 또는 기술 패러다임을 이해하지 못한다면 프로그래밍 언어 자체가 아예 의미 없는 시대가 시작되었다(C, C++ 언어를 안다고 Window나 모바일 프로그래밍을 할 수 있는 것은 아니다. java를 안다고 Server 프로그래밍이나 Android를 개발할 수 있는 것도 아니다.)
필요한 곳에 머리를 사용해야 한다.
1.
현대의 개발자는 다음과 같이 일한다.
"외우지 않는다"
"개발 툴이 알아서 만들어준다"
인터넷이 필수며 검색 능력이 매우 중요하다.
인터넷이나 툴이 알아서 해준다?
그러면 개발자의 핵심능력은 무엇일까?
개발 목적을 명확히 하고 필요기술을 판단(선택)
기술을 외우지 않되, 정확히 이해(학습)
필수 정보만 기억(기술구조, 기술 패러다임, 기초문법)
개발환경(IDE)을 체화(코딩 툴과 물아일체)
작업 정리
여기서 강조할 것이 작업 정리이다.
머리가 기억하지 않고 손이 기억한다.
2.
프로그래밍을 하려면 "머리 용량을 넘어서는 정보"를 가지고 있어야 한다. 그런 문제를 해결하기 위해서, 대부분의 개발환경(==개발 툴)이 불필요하게 반복되는 내용들을 자동완성시키는 기능을 제공한다. 문제는 여기에서 발생한다.
Android Studio에서 jetpack compose
"프로그래밍 언어가
머릿속에 있는 것이 아니라
개발환경과 손끝에 있다"
수년간 특정 언어로 프로그래밍을 했더라도 개발자가 애용하는 개발환경이 아니라면 갑자기 코딩이 힘들어질 때가 있다. 개발환경에 맞게 손으로 기억하고 있었기 때문이다. 그러다 보니 가장 기초적인 "템플릿 코드"조차 노트패드 같은 곳으로 쓰려고 한다면(개발자라면 이런 불필요한 짓은 하지 않지만) 막막해질 경우가 많다.
어딘가에 지금 기억을 저장해야 한다.
3.
개발을 할 때는 방대한 양의 데이터를 이용하다 보니, 지금 경험한 지식들을 머릿속에만 기억한다는 것은 "하루 종일 개발만 생각"하겠다는 것과 마찬가지이다. 그러므로 개발자들은 반드시 "기록 습관"이 있어야 한다.
자기가 만든 소스는 반드시 이해하기 쉽게 정리한다.
지금 만든 소스를 나중에 재활용해야 하기 때문이다.
문서화를 한다면 더 좋은 결과를 얻을 수 있다.
개발자들에게는 "백본 소스"라는 개념이 있다. 어떤 프로그램을 만들 때, 뼈대가 되는 소스코드를 말하는 데, 주로 자기가 이전에 만들어놓았던 소스를 "범용화"용으로 심플하게 만든 경우가 많다. 이런 소스를 만들지 않고 처음부터 만드는 경우는 많은 시간낭비와 이에 따른 스트레스를 받는다. 그래서 대부분의 개발자들은 자기가 경험한 소스코드를 "모아놓고(또는 라이브러리화)" 필요시에 가져다 쓰는 방법을 애용한다.
그렇기에 자기가 작성한 소스코드를
저장하고 관리하는 것은 필수적이다.
저장된 기억을 찾기 쉬워야 한다.
4.
저장을 잘해놓은 들, 찾기 힘들면 무용지물이다. 그러다 보니 검색이 잘되는 공간에 저장하는 것이 좋다.
일반적으로 git을 이용한 개발자 전용 저장소가 많이 사용된다. 대표적으로 깃 헙이 있지만, bitbucket, gitlab 등등 많은 서비스들이 존재한다.
git을 사용하는 서비스는 "공유"가 목적인 경우가 많다. 그러다 보니 자기만이 아니라 불특정 다수의 개발자를 위해서 소스코드와 문서를 정리하다 보면 어느덧 기술적으로도 성장하게 된다.
그리고 일반 블로그를 이용하여 기술 정리를 하는 경우도 많다.
개발자가 기술 블로그를 운영해서 좋은 점은
자신의 기술을 오랫동안 유지할 수 있다.
기술을 공유하여 개발자 브랜딩을 할 수 있다.
개발자 네트워크를 만들기 용이하다.
이다.