MBAs typically don’t code for a living. But they should still know what goes into building an app, says professor Raghu Betina, AB ’13.
- January 10, 2019
- Classroom Experience
There’s something you should know: building an app isn’t as out of reach as it seems. There isn’t a separate species of “tech” people. With an idea, persistence, and a pragmatic introduction, you too can write software. And since software is eating the world, it’s a good idea for managers to experience developing it.
When I was an entrepreneur in India, I hired and managed developers to implement my ideas. I didn’t know what problems they faced, I didn’t know the answers to the questions they asked, I didn’t know what I didn’t know, and I didn’t even know how to find out. Sometimes I got lucky with an effective lead developer, and other times six months would pass with no software being delivered.
I decided to return to college—I had previously dropped out to become an entrepreneur—and study computer science. However, I didn’t find computer science applicable to building my ideas; it’s more like the math that governs how computers work. I liken it to how chemistry governs how paint works, but you don’t need to learn chemistry in order to paint.
I switched my major to economics but still hadn’t quite graduated when I heard about one of the first “coding bootcamps” (before they were called that). It promised a practical introduction to programming. Within weeks, I was implementing ideas I’d had for years, and I became 10 times as effective at managing software projects. Once I saw how productive beginners could be with the right instruction, I dropped everything to teach, first at the school where I learned to code and eventually back at my alma mater, the University of Chicago.
Most introductory computer science classes are about algorithms or a single computer language, which for beginners is intimidating, confusing, and largely beside the point. In our class, students prototype their own idea on day one. I built a visual tool that allows students to skip right to the important part—figuring out a data model for their idea and generating an interface to it. This initial prototype will be ugly, but it’ll mostly work. Then, week by week, they learn how to improve it.
“We send a rubber duck home with each of them to talk to, since half of the time just verbalizing your question leads you to an answer.”
The first few weeks are spent gaining literacy in HTML, the lingua franca of web browsers and the easiest starting point. We then acquaint ourselves with an open-source bundle of prewritten HTML called Bootstrap, originally developed at Twitter, that produces nice-looking, mobile-friendly pages out of the box. And then we shamelessly steal it for our own apps!
Next we learn Ruby on Rails, another open-source framework, this one for building robust web applications. The philosophy of Rails is “convention over configuration”: for any common task, the framework offers you a built-in default way of doing it, and if that’s good enough for you, you can avoid a lot of code. This philosophy, prevalent throughout the Ruby open-source community, allows beginners to make progress incredibly quickly—and is also why it’s the choice of companies such as Airbnb and Kickstarter.
The final weeks are spent refining and deploying students’ final project ideas and discussing how to apply the technical literacy they’ve gained to management.
In the past we operated as a traditional lecture class, but I’ve moved away from that. People write code at wildly different paces—forcing everyone to try and keep up with me during lecture led to some students falling behind for no better reason than that they made a typo. So we’ve switched to a “flipped” classroom, in which all of the introductory material is recorded in videos and students watch it on their own, when they’re free to pause, skip back, and listen to something again. The invaluable time when we’re all in a room together is now dedicated to tackling more challenging projects, which used to be homework.
The projects are all real apps that are either incomplete, or that I have planted bugs in, and students have to fix them. I provide an automated test suite with every project, which mimics the actions of an actual user—it clicks on every link and tries every piece of functionality. This gives students immediate feedback on how they are doing, and also familiarizes them with a very important concept in the real world, known as “test-driven development.”
I have two faculty coaches, who are professional developers, rather than traditional teaching assistants. We circle the room while students work, prowling for questions. The most precious moment is when a student has a question. I’ve always loved the quote from Clay Christensen: “Questions are places in your mind where answers fit. If you haven’t asked the question, the answer has nowhere to go.”
Even when they are at home, we still want students to ask lots of questions. We send a rubber duck home with each of them to talk to, since half of the time just verbalizing your question leads you to an answer. For the rest of the time we’re working on a tool that awards participation points for posting the most upvoted questions—hopefully the so-called dumb questions that everyone is thinking but is reluctant to ask. Voicing these questions is the most helpful thing students can do, for themselves and for their classmates.
We don’t have to adhere to the typical curve since we’re a lab class. We hope students are talking to each other. We don’t want them to be afraid to learn something new because they might end up at the bottom of a curve. It’s not about how they stand relative to other people, just about how they stand relative to yesterday.
About half the students intend to work alongside developers, for example as product managers; a quarter want to build prototypes for a business they intend to start; and the rest aim for careers in consulting or financial services and want to know how to evaluate technologies or technology companies.
After teaching thousands of students, I do think there’s something that makes the ones at Booth different. They have a combination of real-world experience, problems they are itching to solve, extreme brilliance, and an appetite for hard work. We try hard to make this course as easy as possible, but it’s still intimidating if you’ve never seen a line of code before. Booth students have a lot of grit. They will persist in the face of difficulty.
Booth has been fantastically supportive, allowing us to experiment and providing resources to do so. When the course was first added, one proposed title was Computer Science for MBAs. I was vehemently opposed to that, since this is not a traditional CS course somehow modified for MBAs; this is Application Development, designed from first principles specifically for managers. We now offer six sections per year, and there has so far always been a waiting list, although it is my goal for there to be enough supply to accommodate every student who wants to sign up.
Susan Franzini, Evening MBA Student: I could go on for days about AppDev—I absolutely loved the class. It demystified technology for me. It taught me that I can be successful and have fun while pushing myself way outside my comfort zone. I had not seen one line of code going into the class, but by the end of the quarter, I found myself essentially rebuilding Instagram and IMDb. That personal experience has stuck with me in big ways since the class. It instilled an eagle eye for detail. And it’s fun. The professor is dynamic and makes the class extremely engaging. You get to collaborate with your classmates and bond over something really challenging but rewarding. You also have access to incredible faculty coaches who are wildly smart and generous with their time.
Julia McInnis, ’17: I took the class because I knew absolutely nothing about tech development but knew that I would need to know something about it as the founder of an online platform. I learned a lot about the “guts” of how websites and apps work, and I learned some general frameworks for creating them by writing code and managing the product development process. The class has enabled me to work with my web developers and actually understand what they are creating and how we can make our company’s product better. Digital tech touches everything that we do, and even a basic understanding of how online products are built and managed will give Booth students advantages in their careers.
We'd love to hear your Booth memories, stories, connections...everything.