Code Forward 2020: Program Reflections from Lead Instructor, Phil Gonzalez
Structuring an educational program is tricky. There is consistent give and take between breadth and depth, approachability and rigor.
In the myopic, Insta-worthy internet era, many favor what this author calls the exposure approach: expose as many students as possible to a given concept, and measure success based on the number of attendees. There is nothing inherently wrong with the exposure approach (it introduces CS to many people for the very first time!). However, it also begs the question, what’s next?
In a world swimming with free programs seeking to “expose” individuals to computer science, there aren’t many offerings that show students just how deep the rabbit hole goes.
Devetry’s Code Forward
After ten months of teaching this year’s Code Forward cohort, it’s difficult to believe that our graduation ceremony has come and gone. Starting with 42 students and graduating only six of them, many would interpret this metric as a program failure. However, those of us who have seen this cohort from start to finish will tell you that those two numbers underpin a resounding success story.
Many of the students who signed up for our program had no idea what they were getting themselves into. A free, local coding class encountered on the internet blends in easily with other free activities advertised online such as painting classes or softball leagues.
It’s easy for a prospective student to think, “I want to learn how to code,” and sign up for the class. However, it’s an entirely different story for that same student to sacrifice nights and weekends over a sustained 10-month sprint.
What differentiates Code Forward from more traditional boot camps is that it requires neither a challenging entrance exam nor a dime to enroll. A consequence, however, of a rigorous program with zero barriers-to-entry, is that it will have a high attrition rate. We could have provided a “more gentle” program focused more on exposing students to technical ideas than ensuring they were industry-ready. Our graduation rate would have undoubtedly increased, however, the quality of the course material would have suffered.
We opted for the more rigorous approach, believing that if we could provide even one student with the tools they needed to succeed in this industry, it would be a success.
Our students were all locals of the Denver metro area. Many of them had never written a line of code in their lives. Some came with prior programming experience. One was working as a WordPress developer.
Our instructional team consisted mostly of volunteer instructors who, after finishing their day-jobs as software engineers, excitedly packed into an oversized coworking space to help others learn the trade.
Class began promptly* at 6:00 PM and ended around 9:00 PM every Monday and Thursday. Outside of class hours, students were expected to spend roughly 15 hours per week completing homework assignments and working on group projects. For those counting at home, this equates to over 20 hours a week; more than enough to be considered a part-time job.
A challenge of this model is that if a student drops off the map for even three consecutive classes, they would often be too far behind to recuperate. The instructional team did what we could to catch-up any one student, however, to keep the total length of the course down, we moved forward more often than not.
The balance between student comprehension and course duration was a delicate one. On a number of occasions, we repeated a lesson or even added additional units. The total course was originally supposed to last seven months, but it ended up taking ten. Each time we pushed back the graduation date, we did so with the understanding that our students needed to be okay with the additional time commitment.
In the end, we graduated six students, with one departing early to accept a job as an Information Security Analyst at Wells Fargo. Though this role doesn’t strictly fall under Software Engineering, it’s in an adjacent field. The student’s recruiter also informed them that their work in Code Forward directly contributed to their offer of employment. Had our program opted for an exposure-based approach, it’s unlikely that we would have seen such an early success.
Students graduated from the program with not only deep technical knowledge in full-stack application development and deployment, but also agile workflows, legacy codebases, and data-structures/algorithms. The skills the students cultivated required a sustained commitment. There was a tacit understanding between instructor and student that the program would regularly push them beyond their comfort zones. By embracing this paradigm, the students acquired a deep understanding of web development, that would have been impossible in an exposure-based environment.
A huge emphasis was also placed on technical communication and community integration. Students were expected to not only solve engineering problems but communicate as engineers. Students pair programmed every other class, and by the end, had presented their technical innovations in two public forums, once at the PyDen monthly Meetup, and again at their graduation ceremony.
Looking back on the course, there were a number of things we did well, which allowed us to provide an in-depth student experience.
One of the easiest wins for us was introducing Slack and Git from day one. Students acclimated themselves to industry-standard communication and workflow tools early, and instructors were able to quickly respond to issues with code and process right away.
Another win was using traditional CI tools (Travis in our case) to automate assignment grading and feedback. From day one, students submitted pull requests on Github, and Travis notified us which students were on track and which needed additional support. We could easily open a Travis build log to provide students with the exact information they needed to get unstuck.
Yet another large win for us was enforcing a process for how students were allowed to ask for help. Before a student could raise their hand (or post in Slack) they were required to follow a strict procedure that included documenting the expected vs actual behavior and outlining what research they had done to resolve the issue. If a student simply told an instructor, “it’s not working” without having followed the process, we would ask for a write-up before we began debugging with them. This enforced a culture of autonomy, prepared students for how to properly ask for help in industry, and further differentiated our program from its exposure-based counterparts.
Finally, the biggest win for us occurred later in the program when students were working on their legacy codebase group projects. We introduced the students to Kanban boards, daily standup meetings, and reviewed the use of Git branches, pull requests, and code reviews, and then turned the students loose. Using the skills developed throughout the course, teams were able to mesh together disparate concepts to produce near production-quality applications.
Though we still believe our six graduates represent a huge success for our program, there are many opportunities to improve the next iteration.
The first biggest challenge was stamina, both for our students but also for our instructors. Given that this was not a traditional boot camp, and reliant primarily upon volunteers after the workday, instructor and student burnout was a concern. We are exploring different ways of structuring the time commitments of instructors and students to ensure people are arriving to the classroom as “fresh” as possible.
Another challenge was access to adequate course resources. We relied heavily on existing open-source instructional materials, however, in many cases, lesson plans or activities did not exist for what we wanted to teach. In those cases, we had to make our own materials, often with days or even hours notice. We hope to reuse many of the resources we created this time for the next cohort, however, because tech is a rapidly evolving ecosystem, this will likely prove challenging.
As mentioned in the preamble of this post, structuring an educational program is tricky. We at Devetry still have many lessons to learn in order to provide the best educational experience for our students. We remain committed to providing an excellent program for those who are able to stick with it. Congratulations to our graduates– you made it all worth it.
Interested in hiring one of our graduates? Please contact Philip Gonzalez at email@example.com for more information.