Gerald Weinberg, «The Psychology of Computer Programming: Silver Anniversary Edition»
Книга того же масштаба и размаха, что и «Мифический человеко-месяц» Брукса. Написанная в 1971 году, она не потеряла своей актуальности, лишь слегка покрылась патиной перфокарт и Фортрана. В новом издании автор не стал ничего менять, лишь добавил немного комментариев.
Эта самая полезная книга про программирование, прочитанная за последнее время. Она открывает глаза на многие вещи, на которые смотришь, но не видишь. Почему её до сих пор не перевели?.. Это реальное упущение, я считаю. А Вейнберга буду читать ещё.
- Over the years, Ive observed that the best programmers are the most introspective. If they do something wrong, they examine the mentality process (or physical process) that led to the problem; then, they do something to charge the process.
- For the best programming at the least cost, give the best possible programmers you can find sufficient time so you need the smallest number of them. When you have to work faster, or with less experienced people, costs and uncertainties will raise. In any case, the worst way to do a programming project is to hire a horde of trainees and put them to work under pressure and without supervision—although this is the most common practice today.
- The number one mistake ... is that of adding members to a team based on some presumed skill, rather than on compatibility of the new member with the rest of the team members.
- Whenever a supervisor is response for work he does not understand, he begins to reward workers not for work, but for the appearance of work. ... As he climbs the management ladder, it becomes less and less easy for him to establish his technical superiority, so he comes to rely more and more on symbols of status to give him his authority. ... Lately, the terminal has become the number one status symbol for programming managers. No matter how short of terminals the poor workers may be, the project manager must have his terminal by his side for all his guests to see.
- All too often the program that «works» is mistaken for the program that is finished, frequently because of management pressure to «produce.» But the programmer who wants to learn must resist such pressures and take the time to review his success.
- A programmer would not really be a programmer who did not at some time consider his program as an esthetic object. ... To be sure, it is fashionable among programmers to be rough and tough and pragmatic, but deep down each programmer knows that it is not enough for a program just to work—it has to be «right» in other ways. ... The correlation between the esthetic and the pragmatic value of the program is not accidental—he more pleasing to the eye and mind, the more likely to be correct.
- Setting rules that are not enforced, or settled limits that are not used, can only result in contempt for the system by those who must work under those rules and limits.
- As far as can be determined, there is no way to force programmers to produce good documentation. Some programmers can be forced to produce documentation, just as some children can be forced to take castor oil; but there are so many ways to sabotage the usefulness of documentation that forcing only results in documents that are not worth the paper used to print them on.