As it turns out, not much at all
Earlier entries in this DAML guest series have explored how seasoned finance industry veterans from GFT and IntellectEU rate Digital Asset’s smart contract language, DAML, for building solutions based on distributed ledger technology (DLT). But what about young, relatively inexperienced programmers? In this blog entry we profile a small group of university students who spent this summer with us using DAML to prototype a market infrastructure.
Look to the documentation of many blockchain-based DLT platform architectures (Corda and Hyperledger Fabric, to pick two well-known examples) and you will find that you can write contracts for those platforms in a wide variety of popular general-purpose languages such as Java, Python, Kotlin and Go. The prevailing wisdom is that to attract developers to these new DLT platforms it’s necessary to allow them to use favorite, familiar languages in writing smart contracts.
At Digital Asset, we believe that DLT smart contracts require a new architectural style of programming, and that the design of smart contract languages plays a foundational role in bringing this new style to life. Over a series of blog entries (starting here), we detailed our reasoning for this thesis and introduced our own smart contract language, DAML — carefully outlining the properties that make DAML the ideal choice for coding any contract, especially those that involve a transfer of value.
Of course, such a position invites the counter-argument that requiring developers to learn a new language will surely limit acceptance of the Digital Asset Platform. Well, as we anticipated — and are now validating — nothing could be further from the truth. In fact, having a language specifically tailored for building workflows that synchronize business process orchestration is proving to be an asset, not a limitation.
There’s no better way to dive into this debate than to talk to developers who have been working with the DAML SDK Developer Preview.
Fortunately, we didn’t have to go very far for some of these discussions. Six university students, with one, two, and three years of schooling under their belts, spent this summer with us in our New York headquarters as part of an engineering internship. Their mission — successfully accomplished — was to use DAML to build a complete, working financial market infrastructure that will be used as a fully operational reference implementation in the SDK documentation.
None of our interns had any practical experience in financial markets — and certainly had never seen DAML — and most had not done any significant programming of any kind prior to starting their university education. Upon arrival in NYC, they were given the same two-day syntax and semantics training that we provide our customers and development partners, then were set loose on the project.
So, what did a group of relatively new programmers feel about learning a new language to build complex workflows for an industry they did not know? Universally the feedback was that it was not a problem at all and, in fact, having a tool tailored for the job was crucial for their success.
Sarah, who leaves us to enter her senior year at Colgate University, entered the internship fairly fluent in Java, Python and C — which is actually her favorite language. Having an affinity for a low-level language such as C, you might think that Sarah would have viewed the domain-specific DAML as limiting — but that was not the case at all. “Having a language that abstracted for the domain of contracts helped me compensate for my lack of knowledge in that domain”, she says. “It got me out of thinking of computer science in a traditional way, and let me focus more on simply coding the financial workflows.”
“I think our familiarity with programming in general expedited the process of getting onboard, then we just dove in and started creating contracts with DAML. We picked it up quickly.” — Sarah
Jamie, Stanford University class of 2020, got his programming start with Java but has since added C, C++, and Visual Basic to his repertoire in his two years at Stanford — and is looking forward to working with Python and R in the coming year. Unlike Sarah, Jamie prefers the higher-level Java as his go-to tool, and characterized the shift to DAML as “seamless”. Although he did grow up with an awareness of finance due to family members in the business and did spend a summer working in venture capital, the use cases he faced at Digital Asset were totally new to him.
“I really enjoyed using DAML to specify choices that can be made on contracts because the process makes me think about how things are working in the real world. It’s clear that DAML was designed with this in mind, and it makes it so easy to move from a mental model to code.” — Jamie
A trio of our interns came to us from the Carnegie Mellon University class of 2020, but from very different programs. The CMU computer science department has a strong functional programming heritage, and so Chiara and Bulut had a bit of a heads-up coming into DA because DAML is built on functional programming principles. Both know SML, and Chiara has also picked up Haskell. Python is also a familiar friend to both of them.
Although she is a teaching assistant for C, Chiara prefers high level languages because they lead to more abstract thinking — so DAML was a natural fit. “DAML is a high level language but it’s built in a different way”, she says. “It deals with a topic I’ve never seen any other language handle well before.”
“I had never modeled a workflow before, but once you know how to write a template in DAML you’re pretty much done! It helps you focus less on the language and more on the finance.” — Chiara
Bulut has a different preference for language type. He is a teaching assistant for Python, but prefers languages like C and SML because, like Sarah, he enjoys having more control. Still, he feels that DAML was perfectly suited to the task at hand — coding contracts that model the transfer of value.
“I wondered why they needed to create a new language. But then every time I had some small thing that needed to be addressed in the contract I found that DAML had exactly the right feature!” — Bulut
Jordan is also CMU 2020 but is enrolled in the school’s cognitive studies program. Programming is his passion though, and although he doesn’t yet have the same functional programming background as his CMU classmates, he does have the same education in Python and C. Jordan characterizes himself as “an algorithms guy”, and so modeling the rules behind financial workflows definitely was in his wheelhouse. He characterized DAML as “very intuitive and readable” and, like Bulut, noticed that “everything I needed to code for a contract had a particular DAML function built-in.” Jordan also felt that DAML was well suited for the financial professional, not just the professional programmer.
“I think it might be even easier to learn DAML if you understand the domain first. If you understand what you need to implement from a contractual point of view first, it would be so easy to pick up DAML and code it.” — Jordan
Ironically, the youngest of our interns, Varun, University of California/Berkeley class of 2021, came in with the most programming experience. Varun started programming in 6th grade, learning the standards such as Java and Python but also using MATLAB for an artificial intelligence project. He also had an understanding of finance through his father, and had taken some business classes. Still, he had never programmed contracts before and says that “it was a lot easier to pick up DAML than most other languages just because it’s made in a really simple way.” Varun found that DAML made coding contractual workflows so much easier because the code was so closely aligned to these concepts.
“Even if you’re comfortable with another language, the little time it takes to learn DAML is a great investment in the long run because of the amount of coding that is abstracted away. It’s much better than repeatedly coding Python patterns.” — Varun
Well, there you have it; a set of university students with quite varied backgrounds and preferences putting DAML to productive use with very little effort.
Join the community and download the DAML SDK at daml.com
This story was originally published 2 October 2018 on Medium