Tech Talk: Software as a Reflection of Values With Bryan Cantrill
Dec 18, 2018
auto_awesome
Bryan Cantrill, CTO of Joyent and an expert in operating systems, argues that choosing programming languages and tools should align with personal values rather than seeking the 'best' option. He highlights the important trade-offs within languages like Rust and JavaScript, celebrating Rust’s memory safety. The conversation also touches on the historical significance of languages like Simula 4 and critiques proprietary trends, while advocating for diversity in tech choices to foster innovation. Cantrill's insights elevate how we think about technology decisions.
Programming languages reflect the values of their design, influencing developers' choices based on project needs and personal alignment.
The misalignment between Joyent and Node.js underscores the importance of matching an organization's values with its technology investments.
A diverse array of programming languages fosters innovation, as developers are empowered to choose solutions that align with their unique project requirements.
Deep dives
Values in Programming Languages
Programming languages inherently possess values that reflect what is prioritized by their design. Choices such as performance, expressiveness, and ease of use often collide, leading developers to select languages that align with their project requirements or personal preferences. For example, a developer may prefer Rust for its focus on memory safety and performance over JavaScript, which accommodates a broader range of users but may sacrifice some rigorous checks. Understanding these values helps engineers to select the right tool for the job, aligning project demands with their own professional values.
The Joyent and Node.js Experience
The relationship between Joyent, the company behind Node.js, and the Node.js project itself raised questions about value alignment. Joyent's values and goals didn't completely align with those of Node.js, leading to a notable disassociation over time. Brian Cantrell, CTO of Joyent, reflects on the realizations that stemmed from this experience, particularly in how Node.js retains core JavaScript values that prioritize accessibility over rigor. This misalignment highlighted the importance of ensuring that the engineering ethos of an organization matches the underlying values of the technology it invests in.
Choosing Between Languages
Choosing one programming language over another often stems from the specific needs of a project and the corresponding values of the chosen languages. For instance, while C remains a favored choice for system programming due to its performance and control, developers are increasingly considering Rust for its safety guarantees and expressiveness. Rust allows for high-performing software artifacts while preventing common pitfalls associated with memory safety, potentially making it a more appealing option for developers accustomed to C. Ultimately, the decision reflects a deeper consideration of trade-offs and the kind of software being developed.
The Importance of Heterogeneity
The discussion emphasizes the necessity for a diverse range of programming languages and tools to serve different needs within the industry. When developers adopt idiosyncratic solutions, such as using Scala where others might opt for Java, it often resonates with more profound reasons beyond conventional wisdom. This heterogeneity fosters innovation and caters to a variety of problems, as developers might innovate faster when they don't feel confined to the mainstream choices. Thus, the podcast advocates for valuing all options, rather than defaulting to more popular or safer technologies.
The Future of Software Development
The conversation touches upon the evolution and future direction of open-source software, particularly regarding proprietary models emerging in the cloud landscape. As major players like Amazon Web Services leverage open-source technologies to offer services, there's a growing concern regarding the commodification and potential re-proprietization of these tools. While this trend may raise barriers for future development, it also prompts a need for clearer licenses and governance models that protect the integrity of open-source innovations. As such, the software community faces critical choices about how to navigate this landscape and maintain a balanced ecosystem.
Which operating system is the best? Which programming language is the best? What text editor?
Bryan Cantrill, CTO of Joyent says that is the wrong question. Languages, operating systems and communities have to make trade offs and they do that based on their values. So the right language is the one who's values align with you and your projects goals.
This simple idea carries a lot of weight and I think has the potential to lift up technical discussions to a higher level of discourse. You will find it to be a helpful frame next time you need to make a technical decision. Bryan is also pretty excited about how the values of the rust community align with his values for system software.
Also we cover Oberon, Clean and Simula 4, none of which I've never heard of and how IBM System/370 's Global Trace Facility doesn't hold a candle to Dtrace.