Joel Spolsky как обычно жжёт глаголом, на этот раз в статье The Development Abstraction Layer. Про место, роль которую играет R&D в современных софтверных компаниях. И какую оно может/должно играть. Начинается с печальной истории про одинокого программера, который ваял правильный софт, но остался на бобах:
His modesty precludes any pretensions, but after a month, the situation in his bank account is not looking encouraging. So far only three orders have been taken: one from his mother, one from an anonymous benefactor at the Programmers Cafe, and the one he submitted himself to test the commerce system.
In the second month, no more orders come in.
This surprises him and leaves him feeling melancholy. At the big company, new products were created on a regular basis, and even if they were inelegant and homely, they still sold in reasonable quantities. One product he worked on there went on to be a big hit.
After a few more months pass, his financial situation starts to look a little bit precarious. His dog looks at him sadly, not quite certain what is wrong, but aware that his face is looking a little bit gaunter than usual, and he seems to be unable to get up the energy to go out with friends, or go shopping to restock the dangerously low larder, or even to bathe.
One Tuesday morning, the local grocer has refused to extend him any more credit, and his banker has long since refused to return his calls.
The big company is not vindictive. They recognize talent, and are happy to hire him back, at a higher salary. Soon he is looking better, he has some new clothes, and hes got his old confidence back. But something, somewhere, is missing. A spark in his eye. The hope that he might become the master of his own destiny is gone.
Been there, done that.
А дальше расписывает, что если программеры будут програмить, сейлзы продавать, саппорт поддерживать, а менеджеры всё это менеджить, интегрируя, то компания будет иметь максимальный КПД. (Наверное намекая на свою Fog Creek Software.)
[…] companies can easily be wiped out by a company thats driven by programmers and organized to put programmers in the drivers seat, but which have an excellent abstraction that does all the hard work to convert code into products below the decks.
Managements primary responsibility to create the illusion that a software company can be run by writing code, because thats what programmers do. And while it would be great to have programmers who are also great at sales, graphic design, system administration, and cooking, its unrealistic. Like teaching a pig to sing, it wastes your time and it annoys the pig.
Утопия, конечно. Но хотя бы есть к чему стремиться в жизни.