Famous Quotes & Sayings

Steve McConnell Quotes & Sayings

Enjoy the top 70 famous quotes, sayings and quotations by Steve McConnell.

Share on Facebook Share on Twitter Share on Google+ Pinterest Share on Linkedin

Famous Quotes By Steve McConnell

Steve McConnell Quotes 431649

It's better to wait for a productive programmer to become available than it is to wait for the first available programmer to become productive. — Steve McConnell

Steve McConnell Quotes 815799

In software, the chain isn't as strong as its weakest link; it's as weak as all the weak links multiplied together. — Steve McConnell

Steve McConnell Quotes 568197

A brute force solution that works is better than an elegant solution that doesn't work. — Steve McConnell

Steve McConnell Quotes 1469699

Motivation is undoubtedly the single greatest influence on how well people perform. Most productivity studies have found that motivation has a stronger influence on productivity than any other factor. — Steve McConnell

Steve McConnell Quotes 593232

The default movement on a software project should be in the direction of taking elements of the software away to make it simpler rather than adding elements to make it more complex. — Steve McConnell

Steve McConnell Quotes 2197155

A typical software project can present more opportunities to learn from mistakes than some people get in a lifetime. — Steve McConnell

Steve McConnell Quotes 502666

Eighty percent of the errors are found in 20 percent of a project's classes or routines — Steve McConnell

Steve McConnell Quotes 1545905

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. — Steve McConnell

Steve McConnell Quotes 399674

The only way to reduce the variability in the estimate is to reduce the variability in the project. — Steve McConnell

Steve McConnell Quotes 452011

You can do anything with stacks and iteration that you can do with recursion. — Steve McConnell

Steve McConnell Quotes 179811

Reduce complexity. The single most important reason to create a routine is to reduce a program's complexity. Create a routine to hide information so that you won't need to think about it. — Steve McConnell

Steve McConnell Quotes 470532

There are no secrets on an successful software project. Both good and bad news must be able to move up and down the ptoject hierarchy without restriction. — Steve McConnell

Steve McConnell Quotes 1307991

it's done by creating 25 times as many dirty tests — Steve McConnell

Steve McConnell Quotes 1919271

Hurrying to solve a problem is one of the most time-ineffective things you can do. — Steve McConnell

Steve McConnell Quotes 381887

complicated code is a sign that you don't understand your program well enough to make it simple. — Steve McConnell

Steve McConnell Quotes 585713

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

Steve McConnell Quotes 1733055

Engineering is the application of scientific principles toward practical ends. If the engineering isn't practical, it's bad engineering. — Steve McConnell

Steve McConnell Quotes 1929346

Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often. What you eat before you step onto the scale determines how much you will weigh, and the software-development techniques you use determine how many errors testing will find. — Steve McConnell

Steve McConnell Quotes 2166437

11 years is a long time in this industry. — Steve McConnell

Steve McConnell Quotes 1180494

Copy and paste is a design error — Steve McConnell

Steve McConnell Quotes 903629

Implement "is a" through public inheritance. When a programmer decides to create a new class by inheriting from an existing class, that programmer is saying that the new class "is a" more specialized version of the older class. The base class sets expectations about how the derived class will operate and imposes constraints on how the derived class can operate (Meyers 1998). — Steve McConnell

Steve McConnell Quotes 135555

developers insert an average of 1 to 3 defects per hour into their designs and 5 to 8 defects per hour into code — Steve McConnell

Steve McConnell Quotes 555353

On small, informal projects, a lot of design is done while the programmer sits at the keyboard. "Design" might be just writing a class interface in pseudocode before writing the details. It might be drawing diagrams of a few class relationships before coding them. It might be asking another programmer which design pattern seems like a better choice. Regardless of how it's done, small projects benefit from careful design just as larger projects do, and recognizing design as an explicit activity maximizes the benefit you will receive from it. — Steve McConnell

Steve McConnell Quotes 1641810

Design Is a Wicked Problem Horst Rittel and Melvin Webber defined a "wicked" problem as one that could be clearly defined only by solving it, or by solving part of it (1973). This paradox implies, essentially, that you have to "solve" the problem once in order to clearly define it and then solve it again to create a solution that works. — Steve McConnell

Steve McConnell Quotes 1540046

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

Steve McConnell Quotes 969008

The job of the average manager requires a shift in focus every few minutes. The job of the average software developer requires that the developer not shift focus more often than every few hours. — Steve McConnell

Steve McConnell Quotes 1761964

95% on content and the computer language remains the same. — Steve McConnell

Steve McConnell Quotes 317860

It's hard enough to find an error in your code when you're looking for it; it's even harder when you've assumed your code is error-free. — Steve McConnell

Steve McConnell Quotes 1483566

the road to programming hell is paved with global variables, — Steve McConnell

