A friend brought to my attention a ZDNet article speculating on why Rust hasn’t seen the adoption the community has hoped it would. On the whole, I think the article is pretty good and makes some fair points, though I do think it goes a bit off the rails when it mentions developers’ choice of OS environment, since Rust works just fine on all three major operating systems and has some pretty decent tooling in the forms of CLion and VSCode. That aside, I strongly suggest you read their article. This is my somewhat more curmudgeonly take, but I think it takes into account some awkward market realities in terms of why you who likely doesn’t program in Rust has heard so much about it and why despite the glowing coverage on popular coding podcasts and blogs, general developer adoption has been somewhat disappointing.
First, we need to address the elephant in room here. Like many professions software developers have a small percentage of practitioners who are very online, maintaining and actively promoting podcasts and blogs for the wider community. These folks, myself included, for reasons that should be obvious tend to have a need for fresh and new content, making them more like to try things out and generally be more engaged with the wider community and industry as a whole than the average programmer. The rest of my chattering coders and I are frankly weirdos. The majority of developers tend to focus on one or two technologies (usually they are directly related such as C# and XAML), go deep on them and more or less work on them in obscurity. These developers tend to be called in the industry “dark matter developers” and are the vast majority of the total population. Don’t get me wrong there’s nothing wrong with that, but they are unlikely to dig into the latest new or obscure tech on nights and weekends. However, they might just be enthusiastic to subscribe to a podcast or blog about them. In a way this is a symbiotic relationship, the chattering coders (again myself included) spend a disproportionate amount of their time tinkering with new technologies and some subset of dark matter developers who consume our content providing the requisite audience and potential funding model to produce the content. I know this is banal to say the least, but I think it follows at least in a sort of crudely simplified way. This becomes especially apparent when you look at how many hyper-online developers have at least paid some sort of attention to Rust in the last year. I’ll leave the point lie there and you can make of it what you like and by extension judge the sanity of my fellow chattering coders and I in the comments below.
The banality of podcast metrics aside, let’s talk about another thing us tech folks love to think about — business managers! Turns out they love small budgets and hate risk. Rust by being relatively new and not exactly mainstream is rightly or wrongly is considered a risk factor. That holds in even the easiest case of a purely green-field project. You know, however, if you have anything more than a week’s experience as a professional developer, that almost no projects at any significant scale are truly green-field; those fields tend to be as brown as an overflown septic tank. Brown-field means existing code and probably existing coders and stakeholders. In other words, an existing investment in terms of both capital and expertise. These existing investments tend to dramatically limit what technical and business managers are willing to consider in terms of technology choices. If you are pitching to an enterprise, it’s pretty likely that they are running on something like Java or .Net and already have in house processes and expertise specifically around their existing technologies. That makes Rust a hard sell . Even if you got over that hurdle, you have another problem — Rust is optimized for safety, not developer efficiency. The dull reality of most enterprise software no matter what the business person you’re talking to will tell you is that most of it is not nearly as mission critical as to justify the additional development time (read investment) likely required to achieve Rust level safety; in the real world cost of development is very likely to be one of the most important factors in a manager’s decision on what technology to go with.
Let’s not forget possibly the most obvious reason Rust isn’t seeing as much adoption as I and some other community members would hope. It requires a level of understanding of how software actually works to make hiring Jr developers fraught to say the least. Additionally, as we move into this age of bootcamps that focus more on teaching a few practical techniques to get a passable Github profile up that a potential employer might finds as “good enough”, rather than software engineering concepts or universal best practices, it seems unlikely that the average bootcamp graduate will be a viable Rust developer even at the most Jr level. I should note I have no issue with people using bootcamps to get a foot in the tech door. In fact, I think that’s often a great idea, but I have a lot of issues with many of the bootcamps I’ve dealt with as an employer and as someone who has had friends and family members waste large sums of money going through their programs only to find that they can’t manage to bootstrap a simple Rails app; I’ll have more on this in a post I’ve been working on for next month. If you can’t hire any relatively Jr developers to reliably work on the “grunt work” of your project, then that makes your cost structure potentially unsustainable. From a community perspective, if a community cannot attract a large enough set of enthusiastic young developers to spread the word, then it’s probably not going to get much mainstream penetration; the catch twenty-two here is that the very benefits of Rust are what make it intimidating for less experienced developers, so there’s probably no simple way to overcome this challenge.
This has all been pretty negative, so let me reframe a bit. Rust is great. I like Rust. I have shipped Rust both for Rabbot my company’s automation product. I have shipped Rust for clients in production and they and I are very happy with it. Rust is an important tool in my developer toolbox, and is still going to be a “go to” language for code that absolutely needs to be safe and reliable, but it’s just not going to go as mainstream as C# or Java and maybe that’s OK? Let me know what you think in the comments or on Twitter and please subscribe to my podcast and if you need any development work done, reach out to my company.