By Grace Teng – First Published in April 2023
So you’ve decided you want to become a software engineer, but you don’t have a background in computer science. That’s a very common profile for the current or prospective MCIT student. It’s also the target market of the typical full-stack web development bootcamp. Perhaps you’re in the process of choosing between the two paths, or perhaps you’re already an MCIT student and wondering if you have made the right choice. In this article, I’d like to share my personal experiences as a bootcamp student, and also as an MCIT student, and how they’ve both contributed to my current work as a software engineer.
My path to software engineering
I’m a COVID career changer: I decided that I wanted to switch to software engineering in April 2020, three weeks into Singapore’s COVID lockdown. I finished a 9-week web development bootcamp in October 2020, then TA’ed the full-time bootcamp until December 2020 and the part-time bootcamp until July 2021.
I started the MCIT Online program in January 2021, beginning with 591 and taking one class a semester, including summers. I completed the core last semester and am now doing 5530 (Networked Systems) as my first elective.
One week after the start of the Spring 2021 semester, I began a four-month traineeship at a software consultancy, which I eventually joined as a full-time graduate software developer in June 2021. Most of my work these days is done on Spring Boot, but I’ve also worked with Django, React, Express, and other frameworks along the way.
Because of my experiences with these three different spheres of my technical education, I’d like to believe that I am well-placed to discuss how bootcamps and MCIT compare with one another.
Before we continue, I’d like to emphasize a few key points:
- Everything in this article is based on the experiences of a single person. There should be no expectation that the conclusions I draw here based on my experiences will translate to your circumstances.
- The bootcamp that I attended was a web development bootcamp, aimed at placing students into junior full-stack SWE positions. If your goals are different – say, if you want to become a data scientist and are wondering how a data science bootcamp might compare to MCIT – then I’m afraid I have no such insight.
- MCIT students are all interested in learning computer science, but for different goals: some want to change careers completely, some want to add technical knowledge and skills to their existing job functions or industries, and some want to learn just because. This article is most relevant for the complete career changer, because that’s whom most bootcamps target.
The MCIT Online experience
Even though you’re reading this on the MOSA site, I’m going to assume that you don’t know what MCIT is, and give you a quick overview anyway. In my view, simply articulating what MCIT is, and then articulating what a bootcamp is, is enough to highlight most of the key differences between the two.
Penn’s Master of Computer and Information Technology (MCIT) program is a graduate degree program intended for students without an undergraduate background in computer science. The program requires ten classes, six core classes and four electives. The core classes are:
- Introduction to Software Development
- Data Structures and Software Design
- Introduction to Computer Systems
- Computer Systems Programming
- Mathematical Foundations of Computer Science
- Algorithms and Computation
The remaining electives come from the pool of classes that Penn’s Computer and Information Science Masters students take on their way to the MSE-CIS degree, implying that the core MCIT classes prepare students as well as an undergraduate major in computer science for graduate-level computer science work. It’s also worth noting that this is true of both the on-campus and online MCIT programs.
What is specific to the online program is that lectures are pre-recorded and asynchronous, and the pool of electives for MCIT Online is significantly smaller. In particular, CIS 5570 (Programming for the Web) is not available for online students, and this means that MCIT Online students do not have a class where we learn how to build web applications. That becomes salient when we look at the bootcamp experience.
The bootcamp experience
The bootcamp that I attended lasted 9 weeks (full-time). The tech stack was centered around Ruby on Rails, and the schedule over 9 weeks looked like the following:
- Weeks 1-2: Ruby
- Week 3: SQL and ActiveRecord
- Week 4: HTML and CSS
- Week 6: Ruby on Rails
- Week 7: Group Project 1
- Weeks 8-9: Group Project 2 and Demo Day
From weeks 1 to 6, the typical day starts with about 1.5 hours of lectures. Lectures alternate between slides and live coding, where the instructor types the code and demonstrates how it executes in real time. After that come the challenges, which require you to apply the concepts and skills demonstrated during the lectures. During this time, students can raise a ticket to ask instructors or TAs for help if they’re stuck with a challenge. There are also optional challenges every day that will stretch even the most capable students who finish the required challenges with time to spare. The last hour of the workday often involves another round of live coding, this time with a student at the keyboard and the rest of the class assisting them.
Weeks 7 to 9 are quite different. The day might still begin with lectures, but instructors have more latitude to deliver lectures that are relevant to the projects that students have chosen to build. After the lectures, students break up into their teams and work on their projects; they can still raise tickets to ask for help from instructors or TAs, but at this stage the problems are more complex and sometimes take upwards of an hour to solve even with the help of teaching staff. For each project, there is usually a mid-project demo and a final demo. In each demo, the teams demonstrate at least one major user flow through the application. Demo Day, the final demo of the second group project, is open to the public.
One thing to note is that the course description for CIS 5570 Programming for the Web covers very similar ground: HTML, CSS, Ruby, Rails, and a web application as a group project. Although the technologies taught may be the same, I actually think a bootcamp is likely to do a better job developing these specific skills because of the relentless focus on practical, hands-on learning, and because a bootcamp is highly incentivized to be very, very good at teaching these skills in a way that a university simply is not.
This is a good time to explore the similarities and differences between learning with MCIT, and learning through a bootcamp.
Similarities and Differences
Let’s address the similarities first, to get them out of the way. In my opinion, there is really only one similarity, and that is the overlap in the respective target markets. Both bootcamps and MCIT target career changers who want to move into software engineering, but there are other potential students who clearly fall outside the overlap. For example, MCIT is also an option for:
- Students interested in academic research
- Self-taught software engineers looking to fill in knowledge gaps
- Professionals who want to understand how computers work, but don’t need to apply that knowledge as engineers or product builders: industry analysts, policymakers, consultants, etc.
A bootcamp would not address these students’ specific needs.
When it comes to differences, there are plenty. The first big difference is what you learn: the typical bootcamp will begin with something akin to 5910 Introduction to Software Development, cover some of the software design material from 5940 Data Structures and Software Design, and the rest of the time is spent building web applications. Some bootcamps might briefly cover data structures and algorithms to give their students exposure to the topic, and there might be dedicated technical interview prep sessions as part of a career preparation program, but that’s about it. The content of the two keystones of the MCIT core, 5930 Introduction to Computer Systems and 5960 Algorithms and Computation, do not feature on a bootcamp curriculum at all.
This leads to the next key difference, which is the range of abstraction: 5930 and 5960 are at completely opposite ends of the abstraction spectrum. In 5930 Introduction to Computer Systems, MCIT students learn what computers look like underneath all the abstraction, while in 5960 Algorithms and Computation, we learn about computation without any implementation layer at all. As an MCIT student, you’re expected to be comfortable with computing at any and every level of abstraction. That’s not true of a bootcamp, where you focus on becoming familiar with computing at the level of abstraction of languages, frameworks, and APIs. Even a highly-regarded bootcamp such as Codesmith that focuses on how software works “under the hood” will not drill down to the level of 5930, or require proofs of algorithmic correctness like 5960 does. The upshot of this is that while a bootcamp graduate may be able to get up to speed faster on specific aspects of software development, an MCIT student will develop a richer mental model of how computers work as a whole.
That said, the bootcamp graduates who have the best outcomes in the long run will find a way to fill in their knowledge gaps: no bootcamp student imagines that 9 to 16 weeks is truly sufficient to learn everything necessary to be a software engineer. MCIT provides a structured way to build the foundation necessary for a long career in software engineering, which a bootcamp graduate may have to assemble in an ad-hoc manner.
The next difference is the learning experience: both bootcamps and MCIT can be done full-time or part-time, and bootcamps can be done in-person or remotely, but almost all bootcamps are synchronous. This means that you get plenty of contact time with the instructors. If you have questions about a lecture or a challenge, you can ask and get an answer right away. Feedback loops are shorter and tighter: there’s no waiting 24 hours for your question to be answered on Ed. As the bootcamp progresses, learning also gradually becomes more project-based. From about the midway point of the bootcamp, concepts and techniques will mainly be presented in the context of some real-world application. You might be learning how to consume an external API, but the goal is to build a weather application; you might be learning about the WebSocket protocol, but the goal is to build a chat application.
The fourth difference is time to job market: most MCIT students who do not have software development experience will start interviewing for internships or junior SWE jobs after having taken 5940/5960. This means that at a minimum, students need about 9 months of studies before starting to apply for roles. That’s much longer than the 3-4 months that a bootcamp takes. However, there is a big caveat here: many bootcamp graduates take a while to get hired, and are still developing their skills between graduating bootcamp and getting hired in their eventual role. For example, I finished my bootcamp in October 2020, but only got a permanent role in June 2021. I know of capable students who landed permanent positions right out of bootcamp, and many others who spent time honing their skills in contract roles before getting long-term jobs. While a bootcamp graduate may hit the job market earlier, that doesn’t mean they get traction on the job hunt right away.
Bridging the gap
MCIT students are absolutely capable of learning web development independently without the need for a bootcamp, but there are a few reasons you might consider a bootcamp all the same. As you can see from the bootcamp curriculum, there is very little overlap between what MCIT teaches and what a bootcamp typically teaches, so one perspective is that a bootcamp gives you some dedicated time to build a specific skillset and portfolio. In-person bootcamps can also extend your professional network and provide career support specific to your location.
If you’re an MCIT student and you’re worried about not having practical web development skills, there is a very straightforward solution: build stuff. That is what bootcamp students are doing anyway, albeit with the benefit of an instructional team that can guide them when they’re stuck.
If you don’t have ideas for what to build, there are plenty of staple exercises used in bootcamps and beginner web development classes: find an existing web application and try and clone one aspect of it. Wikipedia? Build a static clone using HTML and CSS that is equally responsive. Goodreads? Define what a minimum viable product for Goodreads might look like, and try to build that. These may not seem like things worth putting in a portfolio, but the point isn’t to produce totally original work, it’s to show that you’ve learned a particular skill.
If you have a chance to do a group project through SPARC, a hackathon, or similar, it’s a great way to demonstrate that you can collaborate technically with other developers. Group projects also tend to be larger-scale projects that you might struggle to complete alone. However, if you don’t have the opportunity to work on a group project, that should not stop you from developing your skills on your own.
More abstractly, I think it’s important to analyze what bootcamp graduates that have successful outcomes do well. Bootcamp students understand that the bootcamp credential means very little: as bootcamp graduates, they must rely on the value they can demonstrate to potential employers, and not on the reputation of their bootcamp. One way that I see bootcamp students do this is learning in public: by repeatedly advertising their commitment to improving their skills, bootcamp students not only show potential employers how they approach a problem, but they also signal that they are trainable as junior developers.
Penn is a known quantity for most employers, but MCIT as a degree program may not be. Us MCIT students could be better at articulating how our education helps us to be better engineers. We need to conscientiously craft a narrative about what we’re capable of, and not simply hope that Penn’s reputation will open doors for us.
In my opinion, both bootcamps and degree programs have their place. They are not true substitutes for one another, and if you’ve done one, there is still plenty to gain by doing the other.
However, if you’re in the MCIT program, you already have the ability and the knowledge to learn the specific skills and technologies that you need to be a software engineer without doing a bootcamp. If you’re considering doing a bootcamp, it should be based on considerations like learning modality, learning efficiency and career support, and not based on the promise of learning a specific skill set that you can pick up on your own.
As someone who’s gone through the bootcamp gauntlet and is now doing MCIT, I’ve gotten questions from people interested in both options and wondering if a bootcamp or MCIT will be a good fit. I hope this article helps to demystify some of the differences between the two, and provide some direction for what to do next on your software engineering journey.