Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
No Silver Bullet
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Summary == Brooks distinguishes between two different types of complexity: accidental complexity and essential complexity. This is related to [[Aristotle]]'s [[Accident (philosophy)|classification]]. Accidental complexity relates to problems that engineers create and can fix. For example, modern [[programming language]]s have abstracted away the details of writing and optimizing [[assembly language]] [[source code]] and eliminated the delays caused by [[batch processing]], though other sources of accidental complexity remain. Essential complexity is caused by the problem to be solved, and nothing can remove it; if users want a program to do 30 different things, then those 30 things are essential and the program must do those 30 different things. Brooks claims that accidental complexity has decreased substantially, and today's programmers spend most of their time addressing essential complexity. Brooks argues that this means shrinking all the accidental activities to zero will not give the same order-of-magnitude improvement as attempting to decrease essential complexity. While Brooks insists that there is no one [[silver bullet]], he believes that a series of innovations attacking essential complexity could lead to significant improvements. One technology that had made significant improvement in the area of accidental complexity was the invention of [[high-level programming language]]s, such as [[Ada (programming language)|Ada]].<ref name="Brooks1986"/> Brooks advocates "growing" software organically through incremental development. He suggests devising and implementing the main and subprograms right at the beginning, filling in the working sub-sections later. He believes that [[computer programming]] this way excites the engineers and provides a working system at every stage of development. Brooks goes on to argue that there is a difference between "good" designers and "great" designers. He postulates that as programming is a creative process, some designers are inherently better than others. He suggests that there is as much as a tenfold difference between an ordinary designer and a great one. He then advocates treating star designers equally well as star managers, providing them not just with equal [[remuneration]], but also all the perks of higher status: large office, staff, travel funds, etc. The article, and Brooks's later reflections on it, "'No Silver Bullet' Refired", can be found in the anniversary edition of ''[[The Mythical Man-Month]]''.<ref name="Brooks199517">[[#Brooks199517|''The Mythical Man-Month'', chapter 17]]</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)