Frederick P. Brooks, Jr. - No Silver Bullet

  • Post author:
  • Post category:
  • Post comments:0 Comments
  • Post last modified:September 29, 2005

오늘은 Software Engineering의 고전인 No Silver Bullet 을 읽었다. 내용 발췌와 함께 나의 생각을 남기자.

관련 링크


Skepticism is not pessimism, however. …… There is no royal road, but there is a road.

Does it have to be hard? –Essential difficulties

The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms, and invocations of functions. …… The essence of a software entity is a construct of interlocking concepts ….. In most cases, the elements interact with each other in some nonlinear fashion, and the complexity of the whole increases much more than linearly.

Not only technical problems, but management problems as well come from the complexity.


The software entity is constantly subject to pressures for change.

Constantly 할뿐 아니라 frequently 하게 변한다.


In spite of progress in restricting and simplifying the structures of software, they remain inherently unvisualizable, and thus do not permit the mind to use some of its most powerful conceptual tools. This lack not only impedes the process of design within one mind, it severely hinders communication among minds.

Past Breakthroughs involved Accidental Difficulties

High-level languages.

It frees a program from much of its accidental complexity. An abstract program consists of conceptual constructs: operations, data types, sequences, and communication.

Moreover, at some point the elaboration of a high-level language creates a tool mastery burden that increases, not reduces, the intellectual task of the user who rarely uses the esoteric constructs.


Time-sharing preserves immediacy, and hence enables one to maintain an overview of complexity.

메인프레임 시절에 Batch-processing과 같은 작업에서는 개발자는 컴퓨터의 즉각적인 반응을 기대하기 힘들었다. 인간의 인식 능력은 지속적인 상호작용 없이 복잡한 시스템에 대한 개요를 유지하기 힘들다. 요즘 같이 PC가 생활의 일부가 된 시대에는 상상하기 힘든 일이다. 하지만 이러한 통찰이 지속적인 통합을 요구하는 Extreme Programming 등에 분명한 영향을 주었다고 생각한다.

Integrated Program Development Environments

VS.NET 이나 Eclipse 등의 IDE 덕분에 인생이 편해지지 않았는가? 선구자들에게 감사할 뿐이다.

Hopes for the silver

Object-oriented programming에 대한 비판이 주를 이룬다. 하지만 피플웨어에는 Brooks가 견해를 바꾸었다는 내용이 있다.

Artificial intelligence.

AI에 대한 기대가 사라진지 오래되었으니 굳이 요약하거나 발췌할 필요를 못 느낀다.

Requirements refinement and rapid prototyping.

The hardest single part of building a software system is deciding precisely what to build. …… Therefore, the most important function that the software builder performs for the client is the iterative extraction and refinement of the product requirements. For the truth is, the client does not know what he wants.

여기에서 Brooks는 Protype과 같은 방법으로 essential difficulties를 줄이자고 말한다. 그 당시만 하더라도 Prototyping이나 iteration에 대한 인식이 많지 않았을 것이다. 아직도 한국의 대표적인 SI 업체들이 사용하는 방법론 중에 절반 이상이 ‘폭포수’식이라는 사실을 상기해보자.

Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inline Feedbacks
View all comments