Site uses cookies to provide basic functionality.

OK
Query
Tags
Author
1 2 3
Link Quote Stars Tags Author
95fe76e When executives ask for an "estimate," they're often asking for a commitment or for a plan to meet a target." -- Steve McConnell
f67a8a2 usually more time is spent in making good-looking presentation slides than in improving the quality of the software. Steve McConnell
e7c1e7a Try to create modules that depend little on other modules. Make them detached, as business associates are, rather than attached, as Siamese twins are. Steve McConnell
d159208 Good code is its own best documentation. As you're about to add a comment, ask yourself, 'How can I improve the code so that this comment isn't needed?' Improve the code and then document it to make it even clearer. Steve McConnell
4113c3e Copy and paste is a design error Steve McConnell
6e28ee2 Building software implies various stages of planning, preparation and execution that vary in kind and degree depending on what's being built. [...] Building a four-foot tower requires a steady hand, a level surface, and 10 undamaged beer cans. Building a tower 100 times that size doesn't merely require 100 times as many beer cans. software Steve McConnell
a041e76 few people can understand more than three levels of nested ifs Steve McConnell
a70f76d complicated code is a sign that you don't understand your program well enough to make it simple. Steve McConnell
932b06b As Thomas Hobbes observed in the 17th century, life under mob rule is solitary, poor, nasty, brutish and short. Life on a poorly run software project is solitary, poor, nasty, brutish, and hardly ever short enough. Steve McConnell
da5f20a Managers of programming projects aren't always aware that certain programming issues are matters of religion. If you're a manager and you try to require compliance with certain programming practices, you're inviting your programmers' ire. Here's a list of religious issues: # Programming language # Indentation style # Placing of braces # Choice of IDE # Commenting style # Efficiency vs. readability tradeoffs # Choice of methodology--for exam.. software-development Steve McConnell
d119d1c People who are effective at developing high-quality software have spent years accumulating dozens of techniques, tricks, and magic incantations. The techniques are not rules; they are analytical tools. Steve McConnell
6ee9c95 The words available in a programming language for expressing your programming thoughts certainly determine how you express your thoughts and might even determine what thoughts you can express. Steve McConnell
5861317 You save time when you don't need to have an awards ceremony every time a C statement does what it's supposed to. Moreover, Steve McConnell
f6d0880 Additional Resources on Data Types These books are good sources of information about data types: Cormen, H. Thomas, Charles E. Leiserson, Ronald L. Rivest. Introduction to Algorithms. New York, NY: McGraw Hill. 1990. Sedgewick, Robert. Algorithms in C++, Parts I-IV, 3d ed. Boston, MA: Addison-Wesley, 1998. Sedgewick, Robert. Algorithms in C++, Part V, 3d ed. Boston, MA: Addison-Wesley, 2002. Steve McConnell
156d8c7 By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race. Before the introduction of the Arabic notation, multiplication was difficult, and the division even of integers called into play the highest mathematical faculties. Probably nothing in the modern world would have more astonished a Greek mathematician than to learn that ... Steve McConnell
ebfe224 In the case of natural languages, the linguists Sapir and Whorf hypothesize a relationship between the expressive power of a language and the ability to think certain thoughts. The Sapir-Whorf hypothesis says that your ability to think a thought depends on knowing words capable of expressing the thought. If you don't know the words, you can't express the thought and Steve McConnell
3febd88 Favor read-time convenience to write-time convenience. Code Steve McConnell
c14f457 By far the most common project risks in software development are poor requirements and poor project planning, thus preparation tends to focus on improving requirements and project plans. Steve McConnell
60857bf Global data is generally subject to two problems: routines operate on global data without knowing that other routines are operating on it, and routines are aware that other routines are operating on the global data but they don't know exactly what they're doing to it. Steve McConnell
7817a4c you shouldn't be uneasy about any parts of the architecture. It shouldn't contain anything just to please the boss. It shouldn't contain anything that's hard for you to understand. You're the one who'll implement it; if it doesn't make sense to you, how can you implement it? Steve McConnell
553592b The first conclusion is that we now know with certainty that peopleware issues have more impact on software productivity and software quality than any other factor. Steve McConnell
fa25ba2 it's better to strive for a good solution and avoid disaster rather than trying to find the best solution Steve McConnell
b1b3c44 Even if you do a few things right, such as making high use of modern programming practices, you might still make a mistake that nullifies your productivity gains. Steve McConnell
9bb6595 Classes and routines are first and foremost intellectual tools for reducing complexity. If they're not making your job simpler, they're not doing their jobs. Steve McConnell
b52b692 in the vast majority of systems, efficiency isn't critical. Steve McConnell
b359e93 defect corrections have more than a 50 percent chance of being wrong the first time Steve McConnell
df0c51a Hurrying to solve a problem is one of the most time-ineffective things you can do. Steve McConnell
70c23d1 There is no code so big, twisted, or complex that maintenance can't make it worse. Steve McConnell
398c613 One key to successful programming is avoiding arbitrary variations so that your brain can be free to focus on the variations that are really needed. Steve McConnell
15a3475 The process is called estimation, not exactimation. --Phillip Armour Steve McConnell
8051137 The gap between the best software engineering practice and the average practice is very wide--perhaps wider than in any other engineering discipline. A tool that disseminates good practice would be important. -- Fred Brooks Steve McConnell
ac17c9e When in doubt, use brute force. Steve McConnell
14bc00c Programmers who program "into" a language first decide what thoughts they want to express, and then they determine how to express those thoughts using the tools provided by their specific language." Steve McConnell
495474c Eighty percent of the errors are found in 20 percent of a project's classes or routines Steve McConnell
91efda6 In software, consultants sometimes tell you to buy into certain software-development methods to the exclusion of other methods. That's unfortunate because if you buy into any single methodology 100 percent, you'll see the whole world in terms of that methodology. In some instances, you'll miss opportunities to use other methods better suited to your current problem. Steve McConnell
3255303 the error rate in manual testing is comparable to the bug rate in the code being tested. Steve McConnell
65eff3c One effective approach is to determine a range of accuracy that is acceptable and then use a boolean function to determine whether the values are close enough. Steve McConnell
8484f75 code reading detected about 80 percent more faults per hour than testing Steve McConnell
145aabd An algorithm gives you the instructions directly. A heuristic tells you how to discover the instructions for yourself, or at least where to look for them. Steve McConnell
45b0ceb Quicksort a few times, but what are the odds that your custom version will be fully correct on the first try? Steve McConnell
701c99a Another good reason to create a class is to model an abstract object--an object that isn't a concrete, real-world object but that provides an abstraction of other concrete objects. A good example is the classic Shape object. Circle and Square really exist, but Shape is an abstraction of other specific shapes. Steve McConnell
25f5065 Isolate complexity. Complexity in all forms--complicated algorithms, large data sets, intricate communications protocols, and so on--is prone to errors. If an error does occur, it will be easier to find if it isn't spread through the code but is localized within a class. Changes arising from fixing the error won't affect other code because only one class will have to be fixed--other code won't be touched. If you find a better, simpler, or m.. Steve McConnell
5a8ddcd Hide global data. If you need to use global data, you can hide its implementation details behind a class interface. Working with global data through access routines provides several benefits compared to working with global data directly. You can change the structure of the data without changing your program. You can monitor accesses to the data. The discipline of using access routines also encourages you to think about whether the data is r.. Steve McConnell
c5f136c Streamline parameter passing. If you're passing a parameter among several routines, that might indicate a need to factor those routines into a class that share the parameter as object data. Streamlining parameter passing isn't a goal, per se, but passing lots of data around suggests that a different class organization might work better. Steve McConnell
1 2 3