Written by Insights

My Teaching MVP

My teaching minimal viable product (MVP) focuses in on my passion for building smarter experiences that educate, inspire, and inform diverse audiences.

This is my Teaching Minimal Viable Product (MVP) that I created just after finishing my Master of Science degree in Applied Information Technology at George Mason University. I once thought about being an Associate Professor at Mason but came to realize that I could teach more people by speaking at conferences, podcasting about niche topics, and writing down my strategies.

I might someday return to the idea of becoming a University Professor one day. If I do, this is where I would begin:

Why I Want to Become an Associate Professor
I am passionate about building smarter interactive experiences that educate, inspire, and inform diverse audiences. For over 20 years, I have led development teams — from early strategy and planning through information, interaction, and design.

My relationship with programming has been a mix of both love and hate. When I first learned to program with it while crafting Java Servlet Pages (JSP) for Sybase portals in 2003, I was thrown into it without any formal training. This sink-or-swim style of learning was difficult but allowed me to create an asymmetrical blend of OOP skills needed to take any JAVA application from concept to completion. I then went on to abandon Java for PHP and Ruby on Rails (RoR). Both PHP and RoR were languages that made it easier to develop new applications, they were easier to learn, and the web was full of tutorials that a classroom was never needed.

Unfortunately, like many programming languages, programming (especially Java) is like ice cream — you use it or it melts from your mind! When I returned to the University environment in 2010, big bad Java was a requirement to finish a degree I had been wanting to finish for several years. As a result, my Java experience placed me into classes that demanded the formal side of the language, and not the problem-solving side. This again was a struggle. Not with Java syntax, but with having to learn from instructors that made learning advanced Java horribly unpleasant. They wanted structured development, bloated programs, and perfect solutions — things that you did not need to survive in the real world. They also wanted me to stop using IDE’s like Eclipse in favor of outdated text editors and command-line programs. Solving complex programming problems — real-world problems — came secondary to learning some idealistic version of Java programming. So, unable to enjoy any of the languages better features, I promise that if I ever had the opportunity, I would figure out how to make programming fun to learn again!

My Teaching Philosophy
A basic understanding of the subject is important, but not the only important part of the learning process. Memorization, regurgitation, and knowing enough to “pass a test” do a student well in the classroom, however, in the real world, these methods do not prepare you for what to do when things go horribly wrong, how there can be more (often several) right answers to the same problem, and that compromises may need to be made at the expense of a perfect solution. This is why I believe in a three-part vision to the way I approach teaching a subject:

1. It Must Be Intentional – There needs to a purpose to everything that is taught. This brick of knowledge MUST connect to THAT brick of knowledge for THIS reason. It the bricks do not connect, then the intended purpose is lost on a student. Knowing that concepts and lessons will build on each other helps a student understand the connections between topics. But if you can demonstrate WHY those connections are important to a real-life scenario, then the connection to the topic becomes much deeper. I believe that every topic must have a reason for existing and that I must clearly communicate that reason to my students, or I should not include it as part of the lesson.

2. It Must Be Interesting – Grinding through a long lecture or flipping through a long slide deck of programming language syntax can help solidify the core elements of each topic. But it cannot be the only method of providing information. This is where other techniques that reach beyond discussion must be utilized. I must connect with my students by making the topic relevant through demonstrations of working code, pairing strong and weak skilled programmers together for “hackathon” competition style code writing sessions, and exploring the reasons for using certain techniques with real-world examples or guest speakers. I believe that by breaking up each classroom session with something unexpected, topics can be better solidified into memory through demonstration and direct participation in hands-on experimentation.

3. It Must Be Impactful – Every student learns in a different way and I must remain observant to those that are not being reached. In order to remain flexible to those needing extra help, I must be aware that some students may need additional demonstrations, while others may need more one-on-one interaction. Has the difficulty level of programming increases throughout the semester, some topics may need to be presented earlier in the class before they can be effectively connected to more advanced topics later in the year. The key is to understand the pace of the class, how strong or weak the class is on certain topics, and how to solicit feedback from students from the very beginning. I strongly believe that I need feedback from the students before I can truly understand what each class needs from me to be successful. But I also need to understand that getting that feedback at the end of the class — although it may help future classes — is far too late to help the current class. The feedback loop must occur early and often if I am to be an effective instructor.

My Teaching MVP Version 1.0
This is my Teaching Minimal Viable Product. I hope that by being intentional, unexpected, and effective, I one day can provide a classroom experience that informs, excites, and entertains my students about any topic that I am teaching. This is especially true for technology or programming topics that can be heavily laden with jargon and abstract concepts. Clarity, purpose, and understanding of the course material should always be goals to aspire to. However, if my students show no interest or curiosity in learning, then it is my role as the educator to pivot away from what is not working and try alternative means of reaching them. Nothing works better than bringing in real-world examples for students to experiment with before they graduate.

One day, there will be a Version 2.0 of this high-level philosophy that reflects all the things I have learned while speaking, podcasting, and writing. I suspect, however, that Version 2.0 will become very obvious when the day arrives that George Mason University comes and asks me to consider speaking or teaching instead of the other way around. What a wonderful day that will be!