프로젝트란 무엇인가
특정 목표를 달성하기 위해 하는 일련의 행위이다
그러나 지금까지 내가 진행한 프로젝트는
어떤 비즈니스적이거나 혹은 사회적 의미가 있는 목표를 달성하기 위해서 보다
기술을 경험해 보기 위해 진행했던 것만 같다
기술 경험이라 해도, 한 번 코드 복사해서 붙여넣고 실행해보고 끝
이런 느낌만 남는 것만 같다
—-9/11추가
뭐든 엄청 깊게 파지 않으면
대충했다는 느낌만 남는다
깊게 파야 제대로 알고있는 것 같은 느낌이 들어서
휴학을 하고 시간을 들여 여러가지를 깊게 파려고하는 것이다
—-
반년 넘게 고민한 결과
이는 프로젝트 수행 도중 의사결정을 내릴 때마다
고민을 깊게 하지 않아서 그런 것같다 라고 결론내렸다.
고민의 흔적을 남기지 않아서 이렇게 보이는 것 같기도 하지만
결과적으로 내가 고민을 많이 하지 못했다는 느낌이 강하게 남는다
개발자 / 엔지니어의 역량은
고민의 수준과 깊이,
해결 방식과 결과에서 잘 드러난다 생각한다.
최근 면접들에서 이러한 점을 어필해야 할 때
순간적으로 돌아본 나는
지금까지 그리 깊지 않은 고민을 해온 사람으로 느껴졌다.
프로젝트의 목표 달성을 위해,
성능 개선을 위해 끊임없이 고민을 했어야 했는데
지금까지는 구현만으로도 벅차(혹은 지레 겁을 먹고)
일단 완성만 하고 보자 라는 성향이 있었다
건축으로 생각하자면
이는
"아 나 힘드니까 부실공사여도 일단 완성하자"에 불과했다
....
그래서 잠시 시간을 가지려 한다
내가 지금까지 해온 프로젝트를 다시 마주하고, 돌이켜보며
이 부분에서는 어떤 고민을 했어야 했고
다음에는 어떻게 해야할 지
이렇듯
개발에 대한 스스로의 태도를 개선하려 한다
시간을 들여 확실하게 고쳐보고자 한다.
어떻게 해낼 수 있을까.
개발/엔지니어링과 관련한 대부분의 고민은
컴퓨터 과학/공학을 통해 답을 찾아나갈 수 있다고 생각한다
그렇기에 우선
문제 해결을 위한 '역량'을 기르고자
전공 공부를 다시 깊게 해보고자 한다
따로따로 배웠던 내용들을 유기적으로 엮어
필요한 순간 바로 꺼낼 수 있게 준비하고자 한다
나에게 이 순간은
포트폴리오 한 줄을 더 쓰는게 아니라
나 자신의 그릇을 넓히기 위한 노력이다.
면접 때 질문받았던 고민들의 예시는 다음과 같다.
* 서비스가 몇 명의 트래픽까지 감당 가능한지
* 확장성
* 저장 용량
* 부하 한계
etc.
그런데 이런 고민에 대한 문제 해결 과정은
CS가 탄탄하지 않으면
날카로울 수 없고,
깊어질 수 없으며,
대답도 내기 어렵다.
구체적 방법
OS
PintOS 프로젝트
리눅스 구조 이해
Network
수업 복습
CISCO 네트워크
k8s가 어떻게 네트워크를 형성하고 있는 지
클라우드 기반 application은 일반적으로 네트워크를 어떻게 구성하는지
DB
부하와 한계
성능 테스트
대용량 처리(OS와 연관이 깊음)