Caffeine, Students, and Code, Oh My!
If that title gave you a small rush of adrenaline and an itch to pull an an all-nighter as you code with friends, you have probably experienced a hackathon. Truth be told, not all of us like staying up late and chugging energy drinks, but there is something infectious about being in an atmosphere where everyone is building cool things. What started in 2015, with teaching an underprepared workshop at a university hackathon, eventually grew into a (mostly) polished operation between Appian Engineers and local university hackathons. These are the stories of how we paired our penchant for teaching with late night coding marathons.
My first hackathon workshop is not what I would call a “career-defining success”. True to my nature I bit off far more than I could chew and assumed that Future Me would take care of the rest. Lucky for me, he managed to produce a well crafted workshop that would reasonably fit within the hour block I had been given. Unlucky for me, Future Me was a poor judge of what a hackathon workshop looked like.
My first hackathon workshop is not what I would call a “career-defining success”
Within the first few minutes of arriving at the hackathon I was met by a few critical surprises. One, there was going to be ice-cream and brownies right when my workshop ended. Two, I wouldn’t be presenting in a private room with a large screen, instead I would be teaching to my students in in the midst of all the hackers with no mic, and a projection sheet that was shorter than I was. But before I could even start to worry about how hoarse my voice would be the following morning, I had to find an adapter for my computer to connect to their projector. When I finally managed to get my resources setup and was preparing to present I was still holding out on the hope that only a few students would show up. Who would reasonably want to attend an Android lesson instead of the design, and hardware workshops going on either side of me? The answer was about 50 students, with no internet, very little programing experience, and no android studio.
Over the next two hours (did I mention we ran over by an hour? We did!), I labored to get at least a few computers set up for the workshop as I yelled over the roar of the room. I was running back and forth, passing around USBs with software, answering questions, and trying to at least cover some slides in the workshop. A couple mentors with android experience took pity on me and chipped in to help out. But even with their help, at the hour and a half mark I found that I still had half of the content in the workshop left. In a fit of desperation I focused on just getting through the content and letting students know they could do the workshop on their own afterwards. But the worst was yet to come: by the time I had packed-up and head over to grab dessert, the ice-cream had long since disappeared.
As I head out for the night, reflecting on the lessons I had learned, a group of students approached me for help with a mobile project they were working on. I reluctantly agreed to teach them the materials I had, and started off cautiously working through my content. I ended up sitting and teaching them all I could for three hours, asking them questions to quiz their knowledge and making sure they could complete each step on their own before moving on. I eventually called it quits at a good stopping point and wished them the best on their project with no intention of coming by the next morning. Almost a year later, at the same hackathon, I was tapped on the shoulder by one of the students (their memory was better than mine). I was surprised to learn that they hadn’t just managed to finish their hack, but had gone on to build a couple Android apps and were still doing Android development!
By the time it was all over I was exhausted, dismayed, pretty sweaty, but also exhilarated. Looking back, though it was disappointing to fail initially, I enjoyed going through a high intensity experience and immediately taking some of the lessons I had learned to start teaching students and impact their growth as developers. Since then I have never again attempted to execute a workshop solo, but if you do, you may as well give up on trying to do meaningful exercises. There is no way to teach content and simultaneously run to help people who are having technical issues. I am now also very particular about getting information from the hackathon coordinators about the attendees, workshop space, and resources prior to even attending the hackathon.
Before I started working on hackathons within Appian, I knew that I had a passion for teaching students — but I had never actually been to a real “hackathon” before at any university. For my first ever hackathon, I would be teaching students how to do Android development with a couple of colleagues during a workshop Appian was giving. This hackathon was Bitcamp at the University of Maryland; it gave me a crash course on what a university-style hackathon was like.
A couple of months before Bitcamp, Android development was as foreign to me as Calc 1 is to most people after they’re out of college. I dabbled with the technology for one project during my time at the University of Virginia, but when I tried looking at modern Android code, I realized that it had completely changed, and all of my previous knowledge had exited my brain on its own accord. To prepare for leading this workshop I practiced my slides over and over again until I felt confident; I played around with the sample application we were having students build and a couple of my colleagues taught me about the Android lifecycle (and gave me some basic pointers).
Leading up to Bitcamp we worked with organizers to make sure that students had reliable WiFi. While this required us to host the workshop early in the morning when most other hackers were sleeping, it paid off because they had to download hundreds of megabytes of dependencies for general Android development.
Then the day finally came: it was time for us to present the workshop at Bitcamp! I was pretty tired that day (I was actually at Bitcamp the previous night until past midnight presenting a git workshop and didn’t get home until past 1am). Of course the Android workshop the next day just had to start bright and early at 9am. Lucky for me I didn’t encounter much traffic on the drive back to UMD. I quickly grabbed some breakfast and made sure the slides were up on my laptop, ready to present.
The workshop was broken down into 3 sections: the first section was all about getting students’ development environments setup for Android development; the second section went over basic Android concepts and got students to write a simple application, where they could show some text on the screen and add a button to the screen they saw; the final section was all about using networking on Android to pull down the dankest of memes. Most of the slides I was in charge of presenting were on the basics of Android app development. To ensure teaching students went smoothly, I made sure to practice the slides I was going to present beforehand. I also incorporated short exercises into the workshop to help the knowledge stick to the students’ brains.
The biggest challenge we faced was during the last section on networking. The exercises we had set up for students to accomplish turned out to be too much for them to finish in the time we had left for the workshop. To fix this issue, we pivoted our approach and walked students through the code on the projector instead of having them complete it as an exercise. While this meant that we were the only ones with dank memes by the end of the workshop, we were able to complete it on time, and stuck around after the workshop to help students finish the app on their own computers.
When all was said and done, we had successfully given 40 students a crash course in Android development, it was a smashing success! I realized the impact of our workshop when groups of students came up to us afterwards and asked for pointers on how to implement ideas they had for various applications. Whenever I’m able to give students new skills they didn’t have before, I call that a great day.
The Hackathon Playbook
Over the last two years Appian Engineers have attended more than ten hackathons and have developed workshops for React, Android and Git. To meet this increase in activity we’ve had to get other engineers involved, and as Appian engineers have joined us, we have started keeping track of the lessons we’ve learned and present them to you as the “Hackathon Playbook”.
- Reserve 8 weeks to prep for a new workshop and 4 weeks for a workshop you have already made. You should also expect to spend between 1 to 3 hours each week.
- Get a minimum of 3 people to teach the workshop. Any more than 3, and you start lose continuity, any less than 3, and you have more work for each person to do. A 1:6 ratio of teacher/mentor to student is ideal to help keep students on track.
- Pick a technology that your company knows and that students can utilize in a hackathon. You don’t want to come off as a fraud when students start asking technical questions, nor should you waste students’ time with knowledge they can’t apply.
- Put your resources up online and give out shortlinks. After having students ask us to go back one slide (so they can visually diff their code with the slides), we published our projects and slides in github so that students can download them at the start of a workshop.
- Limit reliance on the hackathon’s wifi (regardless of what they tell you). Bring USBs, a non interactive backup plan, or even your own wifi!
- As you start going to more hackathons, make a checklist for engaging with organizers, preparing a workshop, and keeping track of what to bring to the hackathon.
- In case you missed it, have a backup plan.
- Talk to organizers to get at least the following:
- Private room.
- Projector and screen.
- Correct adapters.
- Expected number of attendees. Don’t be afraid to ask them to limit attendance.
- Internet availability and historical reliability.
- Tables and chairs (you’d be surprised).
Teaching workshops to college students at hackathons has proven to be a fun and rewarding experience for us. With the steps we have outlined you can deliver a stellar workshop and feel your impact as students use their newfound knowledge to build great projects. You can take a look at our current selection of workshops and tech talks on our github repository here: https://github.com/appian/hackathons.
Does your company host similar workshops at hackathons? Are you interested in mentoring at local hackathons? There is no shortage of lessons to learn about teaching so please share your thoughts, questions and experiences with us in the comments below!