I actually dropped Math and Computer Science as a dual major when I was in college in 2001. Advanced Calculus (Cal 3+) classes were a huge blow to my former enjoyment of math and quite frankly, I didn’t enjoy learning Java as it didn’t interest me creatively. So I switched to 3D Animation before I eventually left college altogether.
In 2003, I was a marketing assistant at a DJ School and I was tapped to help manage the website, officially earning the title “Asst Webmaster”. I had learned and consumed every book on web development then and realized there was a creative outlet for programming. From there, I freelanced and worked in advertising/media agencies as a front-end developer, building up my skillset and taking advantage of every opportunity I could to learn on the job until I transitioned into full stack software develpment.
As an experienced engineer with a non-traditional background (read: no formal degree, not a 9 year old programming wunderkind), as I grew I found it took years into my career to actually gain insight and mentorship from those in the space. With teaching, I sought out to be the resource that I didn’t always have when I first started out. Instead of holding on to some of the challenges I faced or perpetuating them as some weird pre-requisite, I explicitly choose to honor them instead by helping students face new ones while also being able to help them learn from the ones I’ve faced that they may face themselves or be able to avoid. Ultimately, I want to see an industry where the makers are as diverse as the consumers, where anyone with an interest and a spark can find their path here - teaching is my battleground on that front. I also, perhaps selfishly, live for those “Ah-ha!” moments when a student figures something out, when they realize they have what it takes, when they get that moment of clarity realizing that they are the engineer that perhaps they may not have thought they’d become.
My teaching style and philosophy are based on a few things: realistic engagement, enjoyment, practical skill building and community.
Realistic engagement: I’m a human being teaching other human beings. As such, we emote, we make mistakes, we have different levels and speeds of comprehension and content consumption. So I realistically set those expectations and normalize everything that makes us human in the classroom. I want students to feel empowered through some of the personal emotional struggles when something gets hard and let them know that many of us have been there too. I also want them to feel like they can run up and hi-5 me after class when they’ve finally figured out that one bug in their code. I don’t want to have a class full of coding drones, I want individuals bringing their whole selves to the process and embracing it as they go.
Enjoyment: we could all be anywhere else rather than class, and yes, it’s class and I’m teaching technical concepts - why can’t it also be enjoyable? I keep things a bit on the lighter side with the hopes that students can keep in on all the things they find enjoyable about software development for the rest of their journeys.
Practical Skill Building: Software development is both a science… and a trade. As such, I approach concepts by teaching the scientific/theoretical aspects, then putting those into practical, everyday practice. What use is learning about sorting algorithms if you have no idea how to wield it as a tool in your everyday software life?
Community: Each classroom is a community made up of smaller communities - students in a cohort, instructors, all of us together. Community building is key in software engineering as it helps us understand the value of things like open-source projects, sharing knowledge, working on teams/with others, as well as helps us center on making sure that we’re creating respectful, open, and collaborative spaces to learn, build and grow within.