공학. 더 좋은 품질의 제품을 더 빠르고 덜 에너지가 들게 만드는 방법론. 소프트웨어 공학에 있어서는 사람의 가능과 한계에 중점을 두고 발전시켜 나가야 합니다.

비행기의 부품을 제작할 때, 부품의 도면을 만들고, 실제 세계에 만들어내는 생산 공정을 거칩니다. 도면을 만드는 과정, 생산 공정의 불필요한 과정을 없애거나 더 나은 방식을 도입하는걸 항공 제작 공학이라고 부를 수 있을 겁니다.

소프트웨어는 후자인 생산 공정이 없습니다. 소프트웨어의 세계는 시뮬레이션이 곧 생성 입니다. 따라서 시뮬레이션(이자 생산이기도 한) 과정의 효율화에 집중하는 수 밖에 없습니다.

생산공정의 효율화는 물리학을 기반으로 진행하는 반면, 시뮬레이션의 효율화는 사람을 기반으로 진행합니다.

기계 팔의 움직임, 속도는 물리학이고, 시뮬레이션은 사람의 의도를 얼마나 손실없고 빠르게 잘 끄집어 내느냐에 중점이 있기 때문입니다.

그래서 여러 방법론을 논의하지만, 물리적으로 강제하는 것은 불가능합니다. TDD, XP, 애자일, 모두 사람이 따르면 좋을 방법이지만 강제할 수는 없습니다.

환경을 조성하는 것도 공학일까요?

원본 1