But a university (or a department) could manage a centralized set of software developers who get assigned to different lab projects over time. If Professor A&#x27;s grant goes away, then you just pick up more work on Professor B&#x27;s grant and Professor C&#x27;s -- all of which would be managed by the university or department, and not separately managed by each of the professors.<p>Universities already do this for essential services like janitorial work, administrative work, and centralized IT provisioning, like university-wide email or supercomputing infrastructure.<p>They even already try to do this to some degree with software. For example, there&#x27;s been a lot of software-focused hiring at the Cornell Weill school in New York City, and some political science research groups at NYU banded together to hire some big data and development staff to service more than just one professor&#x27;s line of grant-funded projects.<p>The problem is that they still fundamentally undervalue software labor and look at a programmer as simulatenously a low-level grunt and a wizard. You&#x27;re a low-level grunt because your opinion isn&#x27;t supposed to matter as much as a domain expert&#x27;s opinion and your &#x27;creative&#x27; contributions (in terms of expressing the research idea in software) is supposed to be less valuable than the domain experts&#x27; creative work in coming up with the ideas in a more abstract sense. But you&#x27;re also supposed to be a magic wizard because you&#x27;re supposed to juggle unreasonable and conflicting sets of requirements, overcome fundamental computational complexity hurdles, and take a bunch of crappy copy&#x2F;paste code that none of the domain experts are interested in properly refactoring, and somehow make all of that work correctly, reproducibly, and acceptably fast all in time for various paper and reviewer deadlines.