Steve McConnell Quotes 1525905

The primary purpose of software estimation is not to predict a project's outcome; it is to determine whether a project's targets are realistic enough to allow the project to be controlled to meet them. — Steve McConnell

Steve McConnell Quotes 1531436

Heuristic is an algorithm in a clown suit. It's less predictable, it's more fun, and it comes without a 30-day, money-back guarantee. — Steve McConnell

Steve McConnell Quotes 309378

Favor read-time convenience to write-time convenience. Code — Steve McConnell

Steve McConnell Quotes 1664461

One of the paradoxes of defensive programming is that during development, you'd like an error to be noticeable - you'd rather have it be obnoxious than risk overlooking it. But during production, you'd rather have the error be as unobtrusive as possible, to have the program recover or fail gracefully. — Steve McConnell

Steve McConnell Quotes 1675818

In my experience, you either have encapsulation and abstraction or you have neither. There is no middle ground. — Steve McConnell

Steve McConnell Quotes 1726865

Error processing is turning out to be one of the thorniest problems of modern computer science, and you can't afford to deal with it haphazardly. Some people have estimated that as much as 90 percent of a program's code is written for exceptional, error-processing cases or housekeeping, implying that only 10 percent is written for nominal cases (Shaw in Bentley 1982). With so much code dedicated to handling errors, a strategy for handling them consistently should be spelled out in the architecture. — Steve McConnell

Steve McConnell Quotes 277618

Software projects fail for one of two general reasons: the project team lacks the knowledge to conduct a software project successfully, or the project team lacks the resolve to conduct a project effectively. — Steve McConnell

Steve McConnell Quotes 1429757

defect corrections have more than a 50 percent chance of being wrong the first time — Steve McConnell

Steve McConnell Quotes 1768688

A blanket attempt to avoid mistakes is the biggest mistake of all. — Steve McConnell

Steve McConnell Quotes 1832416

Trying to apply formal methods to all software projects is just as bad as trying to apply code-and-fix development to all projects. — Steve McConnell

Steve McConnell Quotes 1844921

in the vast majority of systems, efficiency isn't critical. — Steve McConnell

Steve McConnell Quotes 207335

Avoid duplicate code. Undoubtedly the most popular reason for creating a routine is to avoid duplicate code. Indeed, creation of similar code in two routines implies an error in decomposition. Pull the duplicate code from both routines, put a generic version of the common code into a base class, and then move the two specialized routines into subclasses. — Steve McConnell

Steve McConnell Quotes 186625

Programming requires more concentration than other activities. It's the reason programmers get upset about 'quick interruptions' - such interruptions are tantamount to asking a juggler to keep three balls in the air and hold your groceries at the same time. — Steve McConnell

Steve McConnell Quotes 2038910

Make interfaces programmatic rather than semantic when possible. Each interface consists of a programmatic part and a semantic part. The programmatic part consists of the data types and other attributes of the interface that can be enforced by the compiler. The semantic part of the interface consists of the assumptions about how the interface will be used, which cannot be enforced by the compiler. The semantic interface includes considerations such as "RoutineA must be called before RoutineB" or "RoutineA will crash if dataMember1 isn't initialized before it's passed to RoutineA." The semantic interface should be documented in comments, but try to keep interfaces minimally dependent on documentation. Any aspect of an interface that can't be enforced by the compiler is an aspect that's likely to be misused. Look for ways to convert semantic interface elements to programmatic interface elements by using Asserts or other techniques. — Steve McConnell

Steve McConnell Quotes 2051381

Watch for coupling that's too tight. "Coupling" refers to how tight the connection is between two classes. In general, the looser the connection, the better. Several general guidelines flow from this concept: Minimize accessibility of classes and members. Avoid friend classes, because they're tightly coupled. Make data private rather than protected in a base class to make derived classes less tightly coupled to the base class. Avoid exposing member data in a class's public interface. Be wary of semantic violations of encapsulation. Observe the "Law of Demeter" (discussed in Design and Implementation Issues of this chapter). Coupling goes hand in glove with abstraction and encapsulation. Tight coupling occurs when an abstraction is leaky, or when encapsulation is broken. — Steve McConnell

Steve McConnell Quotes 2093533

developer testing should probably take 8 to 25 percent of the total project time. — Steve McConnell

Steve McConnell Quotes 170047

It's OK to figure out murder mysteries, but you shouldn't need to figure out code. You should be able to read it. — Steve McConnell

Steve McConnell Quotes 84485

If the derived class isn't going to adhere completely to the same interface contract defined by the base class, inheritance is not the right implementation technique. Consider containment or making a change further up the inheritance hierarchy. — Steve McConnell

Steve McConnell Quotes 1105562

