뒷북이긴 하지만 개인적으로는 기초가 매우 중요하다고 생각하는 사람으로써,
그 사람이 당장 반년후에 취직해야 한다거나 내일 당장 납기를 지켜야 한다는게 아니면
코드를 알려주는 대신에 기초부터 둘러 볼수 있도록 키워드나 학습 링크를 알려주는 것이 좋다고 생각합니다.
그런데 기초를 배우라는게 모든걸 다 직접 짜서 쓰라는 말은 아니잖아요...?
수학을 예로 들어서 게임 프로그래머를 하고싶으면 수학기초를 쌓는게 좋다고 말했다고 해서
해당 수식 함수들을 다짜서 쓰라는 말은 아니죠...
최소한 math.sqrt(4) 했을때 답이 2가 나오는 이유 정도는 알아야 하지 않을까요?
이것도 모른다면 디버깅은 어떻게 할까요?
sqrt 함수에 대한 입력이 옳은지, 출력값이 의도와 부합하는지 구분은 할줄 알아야 한다고 생각합니다.
사실 수학 이외에 다른 분야에서도 마찬가지죠,
아웃 오브 메모리 에러가 뜨는 이유가 메모리 할당후 해제를 안해서 그런건지,
혹은 지나치게 큰 입력값을 슬라이스 없이 사용해서인지 혹은 다른 시스템상 문제로
가용메모리가 적은건지 정도는 구분할수 있어야 할테고
TCP 레이어를 직접 구현하진 않더라도 자꾸 데이터가 끊기는게
리시브 윈도우 사이즈 문제인지, 혹은 버퍼 문제인지, 패딩문제인지, 네트워크 문제인지 정도는 구분할 수 있어야죠.
커넥션 풀 알고리즘을 직접 구현할 필요는 없지만 커넥션풀을 쓰는 이유는 알아야 되고요.
물론 당장 급하면 우선 어떻게든 돌아가는 스니핏 부터 때려넣는게 맞겠지만, 그거 때려넣어 놓은 다음에 유지 보수 안할것도 아닌데
그부분에서 버그 생길 가능성은 있는지, 생긴다면 어던 종류의 버그일 가능성이 높은지
혹은 어떤 사이드 이펙트가 생길지 정도는 생각해 볼수 있는 기초는 쌓으려고 노력하는 게 기술자로써의 최소한의 태도가 아닐까 합니다.