The Andragogy at Nashville Software School

Andragogy is pedagogy, but for adults. Oh, and pedagogy is methods and processes of instruction.

Boring words out of the way now.

Tell Them How You're Going to Bore Them

Ok, I could talk about all of the research we've read about how the brain actually learns. I could also explain how we have applied that research in the classroom, and explain what has worked, and what hasn't, to increase student understanding.

I won't.

I could talk about all the time and effort our instruction staff puts into writing exercises, group projects, and lightning exercises for the students to work on.

I won't do that either.

I could even share all the data that we've collected from our students that we, in turn, have used to make a better Learner Experience.

Nope. Not going to do that.

What I'm going to focus on are the two, key, factors that we have found achieve all of our goals.

Finger Quotes

I mentioned in a previous post that, over the last few years, we've questioned everything about how to educate people. We've also had to try as many different things as possible to determine what works with software development vocational training.

Let me pause for a moment to ponder with you what I mean when I use the phrase "what works". How do we measure that? There are three measurements that I use. One is Official Company Measurement, and the other two are ones that I made up because I felt like it.

The first measure is a successful career transition (a fancy phrase for a graduate getting a job as a software developer). This is how Nashville Software School determines that we are serving our students and our community so that we maintain a healthy, positive, cash flow. People like getting their paychecks, y'know.

The second, made up, measurement is if students are capable of contributing immediately when they get that job. I think that's kinda important. When I hired software developers, it was something that was important to me, and my team. We wanted someone with enough skills to get their hands dirty, quickly, and start mucking around with enough success to close some tickets and help the production of the team.

The third, completely arbitrary, measurement is if employers feel we are providing them with enough value. What value is that you might ask? Well, here's what I've heard through my network that people are actually saying has value.

  1. Graduates understand the day-to-day activities of being a software developer. I'm not talking about code. Over a career, coding becomes a minor task. I mean communication skills, understanding how to conduct themselves in meetings, and how agile teams operate.
  2. Graduates know how to learn. This is crucial. People want to hire problem solvers. Problem solvers know how to research, how to ask the right questions, and the right time to ask them.
  3. Graduates understand the basic of software design. They know the foundational patterns and concepts that will keep them from writing shitty code that constantly needs to be re-written by someone else on the team. DRY, YAGNI, SRP.

Get to the Point, Dude

Ok, fine. Here's a quick list of measures.

  1. Graduates get jobs
  2. Graduates contribute quickly
  3. Graduates navigate daily ceremonies
  4. Graduates can self-teach
  5. Graduates can think about what code to write before they write code

If I can get them prepared to do 2, 3, 4, and 5, then they are set up for success to achieve 1.

Like I said before, and then wasted all your time since before I told you anything useful, there are two key factors we've found that achieves those goals.

Experiential Learning

Our students learn to become software developers through experiencing being a software developer. I struggle to even call our rooms classrooms because they certainly don't spend the majority of their time "in class". They don't get homework. Things don't get graded. There's no quizzes, tests, or mid-terms.

Here's a roughly accurate chart of where students spend their time (which means I threw this together in 3 minutes with no real measurements or data to go on other than my vague recollections).

You know what? Software development is a team sport. If any bootcamp has you spending the vast majority of your time in individual effort, it's a red flag. That whole Hollywood image of the individual geek hero is gone. You know the one who cracks the password, or breaks into the database, or finds a way to track the bad guy even though their cell phone is off, and there is only one traffic cam that was installed in 1987 (but they can "clean it up", or "enhance it"), and the suspect only lives on The Dark Web. They get it all done in 45 seconds, too. Perfectly.

That's all bullshit.

Modern software applications are built by responsible, reasonable professionals who work as a team, understand how to communicate clearly, work within given parameters, and make lots of mistakes on the way to success.

That's the Learner Experience that we provide since that's what they'll be doing.

The instruction team provides context for how new knowledge will be used. We explain why modern developers use the knowledge, and how it will be helpful for the future careers. That takes anywhere from 10-30 minutes, depending upon complexity. Sometimes a whiteboard is required. Students love their pictures and diagrams.

We then show them how it is used. Students watch us install, configure, and use the tool within the context of something they already understand. They can ask all the questions they want during the session. This process can take between 20-60 minutes.

Once that's done, they are given a problem to solve with all of the knowledge they have gained while trying to use the new knowledge they were just introduced to. Preferably in a team setting. Whether its pair programming while working on a small exercise, or in groups of 5 while building a complex software application, working as a team accelerates learning. Period.

Students First

The second factor is that we put students first, no matter what. Well, except for Fridays between 12:45 - 13:45 so that the team can meet, make ourselves better, and talk about how to be better at putting students first.

If a student, any student, has a question, every person on the instruction team will drop everything they are doing to make sure that student gets the needed coaching. If I ever see an instructor not doing this, there would be some corrective coaching for them. Fortunately, our team is so passionate about helping students that it has never been an issue.

Students notice, too.

From the first day of class, I make sure the students know that they will come first. I'm not just talking about their time at NSS, either. After they graduate and grow in their careers, they will still always come first for me.

It's not Andragogy, It's Caring

So there you have it.

  1. Learning through experience.
  2. Students come first.

Two things I've learned from my HCI, UX, and design friends over the years is that simplicity is the ultimate abstraction, and simple is hard. Getting to this point, where our guiding principles are that simple, required experimentation, observation, communication, and listening to our students.