A good estimate is an estimate that provides a clear enough view of the project reality to allow the project leadership to make good decisions about how to control the project to hit its targets. — Steve McConnell

Steve McConnell Quotes 593174

Be critical of classes that contain more than about seven data members. The — Steve McConnell

Steve McConnell Quotes 498486

Programmers working with high-level languages achieve better productivity and quality than those working with lower-level languages. Languages such as C++, Java, Smalltalk, and Visual Basic have been credited with improving productivity, reliability, simplicity, and comprehensibility by factors of 5 to 15 over low-level languages such as assembly and C (Brooks 1987, Jones 1998, Boehm 2000). You save time when you don't need to have an awards ceremony every time a C statement does what it's supposed to. — Steve McConnell

Steve McConnell Quotes 594133

once gotos are introduced, they spread through the code like termites through a rotting house. — Steve McConnell

Steve McConnell Quotes 470146

Mature testing organizations tend to have five dirty tests for every clean test. — Steve McConnell

Steve McConnell Quotes 851681

Use locking to control access to global variables. Similar to concurrency control in a multiuser database environment, locking requires that before the value of a global variable can be used or updated, the variable must be "checked out." After the variable is used, it's checked back in. During the time it's in use (checked out), if some other part of the program tries to check it out, the lock/unlock routine displays an error message or fires an assertion. — Steve McConnell

Steve McConnell Quotes 438584

Spend your time on the 20 percent of the refactorings that provide 80 percent of the benefit. — Steve McConnell

Steve McConnell Quotes 920631

Study after study has shown that motivation probably has a larger effect on productivity and quality than any other factor — Steve McConnell

Steve McConnell Quotes 944800

Testing by itself does not improve software quality. Test results are an indicator of quality, but in and of themselves, they don't improve it. Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often. What you eat before you step onto the scale determines how much you will weigh, and the software development techniques you use determine how many errors testing will find. If you want to lose weight, don't buy a new scale; change your diet. If you want to improve your software, don't test more; develop better. — Steve McConnell

Steve McConnell Quotes 1057359

On their way to America, the Pilgrims argued about the best maximum length for a routine. After arguing about it for the entire trip, they arrived at Plymouth Rock and started to draft the Mayflower Compact. They still hadn't settled the maximum-length question, and since they couldn't disembark until they'd signed the compact, they gave up and didn't include it. The result has been an interminable debate ever since about how long a routine can be. — Steve McConnell

Steve McConnell Quotes 1083387

Good visual layout shows the logical structure of a program. — Steve McConnell

Steve McConnell Quotes 1104950

Inheritance adds complexity to a program, and, as such, it's a dangerous technique. As Java guru Joshua Bloch says, "Design and document for inheritance, or prohibit it." If a class isn't designed to be inherited from, make its members non-virtual in C++, final in Java, or non-overridable in Microsoft Visual Basic so that you can't inherit from it. — Steve McConnell

Steve McConnell Quotes 1451374

The trouble with quick and dirty is that dirty remains long after quick has been forgotten. — Steve McConnell

Steve McConnell Quotes 1144143

Immature testing organizations tend to have about five clean tests for every dirty test. — Steve McConnell

Steve McConnell Quotes 1144591

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

Steve McConnell Quotes 400072

Be sure that the names you choose favor read-time convenience over write-time convenience. — Steve McConnell

Steve McConnell Quotes 392550

inheritance is a powerful tool for reducing complexity because a programmer can focus on the generic attributes of an object without worrying about the details. If a programmer must be constantly thinking about semantic differences in subclass implementations, then inheritance is increasing complexity rather than reducing it. — Steve McConnell

Steve McConnell Quotes 1313871

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

Steve McConnell Quotes 1360141

Choose your battles. If rapid development is truly top priority, don't shackle your developers by insisting on too many priorities at once. — Steve McConnell

Steve McConnell Quotes 1374137

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

Steve McConnell Quotes 1381107

Even when you have skilled, motivated, hard-working people, the wrong team structure can undercut their efforts instead of catapulting them to success. A poor team structure can increase development time, reduce quality, damage morale, increase turnover, and ultimately lead to project cancellation. — Steve McConnell

Steve McConnell Quotes 1381266

Inheritance is the idea that one class is a specialization of another class. The purpose of inheritance is to create simpler code by defining a base class that specifies common elements of two or more derived classes. The common elements can be routine interfaces, implementations, data members, or data types. Inheritance helps avoid the need to repeat code and data in multiple locations by centralizing it within a base class. When you decide to use inheritance, you have to make several decisions: For each member routine, will the routine be visible to derived classes? Will it have a default implementation? Will the default implementation be overridable? For each data member (including variables, named constants, enumerations, and so on), will the data member be visible to derived classes? — Steve McConnell

Steve McConnell Quotes 1424415

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