턴제제작

술이나 마셔야 겠다

아이고이아 2020. 4. 27. 01:27

 

 술이 사러가다가 문득 군대가 생각이 났다. 군대는 꽉막혔지만 그래도 괜찬은 선임도 있기도 했었다. 인하대인가 공대를 나온 선임이 있었는데 수학도 잘하고 상당히 머리가 좋았던걸로 기억이 난다. 수학 퍼즐을 경쟁적으로 풀면서 꿀밤때리기 하며 놀았던 기억이 문득 떠오른다. 이 이야기 들으면 요세 군대는 편해졌네 하겠지만 고문이나 가혹행위 같은건 내가 다닐때도 존재했다. 물론 어딜가나 그런거에 물들지 않는 합리적인 사람은 있기 마련이다. 

 BIC 제출이 미루어 지니까 일을 하기가 싫은 마음이 다시금 올라온다. 열정이란 금방 식기 마련이다. 이러다가 한달을 어영 부영 하게 되는건지 모르겠다. 일단 맥주나 마시면서 사온 책을 읽으면서 좀 쉬도록 하자. 쉬여야 할 시간인듯 싶다. 

 빈둥거리면서 유튜브를 보고 있는데 고닷엔진으로 딥다크한 게임이 나온듯 싶다. 전반적으로 고도 엔진으로 꽤나 멋진 게임들이 나오는듯 싶다. 차기작을 그래픽 팀원을 구해서 고도 엔진으로 작업 할까 싶기도 하다. 

 일단 프로그래밍의 정석 이 책을 봐야 겠다. 턴제 프로젝트의 진행은 다시 하고 싶을때 시작하도록 하자.

 일단 책은 애자일 XP 함수형 프로그래밍에 대한 원칙을 정리해 둔듯 싶다. 101가지 중에서 중요하다고 생각되는 몇가지를 정리해 본다.

사람이 읽기 쉽게 단순하게 만든다. 버그는 복잡한데서 나온다.

새로 기술을 배웠다고 과시용으로 써보겠다고 넣지 말자. 보수적으로 코딩을 한다.

코드는 언재든지 수정을 할수 있도록 만든다. 유연하게 만든다.

 테스트가 더이상 이루어지지 않는 코드가 레거시 코드다. 테스트 주도 개발을 하자.

 미리 나중에 쓸 코드를 만들지 말고 필요한때 그때 그때 만들라고 한다. 실재로은 잘 쓰지 않고 단순한게 좋기 때문이다. 

 코드를 잘개잘개 쪼개야 중복되는 부분을 통합할수가 있다. 일단 작게 만들고 조금 커졌다 싶으면 분활한다.

 하나의 함수는 하나의 역활만을 하게 한다. 이것과 연개되는게 가급적 내부구현은 은닉하고 기능만 외부로 꺼낸다. 

 디버깅을 위한 도구를 초기에 넣고 시각화 한다. 오류통지는 요란할수록 좋다.

 스텝 바이 스텝으로 순차적으로 작업하다. 이건 인공지능 만들때 인간의 작업 방식에 관해서 언급했던거 같다. 예전에 중간에 테스트 구간을 넣지 않고 한꺼번에 여러 곳을 작업하다가 터졌을때 어디서 문제가 발생했는지 몰라서 백업했던거를 다시 불러와서 처음부터 다시 했던것이 생각이 난다. 시간이 더 걸리더라도 이 방법이 맞는듯 싶다. 

 단순 반복되는 수작업은 가급적 자동화 한다. 나태할수록 좋은 거다.

 늘 새로운 시도해보고 문제는 바로 바로 고친다. 성급할수록 좋은 거다.

 다른 사람에게 보여도 자신있는 코드를 만든다. 오만할 수록 좋은거다.

 야근을 하지 말라. 이부분은 나름 경영학을 공부를 해서 부연 설명을 달겠다.

 업무를 하는 방법이 이미 알려져 있어서 그대로 따라만 하면 되는 경우에는 업무시간에 비례해서 생산성이 오른다. 가령 양산형 게임 같은걸 만드는 경우에는 그냥 야근을 시키면 된다. 그러나 새로운 길을 가는 경우 고도의 창의성이 필요할 때는 야근을 한다그래도 생산성이 오르지 않는다. 그냥 멀해야 할지 모르고 앉아만 있는 시간만 늘리기 때문에 이 경우에는 일찍 보내는게 좋다. 

 작업에 있어서 모든 작업이 고도의 창의성이 필요하진 않다. 일부 시스템의 구현은 그냥 유튜브 보고 따라하면 되는 경우도 있다. 따라서 그냥 유튜브 보고 따라하는 경우에는 하루 12시간씩 작업하고 그렇지 않고 새로운 길을 모색해 나갈때는 하루 4시간만 일하는 식으로 유도리 있게 작업하면 된다.

 바리케이트를 만든다. 구역을 나누어서 한곳의 오류가 다른곳으로 번지지 않도록 한다. 

 오류를 처리할때는 무해한값, 가장 가까운값, 이전과 같은 값들로 반환을 하게 할수가 있다. 

 프로그래밍 몰입 상태에 들어가기 위해서는 대략 15분 정도의 준비 시간이 필요하다. 책에서는 방해하는 요소인 인터럽트한거 가령 작업 공간에는 전화기를 배치 하지 않는다거나 하는게 필요하다고 이야기 한다. 그런데 이 사실은 내가 작업을 할때 바로 작업 하지 못하고 머뭇 머뭇 거리니까 일단 바로 작업을 시간하지 말고 15분 정도는 테스트를 하거나 아무거나 만지작 거리는 시간을 둬야 하는 것로 해야 겠다. 일단 15분 정도 웜업을 하다보면 자기도 모르게 몰입에 빠질테니 말이다. 

 깨진 유리창의 법칙. 코드는 강박적으로 관리하고 깨진채로 방치해 두지 않는다.

 기능은 최소한으로 그리고 100%가 아닌 어느 정도 만족할 수준으로 만든다. 고객의 요구 중 어떤것은 노라고 말해야 겠다.

 101가지 원칙을 한 20가지 내외로 추려 봤다. 101가지를 다 기억하고 실천할수는 없다. 법화경에도 그런말이 있지 않은가 많은 것을 알기보다는 최소한의 원칙을 실천하는게 중요하다고 말이다. 이정도만 숙지하고 실천해도 충분할듯 싶다.