PhDs come to work at Meta Research from a wide variety of disciplines related to computer science and engineering. Research Scientist Shaz Qadeer joined Meta to work on blockchain and cryptoeconomics research on the Meta FinTech team. Recently, he was named a 2021 ACM Fellow for his contributions to software verification and testing. This nomination-based program recognizes the top one percent of ACM members for their outstanding contributions to the field of computing and information technology, as well as the larger computing community.
We reached out to Shaz to celebrate his accomplishment and to learn more about his journey before coming to Meta, what research at Meta FinTech looks like, what advice he would give to others looking to follow his path, and more.
Q: Tell us a little about your academic and professional background.
Shaz Qadeer: I received my PhD at UC Berkeley, worked at Compaq Research in Palo Alto for a few years, and then moved to Seattle to work at Microsoft Research where I executed the bulk of my research activities. Subsequently, I wanted to be closer to applications and product development, so I moved to Microsoft Azure for a brief period before landing at Meta three years ago.
My research and engineering activities could be put under the broad rubric of Software Systems. Within this broad area, I work close to programming languages, program analysis and verification, and programming tools. I have focused my efforts on improving the programmability of concurrent and distributed systems.
Q: How did your journey at Meta FinTech begin?
SQ: I joined Meta in 2018 to work on the Diem blockchain at a time when both Meta and Meta FinTech had different names, Facebook and Novi, respectively. Given my interest in programming techniques for distributed systems, programmable blockchain systems were a natural draw. At Meta, I helped with the design of the Move programming system — language, virtual machine, and prover.
Q: What are some of your passions? What motivates you?
SQ: I like to make complicated things simple. It is immensely gratifying to me when I am able to strip away the non-essential complexity of a problem to reveal a simple solution that can be understood and implemented broadly. I have been inspired by three individuals — my father, Abdul Qadeer Siddiqi, who advised me to pay attention to the basics; my PhD advisor, Tom Henzinger, who advised me to think hard about framing a question before attempting to elaborate an answer; and Leslie Lamport, who advised me (and all engineers) to treat mathematics as a friend and not a foe.
Q: What does blockchain and cryptoeconomics research at FinTech look like? What are you currently working on?
SQ: We have support to pursue whatever research agenda we’re interested in. We’re seeking to build the next generation of large-scale systems. We cannot get there without advanced cryptography and programming tools that improve programmability by an order of magnitude.
For the last year, I have been working on a new system that addresses the problem of shared state in a manner similar to blockchains but in a vastly more scalable manner. One way to think of this system is that it is a way of programming a network of “blockchains” connected via replicated logs, thus allowing a seamless transition from distributed systems running within an organization to decentralized systems running across multiple organizations.
Q: You were named a 2021 ACM Fellow earlier this year. Can you tell us more about this accomplishment and the contributions named in the award?
SQ: I was elected ACM Fellow for my “contributions to software verification and testing.” Earlier in my career, I invented a method to test concurrent systems that made it possible to quickly identify and fix nondeterministic “Heisenbugs.” Before this work, it was believed that the only way to find these bugs was to create large workloads and chaotic execution conditions, which was not only difficult to do but also made debugging very hard. Later, I developed a domain-specific language for modeling and programming asynchronous systems. These programming ideas and tools have been deployed in the software industry in a variety of large systems.
Later, I turned my attention back to program verification, my favorite technical area within the space of software systems. I developed a verifier for concurrent programs that allows the construction of layered proofs of correctness. In a layered proof, there is a chain of programs from very concrete to very abstract, connected such that the safety of the most abstract program implies the safety of every other program in the chain. My verifier brought refinement of software systems, an idea pursued by many eminent computer scientists (Edsger Dijkstra, Niklaus Wirth, Leslie Lamport, to name a few), within the realm of practicality.
You can see my full list of publications on my Google Scholar page.
Q: What advice would you give to others looking to follow your path?
SQ: I recall that when I was a fresh PhD student, I would look at a research paper and wonder about the process that enabled the authors to write it. Even a brief moment of reflection would reveal that a lot is involved: identify a problem, solve it, and then write up the results in a manner that convinces a collection of skeptical reviewers. Pursuing a PhD essentially taught me to accomplish all that in a somewhat systematic manner. Later, when I worked at a research lab, I was doing the same, but the stakes became increasingly higher for me. Not every problem was worthy of my attention, and convincing myself of the solution became a higher bar than convincing reviewers. At one point, I came to the conclusion that devising solutions for others to put into practice was not enough. I needed to assert more control over the practice, and this led me to my current position at Meta FinTech.
It is difficult for me to offer advice to others. You can blame my father; he once noted that offering unsolicited advice is a good way to make enemies. I will simply offer a few general ideas. First, there are many ways to make a difference. The most important thing is to identify what you are passionate about. It is much easier to be good at something you are happy doing. Second, if you find research and scientific activity is your passion, you might find a clue or two in reading good articles written by scientists in your field. I found Dijkstra’s “The three golden rules for successful scientific research” inspirational about how to ask scientific questions and perform investigations.