Culturally, I find we’re simply not motivated by the same things. Researchers want to publish research. I want to ship working software.
The more researchers I’ve met, the more convinced I become that those two goals are at odds with one another.
Culturally, I find we’re simply not motivated by the same things. Researchers want to publish research. I want to ship working software.
The more researchers I’ve met, the more convinced I become that those two goals are at odds with one another.
I suppose your point is that the researcher's goal in not exactly to ship working software either, but wouldn't that put the researcher's goals at worst neutral then?
Likewise your goal is not to publish research, but it is also not to actively work against it either. From their standpoint you're also at worst neutral.
It's also worth pointing out that the motivating factor doesn't necessarily have to be the same for each party to have a common goal. I'd argue that this is how it actually is most of the time.
I do work for a customer so that my boss doesn't fire me and I get my paycheck, whereas my boss does work for the customer to bring money to their company and to not go bankrupt. The customer helps with the work we're doing for them because they want something out of the project that is their money's worth. Our motivations are different, but the goal is the same - to build a thing that works.
My point is that it just seems very likely that some common ground can be found between you and the researchers, regardless of your individual motivations and since there's really no inherent conflict either.
Within organizations, there's an inherent conflict between any orthogonal goals.
In theory there's no conflict, but in practice, there is constant competition for time and resources. This creates conflict between any groups whose goals are not aligned, including groups whose goals are completely unrelated. This is also why organizational politics is the way it is.
I believe these are not - researchers publishing how to create good software and developers creating software may be seen as goals as aligned as fixing an incident and publishing a post mortem, or as writing an RFC and implementing it. Or publishing a post on how you remodeled your infrastructure.
They diverge at some point, yes, but that's not orthogonal at all
I disagree that this is what researchers are doing (at least from my point of view). This is actually an area where I agree with the article, there's a gigantic gulf between researchers and practitioners. The things that academia puts out are not, generally, what I would consider to be good software.
I think this fundamentally comes down to a difference in the definition of "good" between the two camps. So far as I can tell (not being an academic), the academic definition of "good" seems to revolve around software having certain provable characteristics. My definition of good software involves the software exhibiting useful characteristics. And those are, generally speaking, orthogonal. If not sometimes inhibiting each other.
But, of course I would think this, I'm a practitioner. The academics probably have similar complaints about me.
Michael Stonebraker has written/talked about this in the context of DBMS research, but to me the same issues are applicable to other fields as well.
Slides:
http://www.jfsowa.com/ikl/Stonebraker.pdf
Talk:
https://www.youtube.com/watch?v=DJFKl_5JTnA
In short, the incentives/requirements in academia have changed so that producing working software is no longer feasible. He says he got his PhD with exactly 0 publications, became a professor with 5.
Nowadays, you have to have 5 publications to get your PhD and god knows how many to become professor.
That means 1 paper successfully published per year if you want to get your PhD in 5 years. Doing software is not possible, it is too risky and just takes too long.
There's a lot more, I highly recommend the talk!
Why is it a problem they are at odds? Its not a researchers problem to create scalable production/consumer software or hell even git repos or libraries for you. Its yours! Thats your interest.
Doing applied research and working with people who want to do that tends to work reasonably well with production, because the point is to research techniques and algorithms and so forth that help improve production. Theoretical or more future-focused research tends to need to focus on building minimal scaffolding to be able to test ideas, when that kind of scaffolding gets integrated into production software, that’s where the problems arise, because by necessity it’s a kind of MVP. I am right now working on rearchitecting a component that was built this way and labeled as production without going through hardening first (though it did go through a great deal of testing it didn’t get the code review it needed).
In the end I suppose my point is that research and production aren’t inherently at odds, or even orthogonal. Applied research can be valuable to improving production software by studying current stable code and processes and researching improvements, but trying to do blue-sky research by incorporating code into production can be orthogonal or in some cases truly at odds with stability. It matters a great deal who is doing it, and how it’s managed.
[1]: https://a16zcrypto.com/posts/article/accelerating-the-world-...
[2]: https://a16zcrypto.com/posts/article/a-new-era-in-snark-desi...