본문 바로가기

Java/Test Driven Development

1-1. 엔지니어링과 원칙

해당 포스트는 이규원님의 "Spring Boot TDD" 강의 기반으로 작성하였습니다.

 

Spring Boot TDD - 입문부터 실전까지 정확하게| 이규원 - 인프런 강의

현재 평점 5점 수강생 364명인 강의를 만나보세요. 더 빠르고 더 견고하게 Spring Boot 응용프로그램을 개발하세요. 정확한 이론 설명과 실무 수준의 연결된 실습을 통해 HTTP API 응용프로그램 개발에

www.inflearn.com


프로그래머로서 우리는 일상적으로 "엔지니어링"과 "원칙"이라는 단어를 자주 사용합니다. 이 두 개념은 우리의 작업 방식과 의사결정에 큰 영향을 미칩니다. 

 

1. 엔지니어링의 정의: 자원을 가치로 바꾸는 과학적 과정

엔지니어링은 다양한 해석이 가능하지만, 브리태니커 백과사전의 정의를 기반으로 프로그래머 관점에서 재구성하면 이해하기 쉽습니다.
원래 정의는 "자연자원을 인류의 용도에 맞게 최적으로 변환하기 위한 과학적 응용"입니다.
이를 간단히 풀어보면, 엔지니어링은 자원을 가치로 만드는 과정으로, 여기서 과학과 효율이 핵심 요소입니다.

  • 자원: 자연자원뿐만 아니라 프로그래머의 세계에서는 돈, 시간, 코드, 라이브러리 등 인간이 만든 모든 것을 포함합니다.
  • 가치: 자원을 변환해 만들어지는 결과물, 예를 들어 사용자에게 유용한 소프트웨어 기능이나 비즈니스 문제 해결.
  • 과학적 활동: 단순한 제작이 아닌, 논리적·실험적 방법(알고리즘, 테스트 등)을 적용.

가장 중요한 부분으로, 적은 자원으로 최대 가치를 창출해야 합니다. 비용(자원 소비)을 최소화하면서 결과(가치)를 최대화하는 균형입니다.


2. 비효율적 엔지니어링 사례: 가능하지만 실용적이지 않은 접근

엔지니어링에서 과학적으로 자원을 가치로 변환할 수 있지만, 효율이 떨어지면 실질적으로 실패한 경우가 많습니다. 이런 사례는 프로그래머가 피해야 할 교훈을 줍니다.

  • 비효율의 본질: 과학적 방법으로 목표를 달성하지만, 소비되는 자원(비용, 시간)이 생산되는 가치보다 훨씬 크면 비효율적입니다. 가능성은 있지만, 실생활에서 사용되지 않습니다.
  • 문제점: 프로그래머는 종종 이런 실수를 저지릅니다. 예를 들어, 과도한 최적화나 불필요한 복잡한 기술 사용으로 비용만 증가시키고 가치 창출이 멈춥니다.
  • 주의점: 가능성만 추구하지 말고, 항상 비용-가치 균형을 확인하세요. "바보 같은" 실수(예: 압도적 비용의 기술 도입)를 피하기 위해 효율을 최우선으로 고려합니다.

3. 원칙의 정의: 불확실한 상황에서의 안전장치

  • 소프트웨어 엔지니어링에서 "원칙"은 확신이 부족할 때 실패 가능성을 최소화하는 지침입니다. 이는 규칙이 아니라, 상황에 따라 선택적으로 따르는 가이드라인입니다.
  • 소프트웨어 엔지니어링 영역에는 수 많은 원칙들이 존재합니다.
  • 다양한 원칙을 충실히 이해하고 적절한 때에 사용하면 상당히 많은 경우 옳은 의사결정을 빠르게 내릴 수 있습니다.
  • 엔지니어는 원칙에 지배받아서는 안되며, 풀어야 할 각 문제마다 주체적으로 원칙을 따르거나 따르지 않을 책임이 있습니다.

'Java > Test Driven Development' 카테고리의 다른 글

2-4. TDD에 대한 오해  (2) 2025.07.22
2-3. TDD 절차  (0) 2025.07.22
2-2. 테스트와 설계  (0) 2025.07.22
2-1. 인터페이스 설계와 구현 설계  (1) 2025.07.22
Practical Testing: 실용적인 테스트 가이드  (0) 2024.06.28