소프트웨어 장인 정신이란 무엇입니까?


최상의 답변

재미있는 질문입니다. 나에게 “장인 정신”이라는 용어는 상위 수준의 시스템 설계보다는 실제 코드가 작성되는 방식을 의미합니다. 잘 만들어진 코드는 다음을 수행합니다.

  1. 외부 표준 준수
  2. 내부 표준 준수
  3. 좋은 패턴 사용
  4. 읽을 수 있음

외부 표준을 따릅니다. 그룹에 코딩 표준이있는 경우이를 따르십시오. 그렇지 않으면 ” 표준을 좋아하더라도 표준을 따르십시오.

내부 표준을 따릅니다. 이는 코드가 내부적으로 일관되어야 함을 의미합니다. 비슷한 일을하는 방법도 같은 방식으로 배치되어야합니다. 한 가지 방법이 패턴을 따르는 경우 :

if (success) {

doSomething();

} else {

handleError();

}

다음으로 시작하는 다른 방법이 없습니다.

if (!success)

{

handleError();

좋은 패턴을 사용합니다. 이것은 디자인 패턴보다는 코딩 패턴을 의미합니다. 코드는 언어에 적합한 관용구를 사용해야합니다. (예 : C ++에서 메모리 관리를 위해 scoped\_ptrs를 사용합니다.) C ++ 반복자를 사후 증가 시키거나 생성하는 것과 같은 명백한 비 효율성을 피해야합니다. 모든 코드 경로에서 사용되지 않는 개체입니다.

읽을 수 있습니다. 다른 엔지니어가 코드를 읽고 다시 읽게됩니다. 그것은 몇 년 안에. 코드는 가능한 한 이해하기 쉬워야합니다. 위에서 언급 한 모든 항목은 주로 가독성과 코드에서 예상치 못한 요소를 최소화하는 것과 관련이 있습니다. 독자는 비표준 구조가 사용 된 이유를 알아 내려는 것이 아니라 코드의 논리에 관심을 가져야합니다. 비표준 구조가있는 경우 독자는 이유가 있다는 것을 알아야합니다. 당신이 실수했기 때문이 아닙니다. (코드를 가구처럼 생각하십시오. 표면은 매끄러 워야하며 손으로 긁어도 쪼개서는 안됩니다. 불규칙한 부분은 이유가 있어야합니다.)

가독성은 또한 현명한 방법과 변수 이름, 적절한 주석에 의해 향상됩니다. 주석을 지나치게 많이 사용하지 마십시오. 그것이 명백하다면 그것을 설명하는 것을 귀찮게하지 마십시오. 그러나 독자가 문맥을 알 수 있도록 어떤 종류의 개요가 있어야합니다. (코드가 입력 X를 출력 Y로 변환하는 것이 분명 할 수 있지만 독자가 이것이 필요한 이유를 이해하면 도움이됩니다.)

답변

관리자는 다음과 같습니다. 유아. 그들은 그들이 원하는 것을 원하고 그것을 원합니다. 지금 ! 그러나 유아와 달리 관리자는 자신의 요구를 정당화하기 위해 인용 한 Harvard Business Review 기사를 절반 만 기억합니다 (참조없이). 그들은 일부 개발자를 괴롭히는 일련의 주장을 배웠습니다.

그들은“우리는 제대로하기 위해 견적 할 수 없다고 말합니다. 우리는 지금 시장에서 가져와야합니다!”. 사실이 아닙니다. 스파게티 코드를 프로덕션에 투입하면 지금 출시 고객을 화나게 할 기회가 있지만 코드를 확장 할 수는 없습니다. 그것은 단지 그들의 사업이 무너지기 전에 잠시 혼란을 겪는다는 것을 의미합니다.

그들은“출시 고객에게 베타를 출시 할 것입니다.”라고 말합니다. 그들이 의미하는 바는 그들이 베타 테스트 프로그램이라고 부르기로 동의했기 때문에 당신이 다른 방법보다 더 빨리 완벽하고 고객에게 만족스러운 코드를 출시하기를 원한다는 것입니다. 산타 클로스를 믿는 것과 같은 마법 같은 생각입니다.

그들은 이렇게 말합니다. div> 지금 !” “나중에 아빠가 TV를보고 달콤한 간식을 먹을 수 있다면 지금 방을 청소하겠습니다.”처럼 들리지 않나요? 문제는 나중에 오지 않는다는 것입니다. 관리자는 매일 새로운 기능을 추가하거나 코드베이스 인 지저분한 방을 정리할 수 있습니다. 그들이 우선 순위를 부여하는 것을 맞춰보세요. 그리고 방이 더 지저분 해져서 청소하는 데 더 오래 걸릴 것입니다. 또한 모든 문제로 인해 새로운 기능을 만들기 위해 작업하기가 더 어렵습니다.

결국 그들은“우리는이 코드베이스에 너무 많은 투자를했습니다. 다시 쓰는 데 시간이 너무 오래 걸립니다. 지금 기능이 필요합니다!” 소프트웨어 개발자가 기술 부채라고 부르는 지저분한 공간 때문에 각 기능 만 코딩하는 데 2 ​​~ 3 배의 시간이 걸립니다.

인내심 있고 사랑 많은 부모와 같은 훌륭한 개발자는 광기를 멈춰야합니다. 그들은 “죄송합니다.하지만 HBR 기사에 수익이 빨리 올수록 좋습니다. 라고 확고하게 주장해야합니다. 다른 모든 것은 동등합니다 . 더주의 깊게 읽어야합니다.기술 부채가 쌓이면 다른 모든 것이 동일하지 않습니다. 기능의 우선 순위를 정하면 더 일찍 판매 할 것이있을 수 있습니다.”

당신은 어른이되어야하고 산타 클로스와 같은 것은 없다는 것을 그들에게 깨뜨려야합니다. 모든 버그가 제거되고 모든 기능이 구현 될 때까지 완벽하고 고객이 만족할 수있는 코드와 같은 것입니다.

당신은 그들에게“우리는 좋은 방법을 사용하지 마십시오 . 우리는 살거나 죽지 만 살기 위해 테스트와 문서 작성과 같은 특정한 일을해야합니다. 옵션이 아닙니다.”

당신은 미소를 지으며 이렇게 말해야합니다.“우리는이 코드를 절대 다시 작성하지 않을 것입니다. 잘 알고 있지만 코드를 수정하거나 새로운 기능을 추가 할 때 무슨 말을할지 알고 있습니다. 이것이 바로 항상 이 말하는 것입니다.”

확고한 부모가 됨으로써 관리자가 성장하여 비즈니스 리더가 될 수 있습니다. 일하고 싶어합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다