Why I Love Teaching

The Rare, but Heartfelt Thanks

No software application I have written, or helped write, ever told me how much I changed its life. They just took and took, and never appreciated me. I ended up breaking up with every one of them. I even stopped stalking them on Facebook.

However, when I occasionally get a message from a former student that is a simple "thanks", it makes me realize what a difference I'm making.

Meetings are Valuable Again

The staff meetings now make an immediate impact on people's lives. No, really. Immediate. We can walk out of the meeting, and within minutes, make a greater, direct impact on the students in our classes.

We discuss successful tactics, but also share things that aren't working. We then discuss how we can change, and then come to a consensus about what might be successful. Then we go try it.

Rinse. Repeat. Every week. Now that's Agile.

When I talk with senior teammates of companies that have hired from us, I can take their feedback about what they want from our students, and then find common patterns and immediately make changes to how I teach. This does two main things.

  1. Aligns the skill set of our graduates with what people look for.
  2. Strengthens the Nashville community because our graduates can make immediate, solid contributions to the teams they join, and to community groups they may want to help.

We've got an amazing team of instructors here, and the creative ideas they come up with continually impress me, because it's clear how passionate they are about making this the best software school in the world.

Helping People Change

One of my greatest joys is seeing students come from stressful, pointless, or uninspiring jobs, and then work through the course - the hardest thing they've ever done - and months later hear about how happy they are. Sometimes I was a big part of that. Sometimes I wasn't. Regardless, being part of an organization that provided them that opportunity makes me feel a great sense of accomplishment.

Community Impact

By ensuring that students learn strong foundational skills - not the latest trends - and develop good habits using best practices, it will have a long-term impact on companies that hire them. None of my students are ever going to be satisfied with mediocrity. Likewise, they will be champions of the values that passionate, dedicated software developers bring to a team. Too many people still operate under the faulty view that software developers are fungible resources that can be traded and replaced like baseball cards.

Luckily, many leaders in software-reliant companies understand the immense value that a software developer, with deep knowledge of the product, customers, and environments in which the software runs can have in maintaining the health of the company. High turnover is expensive, leads to poor technical decisions in products, and reduces the quality of the software in the long-term. The longer you can keep a strong, dedicated team working on your product, the faster you will deliver, and increases your flexibility by being able to respond to market demands and changes more quickly.

Increased Patience

I always considered myself an adequately patient person. Then I had kids, which took it to the next level. Then I started teaching software development.

Whew.

There are some days that the well runs close to dry when I need to explain the same concepts over and over again to 15 different people. It always pays off, though, and the more it happens, the deeper my well of patience has become.

In some ways, I feel it has also made me a better father, husband, and friend.

Increased Knowledge

The questions that some students ask, and the holes that they are able to dig themselves into, are mind boggling. Having to explain the "why" of almost everything we teach, has challenged most - if not all - of the assumptions and beliefs that I've had about the technologies and the profession of software development in general.

Because I need to take 24-27 people from absolute zero to competency in the true foundational knowledge of software development in three different languages has forced me to strengthen my own foundational knowledge, or even build new ones. Otherwise, I couldn't effectively teach it.

This is, by far, the hardest job I've ever had because I need to ensure that my knowledge is as deep as possible on all these technologies, but also be able to explain it clearly and concisely to a large group of novices. I've learned that not everyone has this ability, no matter how much they want to, and I feel lucky that I do have that ability.