Best 36 of Software engineering quotes - MyQuotes
Software engineering economics.
Working extra hours can hurt team dynamics. Not everyone on the team will have the flexibility to pitch in the extra hours. Perhaps one team member has children at home whom he has to take care of. Maybe someone else has a 2-week trip planned in the upcoming months, or she has to commute a long distance and can't work as many hours. Whereas once the team jelled together and everyone worked fairly and equally, now those who work more hours have to carry the weight of those who can't or don't. The result can be bitterness or resentment between members of a formerly-happy team.
Be conservative in what you do, be liberal in what you accept from others
Without requirements and design, programming is the art of adding bugs to an empty text file.
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.
We all agree on the necessity of compromise. We just can't agree on when it's necessary to compromise.
The perfect kind of architecture decision is the one which never has to be made
The conclusion is simple: if a 200-man project has 25 managers who are the most competent and experienced programmers, fire the 175 troops and put the managers back to programming.
Their first task therefore, was to translate the original C# codebase into Java so that it could leverage Google's infrastructure. One of Schillace's co-founders argued that they ought to rewrite the parts of the codebase they didn't like at the same time. After all, why rewrite the codebase to Java only to have to immediately throw parts away? Schillace fought hard against that logic, saying, "We're not doing that because we'll get lost. Step one is translate to Java and get it stood back up on it's feet again ... [O]nce it's working again in Java, step two is ... go refactor and rewrite stuff that's bugging you.
Software is easy to make, except when you want it to do something new. And then, of course, there is a corollary: The only software that's worth making is software that does something new.
Inside every large program is a small program struggling to get out.
The business we're in is more sociological than technological, more dependent on workers' abilities to communicate with each other than their abilities to communicate with machines.
In his book Software Abstractions, MIT Professor Daniel Jackson explains just how important it is to choose the right abstractions. "Pick the right ones, and programming will flow naturally from design; modules will have small and simple interfaces; and new functionality will more likely fit in without extensive reorganization, " Jackson writes. "Pick the wrong ones, and programming will be a series of nasty surprises: interfaces will become baroque and clumsy as they are forced to accommodate unanticipated interactions, and even the simplest of changes will be hard to make.
How Ironic, when you do business you create exceptions to create new opportunities, when you write code (do a job) you handle exception to make it clean.
The big optimizations come from refining the high-level design, not the individual routines.
Software quality is defined by a number of factors, and quality management is a multifaceted management discipline.
If it hurts, do it more frequently, and bring the pain forward.
Quality must be enforced, otherwise it won't happen. We programmers must be required to write tests, otherwise we won't do it.
Technical staff were fairly good at estimation but were poor at defending their estimates
Life doesn't have a ctrl-z. Type wisely.
To focus on the visible at the expense of the essential is irresponsible.
You must excuse my gruff conduct,” the watchdog said, after they’d been driving for some time, “but you see it’s traditional for watchdogs to be ferocious.
Programmers are not mathematicians, no matter how much we wish and wish for it.
Tests are sometimes mistaken with quality assurance. These two notions are not identical: 1) quality assurance ensures that the organization's processes are implemented and applied correctly; 2) testing identifies defects and failures, and provides information on the software and the risks associated with their release to the market
We must not blame programmers for their bugs. They belong to them only until the code is merged to the repository. After that, all bugs are ours!
Don’t comment bad code—rewrite it.
Truth can only be found in one place: the code.
When I asked Sam Shillace, who ran Gmail and Google Apps for four years, about the costliest mistake he's seen engineers make, his response was, "Trying to rewrite stuff from scratch -- that's the cardinal sin.
Software architecture is the set of design decisions which, if made incorrectly, may cause your project to be cancelled.
If it is not written down, it does not exist.
The analysis object model consists of entity, boundary, and control objects [Jacobson et al., 1999]. Entity objects represent the persistent information tracked by the system. Boundary objects represent the interactions between the actors and the system. Control objects are in charge of realizing use cases.
The ideal architect should be a man of letters, a skillful draftsman, a mathematician, familiar with historical studies, a diligent student of philosophy, acquainted with music, not ignorant of medicine, learned in the responses of jurisconsults, familiar with astronomy and astronomical calculations.
Life would be much easier if I had the source code.
Any software project must have a technical leader, who is responsible for all technical decisions made by the team and have enough authority to make them. Responsibility and authority are two mandatory components that must be present in order to make it possible to call such a person an architect.
Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. ...[Therefore,] making it easy to read makes it easier to write.
Software testing is a sport like hunting, it's bughunting.