Incidentally: An Interview with Nimisha Asthagiri
edX’s chief architect on why everyone needs to better understand software architecture
By Nimisha Asthagiri
Math and science are universal languages
Hi, I’m Nimisha Asthagiri. I came from India when I was about four years old. To be honest, growing up in New York as part of an immigrant family, English and some of the humanities courses were a bit tough for me—the culture mismatch. It was very much a bifurcation, what we did at home and in our local Indian community versus what happened at school. But math and science was something that just clicked. They’re like universal languages, right? That was my path to really enjoying school.
I eventually went to MIT for college. There too with immigrant family, there’s a lot of pragmatism. I’m the firstborn of three, so while I had a strong interest in physics, my parents were like “What are you gonna do with a physics degree?” They encouraged me to do premed, which I did.
What really got me into computers was freshman year. It was January, and we got the month off. We get to do what we want in college, so I joined this Lego robotics competition. Computer science was another thing I was interested in. There were three of us, myself and two other young women, and we just rocked it.
I worked mostly on the software engineering part of it. My friend worked on the hardware, building the robot and making it sturdy. Iterating on it, working together towards a common goal. The collaborative experience was just amazing. I was like, this is exactly what I want to do. That’s what got me hooked.
The startup versus enterprise experience
The startup experience, there’s so many different hats to wear and you just don’t know what's gonna happen the next day. Especially when you’re pre-IPO, there’s a lot of uncertainty—that's what makes it fun and challenging. You have a whole community of people you’re working with for a common goal. It’s a different experience completely than a big company where there are very specialized roles and everyone has a different place. One advantage of the big company experience is that you are really able to deep dive and become an expert in one area. And of course you have a lot more resources, so you’re not limited and don’t have to make pragmatic, financially-based decisions because of limited resources. The resources are there.
On leaving Microsoft to raise her family
I didn’t actually last at Microsoft for too long. At the time, I was on my way out of the industry. I had two kids and they were both under four. We had moved to California from the Boston area—my husband was tenure track at Caltech. We were very far away from family and so didn't get as much support from grandparents. I was actually only working eight hours a week while I was at Microsoft, so I didn't actually get the full Microsoft experience.
I did have a nanny to help me the first two years after my first was born, but eventually I left work. I was juggling a lot and I really wanted to spend more time with the kids, especially since my husband wasn’t able to spend very much time with them then. Now it’s flipped. My oldest is 19; he’s a freshman at New England Conservatory of Music studying violin. My daughter is now a junior in high school. My husband’s the one who's taking on a lot more of the childcare responsibilities, taking them places, helping them with college applications and college tours, and all that stuff. It’s allowed me to dedicate more of my time advancing in my career.
And reentering the workforce with edX
Before reentering the workforce, I was very active in my kids’ education. I was on the PTA board at their elementary schools, starting recycling programs and science fairs, things that didn't exist. I myself was teaching kids—not as a profession, more like after school enrichment, activities that I was doing for them. It was fun and exciting and there was a lot of creativity. How do you engage your students? Especially the youngsters who are bouncing off the walls all the time?
It just so happened that I got back into coding by doing some website work for the school. A friend of a friend needed me to work on a Microsoft.net application that needed some love. That's when I realized, Oh shoot, I can't believe I was away from it for so long. It had been eight years by then.
When I did see edX available as an opportunity, I was intrigued. It was the domain that I had been interested in even before my kids were born, and more so since having a family. At that time, edX was a nonprofit. Now it’s been acquired by 2U, edX will become a public-benefit corporation within a larger for-profit organization. Still the mission is a big part of edX. Quality education for everyone everywhere.
edX and open source
At edX, we do open source our technology, which I think is fascinating. I've gotten the opportunity to lead the open source portion of our organization. Open source is one of those things where you could do it from the perspective of benefiting the organization—if you think about developer capacity—but it’s also one of those things that you could think about from a mission perspective. How do you strategically place your business in the industry?
Because our technology is open source, we’re able to provide this education software technology, our learning management system (LMS) and our course authoring services, to anyone in the world. All of our code is available on GitHub, which anybody can download and use. We also have periodic named releases. Every six months, we have a release that we tag that people can use and know has been vetted. Otherwise, we use continuous deployment on our website, so every commit to master event gets immediately launched to production.
The other great thing about open source is that we have businesses who have formed around our own business. These development providers launched Open edX instances to serve the smaller needs of smaller organizations, universities, and so forth. So while on edx.org, only partners who have signed up with us are able to launch courses on our website, for everybody else, they can use the services that our Open edX development providers provide.
You don’t even realize how your technology is going to be used at the end of the day, especially when you open source. For our users, you now have a leg up. You don’t have to worry about these foundational things, because edX already has. You just focus on what you need for your own region and knowing your needs. Therefore there’s national platforms in Israel and Indonesia. They’re able to educate their own workforce, they're able to develop the regional courses that they need. You’ll see courses such as how to do farming and agriculture in different places, which edX may not put on our own website. But it’s needed. In Africa, there was a country that needed to educate their local population on how to use a medical device in response to a local epidemic, and they needed to educate everyone how to control it. They used our software to do that. So I think that’s pretty exciting.
Responding to COVID
As soon as March 2020 hit, countries were closing down and people were trying to figure out what they were going to do while they were quarantined. Online education became very popular as a choice. We started the Online Campus initiative as a way to provide free courses. Any university that wanted to use online courses for their student population could use it too.
With COVID, we were monitoring closely to see what the spikes were in our usage. It was the organic traffic that was coming in through our B2C learners. There was a three-times uptick, and it was happening very rapidly. We put a tiger team together to assess our website’s current standpoint as we expanded our databases to scale. There was some low hanging fruit in our application layer, things that we made sure we addressed. When you have microservices architecture, sometimes you end up having a distributed monolith, where there's too many dependencies across services. We found potential bottlenecks, so rapidly worked on those things as well. We use Amazon as a hosted service, and they had said to us, “edX did really well through the COVID spike, just keeping up with demand.” That was great.
From individual contributor to engineering manager
As a rejuvenated software engineer, as I said, I just really loved coding. I had forgotten how much I did! So I really enjoyed being an individual contributor. There was so much to learn. Python was new to me. Docker, containerization—all stuff I didn't really know a lot about. I also had not done cloud engineering at scale before.
I’m so glad that like edX took me on. I do remember there was one interview question where they were asking me about scale and websites, and I think the interview was trying to get me to say caching. I didn't even think about that word. I did do well on all the other things so they took a stab at me. Working at edX, I asked a lot of, perhaps, innocent or naive questions of all senior engineers around me. So when they asked me to be a manager, three months in, it was surprising to me. I'm like, “I’m just getting started here.” I said no. Two or three years into it, they asked me again and I said no again. When they asked me for the third time, my own manager really needed support and so I finally said yes.
I did a lot of people management through my volunteer work when I was away, so it wasn’t one of those things I was really excited about at the time. But then what happened was I started to really just focus on architecture. Architecture seemed to be a superpower, but until then, a lot of the work was done very organically, a lot of emergent design. There wasn’t a lot of intervention. We were also slowing down. Success becomes inertia, right? For companies, you get distracted by what’s working and therefore you make assumptions about what will work. It prevents you from innovating.
So when I first started to focus on architecture, I did that individually for about three months. They were seeing the outcomes and were like, “You know what? We can accelerate this. Here's a team.” As chief architect, I could lead by influence for sure, but they still needed someone to manage a team. So I said, “OK, fine. I will now manage this team.” My team was able to replatform a big chunk of our frontend technology, which has enabled us to move a lot faster in our frontend development.
It was only through that experience that I realized—you can go fast alone, but you can go farther together. We need to empower other engineers, we need to enable them, we need to educate them. We need to work on our communication, on how we're going to get there together.
We need to upskill everybody in architecture
I had the opportunity to help create our career skills pathway at edX. Eventually we did create a pathway for the management track and another one for the individual contributor. We were trying to figure out where “architect” goes—should we have a separate track for architects? My mindset about architecture is that, at the end of the day, we need to upskill everybody. All engineers and managers need to understand the architectural implications of the work they do. Architecture operates not just at the macro scale but also at the micro scale, so every decision that you make—even for a single line of code—has design implications. Where you are going to put this line of code, whether it’s within this boundary or that boundary. We ended up embedding architecture skills both in the pathway for managers as well as for ICs.
Right now, our highest level on the IC track is staff engineer. For me in my role as chief architect, my responsibility is to make sure our staff engineers have the space and time to lead the organization technically. Part of that is reminding them of the power and influence they have. When you're there on the ground and in the code, you have a lot more understanding of the organization’s technology needs. So it’s important for them to have the skills to advocate for technical needs and to make a case for changes. We want ICs to push for technical debt changes or for the removal of code as much as addition of code—things that are so important for everyone in the organization.
Situational technical leadership
In management there’s a concept called situational leadership, how—depending on the situation—you would coach or direct someone or delegate someone differently. I think the same thing applies to technology, architecture, and design.
It’s something that I’ve learned over time. At first, I was like, “We’ve got to design it well, elegant.” I had been coming from a waterfall mindset, because when I left the industry, waterfall was the big thing. Me coming into this whole agile way of thinking made me try to figure out: how do I think about this differently? The industry hasn’t yet figured out how to do architecture in an agile way.
Basically, it’s not one size fits all. It really depends on the needs of the business at the time. Maybe you are just prototyping, a particular feature is still going through emergent design, and you need to innovate and figure things out quickly. You write the code in a very prototypical way so that it can be thrown away. At that stage, you don’t necessarily want to spend the time to do the design and architecture right because it’ll probably be the wrong answer and so a waste of time. That's the situational leadership perspective of it when it comes to technical design.
At the end of the day technology is there to make the business succeed, whether your business is for-profit or nonprofit. The technology strategy really needs to be very coupled with the business strategy. There are so many technology practices that fit the definition of “done right,” whether it's relating to security, internationalization, localization, testing coverage. But we need to be strategic about which things are important at a particular time, for that particular feature, and for the company. Whether you’re at a financial versus a tech company, there are certain aspects of security that are a lot more important for one than another. For edX, using the latest, cutting-edge cipher in our encryptions will not necessarily be our thing—but it might be for another company.
Shipwreck Arcana is a collaborative game. You know, in the tech industry we tend to be very competitive, but it's a collaborative need that we have to succeed. This is why I got into computer science in the first place! It’s such a collaborative experience. So Shipwreck Arcana is a card game and it has, you know, different characters. You’re all together, and all the players are competing—essentially—against time. And that is really fun. It's mathematical as well. All the different cards are talking about these different mathematical concepts.
It’s those types of collaborative games that I really enjoy, even Pictionary for instance. It doesn't really matter how you draw, as long as you're getting your message across. How are you drawing those scribbles in a way that might actually be giving a clue?