LHJ

I'm a FE developer.

1. 개발자로서 가져야할 마인드

08 Jun 2020 » codespitz

1. 개발자로서 가져야할 마인드

Why did you do that? 도대체 코드 왜 그렇게 짰어?

  • 철학
    • 합리주의
    • 상대주의

상대주의, 무엇을 기준으로 판단할 것인가.
모두가 동의할 수 있는 기준을 만들자.
그 모두가 동의할 수 있는 기준을 만들 때 합리주의 철학이 사용된다.

합리주의와 상대주의는 서로 상보하는 관계. 서로 대립하거나 반대되는 개념이 아니다.
상대주의와 대립되는 경우는 오히려 절대주의일 것.

프로그래밍 세계엔 이런 개념들이 깔려있다.

프로그래밍을 짤 때 왜 이렇게짰어? 를 설명할 때 세 가지를 생각하자.

  • 가치
    • 의사소통 - 쉽게 알아볼 수 있다.
    • 단순함 - 복잡해서 단순화했다.
    • 유연함 - 여러 케이스를 고려, 플러그인
  • 원칙
    원칙을 지켜야 예외 현상, 오류가 생겼을 때 빠르게 알 수 있다.
    원칙을 정할 땐 당연히 중요한 것들만 원칙으로 정해야 한다. 항상 지켜야되기 때문에 힘들기 때문. 수고로움이 더 많이 들어간다.
    따라서 가치보다 원칙을 정할 때 더 신중해야 한다.
    원칙은 최소화해라.
    • 지역화 - 전역변수 쓰지마.
    • 중복제거 - 똑같은 모듈, 함수 다 하나로 통일해. 유지보수 힘들어.
    • 대칭성 - get/set, add/remove…쌍을 맞춰라! 되도록!
  • 패턴
    선배들의 경험.
    역사상 디버깅 비용이 줄은 경우가 없다. 예전이나 지금이나 디버깅 비용은 대략 60%.
    선배들의 조언이 유용하다는 증거.
    경험도 반복되면 진리에 가까워진다.
    과학기술은 연역적으로 도출되는 것이 많다. 대부분의 학문들도..
    경험에 의해 나왔다고 해서 이론베이스 지식보다 약할거라는 생각은 하지마라.
    오히려 더 강할 수도 있다.
    왜냐하면 검증을 많이 했기 때문.
    • 개발론 - 함수 지향 개발, 객체 지향 개발 등
    • 설계론 - 어떻게 설계를 할 것인가
    • 각종 적용 패턴 - 어디서 함수를 쓰고 어디서 클래스를 쓸 것인가. 함수를 두 개로 나눌것인가 말것인가

켄트 벡의 구현 패턴과 같은 책을 구입해서 읽으면 좋다.


마지막 단계

그래서 내가 왜 이렇게 코드를 짰는데? 라는 이유의 동기 :

너 왜 그래프 만들랬더니 사왔어?
제가 직접하면 비용이 세 배로 들어요.
너 왜 앵귤러 썼어?
제가 이걸 바닥부터 만들면 지옥입니다. 앵귤러 쓰는게 훨씬 나아요.

개발 비용은 다 시간에서 발생
IT는 인건비 100%의 굉장히 하드한 사업.
아이스크림 원가 13원 그런데 파는 가격 1500원.
하지만 IT는 그렇지않음.
그래서 IT 회사들이 줄줄이 망하는 것.
언제 안 망하냐?
현명한 개발자가 로스없이 개발할 때만
너 왜 그렇게 만들었어? 를 설명할 수 있을 때만 살아남을 수 있음.
인건비 100%이기 때문.

여러분들은 자기코드를 설명못하면 시간을 엄청 쓴다는 이야기이고 그럼 회사가 망한다는 뜻.
의사소통 비용 많이써, 얘가만든 소스는 복잡해. 얘가만든건 이거밖에 못써. 다른데 못써.
얘는 다 전역변수라 쓰기 너무힘들어.


이러면 회사도 망하고 그 개발자도 망하고 다 망하는 길.
개발에 열정이 있는가? 보다 더 중요한 것, 얘는 개발을 인더스트리얼 레벨로 보는가? 가 더 중요.