Tales from the jar side: The business of training, Public vs private courses, and other tweets
OH on Twitter: Somebody said my dad is gay, and now I'm trying to work out which one.
Welcome, fellow jarheads, to Tales from the jar side, the Kousen IT newsletter, for the week of March 13 - March 20, 2022. This week I taught a Spring and Spring Boot course to a private client.
Regular readers of this newsletter are affectionately known as jarheads, and are far more intelligent, sophisticated, and attractive than the average newsletter reader. If you wish to become a jarhead, please subscribe using this button:
Before going on, let me say thank you to all the people who contacted me when I was in the hospital. I was unable to respond to everyone right away (probably for obvious reasons), but I saw every message and I appreciate the support.
I’m better this week, if still moving a bit slowly. The week was consumed by a serious training class for a private client that I could not postpone, so I was busy basically every day this week. I got through it, and the classes were fine, but I’m still rather tired.
The concept of private training classes gives me an opportunity to talk about the overall business of training. I’m in a rather unusual position right now, as far as my career goes, and I thought I’d describe the situation in the context of the training business in general.
The Business of Training
I remember when I was a senior in college, right before graduation groups of us were invited to dinner with some alumni, both recent and long ago. Even at the time I was sufficiently cynical this was the college’s attempt to get us involved after we left so we would hopefully continue to contribute to the school. I am proud to say that in the intervening 40 years, I have never give a dime to any of the schools I attended beyond what they charged for tuition. The system was seriously broken then, and it’s only gotten worse with time. I make charitable contributions, but not to massive bureaucracies who exist to keep extracting money from people who already paid for what they were selling years ago.
That’s an aside, however. The one thing I remember from my alumni dinner was that as each alum got up and described their careers, many kept emphasizing that what they did now had little to do with what they studied in school. Many were more blunt than that — they claimed that for many of us, the job we ultimately wind up doing probably hasn’t been invented yet.
This was back in 1980, so after the Internet was invented but long before anyone outside of academia or government labs knew about it. No one at the time had any idea how massively it would change our lives. I’m certainly an example, though. My day job, as it were, is teaching technical training courses to clients in business and industry, and while those sorts of classes existed back then in some form, the idea I could make a living at it as an independent contractor, and deliver most of my courses online, was not something anyone considered at the time.
My Transition Into Training
I’ve described my career arc before, but I’ll summarize it for any newer readers. I spent four years as an undergraduate at MIT, finishing with BS degrees in both Mechanical Engineering and Mathematics. I went from there to Princeton, where I spent another four years and emerged with an MA and a Ph.D. in Aerospace Engineering. From there I took a job as a Research Scientist at United Technologies Research Center (UTRC), an industrial lab based in East Hartford, CT.
The plan had always been to be a professor, but that didn’t happen. The academic market even at the time was seriously broken. As evidence, after working at UTRC for a couple of years, my local university, University of Connecticut, had an opening for an Assistant Professor of Mechanical Engineering. They received over 400 applicants, all of whom were qualified. The odds of making it through that gauntlet were essentially zero, so I wound up stuck in a job I didn’t like, in a company I didn’t like, doing work that played to most of my weaknesses. I was a mess.
Nevertheless, I managed to stay at UTRC for almost 12 years, working first in a group that studied the unsteady aerodynamics of jet engines, then in a group that did aeroacoustics (noise control) in the same, and finally in an Artificial Intelligence group, where I applied neural networks and genetic algorithms to industrial problems, mostly unsuccessfully. The company went through various convulsions during that time as well, growing for a while and then shrinking by almost half.
During my last few years, I took advantage of the company support for education and got my MS in Computer Science at the local Hartford Graduate Center, which by then was called Rensselaer at Hartford and was affiliated with RPI. That’s also when the Java programming language was shiny and new, and I became Java certified in early 2000. As it happens, that was after the ecommerce bubble had already burst, but before most companies knew it, so when I went looking for a job, I had lots of options.
One Saturday morning (ugh) that Spring I was stuck in a Networking course, annoyed. Several other members of my group were scheduled to attend a Java training course, and I was mad nobody had talked to me about it, even though I didn’t need the class. It suddenly dawned on me to ask, “I wonder who teaches those classes anyway?” and the rest was history.
When I got back to work Monday morning I contact our internal people to find out how they found instructors, which led me ultimately to a tiny, 10-person company called the Golden Consulting Group (owned by Nancy Golden and her son Eric). They hired me to teach Java training courses starting in May of 2000, and my life hasn’t been the same since. I remarked to my wife after the first couple of months that in all my time as research scientist at UTRC I enjoyed my job for a total of maybe six months, while at Golden I’d only been there for six months and loved it the whole time.
I stayed at Golden through the economic convulsions of the early 2000s, ultimately leaving in 2005 to form my own company, Kousen IT, Inc, where I’ve been as an independent pretty much ever since. My timing was good. Golden itself was bought out a couple years later and also no longer exists (I had no equity, so it wouldn’t have mattered even if I’d stayed.)
Public vs Private Training
When I first entered the training business, many of my courses were public classes. That meant we published a schedule, open to the public, and anyone could sign up for a course if they could afford it. Everyone attending had their courses paid for by their companies, which was they only practical way they could come. While there were (and still are, at a low level) public training courses paid for by individuals, the rates are very low and they tend to focus on very basic technologies (Microsoft Office suite and things like that).
(You may have heard about so-called “bootcamps,” where students paid for a guided sequence of training courses mostly designed for career changers. I’ll talk about that probably in a future newsletter, but it wasn’t huge when I was new to the business.)
In fact, back in the early 2000s we scheduled a public, five-day Java training course roughly once a month and mostly filled them with about a dozen students each. We rented space in a training center (using another local company that also no longer exists), and the classes would run from roughly 9am to 5pm each day, with breaks roughly every 90 minutes and lab exercises to break up the lectures and give the students a chance to do some coding. That was my life back then, teaching roughly 10 to 15 days a month, mostly locally.
The alternative to public training was when Golden sold a private class to a particular company. Then as an instructor I would go onsite, if the company was big enough to have their own training rooms, or the students would come to us again in a rented room. The business model for private classes was that the company was charged a flat rate for a certain number of students, say up to 20, so they would try to include as many students as possible.
The challenge with public training was to teach a topic popular enough to fill a class, even if you only got a couple of students from individual companies. If we couldn’t get enough students to run the class (say a minimum of four or five), the class would get postponed.
A harsh lesson I learned early during that time is a training company can only postpone a course due to low enrollment twice before students stopped signing up at all. One of the companies I worked with during that time was called Computer Education Services Corporation (an awkwardly-named company that also no longer exists), and they postponed public classes a lot. They went out of business entirely after about six months.
Private classes were more reliable, because they weren’t scheduled unless the client agreed to them. The provided a different challenge, however. Students in those classes tend to all know each other and work together, and they have a particular sets of topics they need to know in order to do their jobs. That’s why they were there at all, and if they decided the instructor wasn’t going to help them, they would check out early, at least mentally. Sometimes you’ll hear instructors say that you only have to know the material one chapter beyond what the students know, but woe be to you if the students discover that’s true. You’ll lose them and probably won’t get them back, and many of them won’t be shy about saying so.
I expressed my “rule” about training courses as, “you can say ‘I don’t know’ three times in a training course, but they can’t all be Monday morning.” Students don’t expect you to know everything about the topic (most of that pressure comes from inside myself), but they do expect you to be competent and comfortable with the material, or otherwise why are you or they here?
My biggest job at the start of every class is to convince the students I have something important to contribute that will make their lives easier. Fail to do that and I’m in trouble. This is one area where being an older white male definitely helps, because it gives me some credibility when I enter. Arguably more importantly, it means I don’t have to overcome any student biases about women or underrepresented minorities, and thank goodness for that.
I still have two credibility challenges to overcome each time. One is that I am older now, and look it, and I’m working in a very young industry where new technologies come along all time. I have to convince any students that my information is both current and relevant. If I talk to much about how things used to work, or, even worse, slip into curmudgeon mode (as in, “seen it all, done it all, not impressed”) they’re going to dismiss me and stop listening.
The other credibility challenge I fight is all those academic degrees. In engineering, those were assets. When I wanted to be a faculty member, those degrees were my membership card. They allowed others to take me seriously. In “real world” IT, however, most developers have a serious amount of skepticism about academic training. We all know developers who have little in the way of academic background but are outstanding, self-taught coders. Sadly, we also know a handful of academics who try to tell you what to do but can’t code their way out of a paper bag. Nobody wants to be told their doing things the wrong way, even when — maybe especially when — that’s the truth.
(Incidentally, that’s supposedly one of the problems with Google. Google is full of Ph.D.’s. It’s basically an academic environment with the university serial numbers filed off, with all the associated egos, pettiness, and academic infighting that implies.)
All of that is why I never mention my academic background during a training class. Sometimes it comes up and I dismiss it as, “that was all very long ago,” which is true, but makes it clear I don’t believe it gives me any added credibility. I’d rather rely on my coding skills, anyway.
There are two other challenges I have to overcome in every training course:
The instructor problem: Are you a coder, or “just” an instructor? In other words, do you have any experience with this stuff, or do you only know what’s in the materials?
The sales problem: The people buying the training are (usually) not the people in the training classes.
In my (largely inactive) blog, called Stuff I’ve Learned Recently, the subtitle is the famous Robin Williams line from Good Will Hunting: I teach this stuff. I didn’t say I could do it. Students really do worry that if you haven’t been a coder in industry, you don’t understand what the real pressures are like and you’ve never had to make anything work in practice.
I used to counter by pointing out that lots of industrial experience is overrated. Many coders don’t really have 10 years experience — they have one year of experience they’ve repeated 10 times. Also, a lot of the code in actual practice is really awful, full of bad practices you wouldn’t want anyone to learn from anyway. The truth, however, is that once you try to make those arguments, you’ve already lost, so instead I refer obliquely to the occasional consulting projects I’ve done and talk about how many different companies I’ve visited, so I can always play the technology transfer role and let the current students know what their competitors are doing.
It’s also partly to counter that perception that started me writing books. Having a few published books on current topics helps my credibility right away, because while there are a lot of technical books out there, surprisingly few are written by actual instructors. (Sadly, you can often tell that right away by how badly they are written, but that’s another topic.) If a student in the course knows one of my books, that’s enough credibility to carry me through the class.
Another way I establish credibility is by being a conference speaker. Again that’s not an automatic — anyone attending a conference will encounter speakers who don’t seem to live in the real world. Still, that keeps me relevant, and keeps me learning new topics and updating my knowledge. It’s a big reason I’m still a regular speaker on the No Fluff, Just Stuff conference tour.
The other challenge I mentioned above is that the people buying training courses in a company are usually not the students in the course. That means that if they want a course from me, they ask for an outline, which is usually a quixotic mix of the wildly ambitious with the downright impossible. After all, they’re comparing to other company’s outlines, who will promise whatever they need to in order to get the business.
That leads to the following gag:
Question: What’s the difference between a training course salesperson and a used car salesperson?
Answer: The used car salesperson at least knows when they’re lying to you.
This week I got lucky. The person who bought the course was also one of the students, though they knew almost all the material already. They wanted more than we had time to cover, of course, but they weren’t unrealistic about it. Thank goodness.
I have a lot more to say (really? what a shock!), but this is already getting long. Let me summarize a couple more conclusions, which I may come back to in a future newsletter.
The biggest one is this:
It is virtually impossible to stay in business offering only public classes.
To fill public classes, you need to attract many students on a regular basis, and that requires teaching basic (or lowest common denominator) topics in popular areas. I have a friend (Hi Jonathan!) that specializes in teaching Kubernetes classes, and as long as that area stays popular, he’ll be fine. But how long will that last? Two years? Three? Five? Knowing what I’m going to be teaching five years from now would be incredible, and incredibly unlikely. This field moves too quickly for that. But these days, my friend is in great shape and I’m very happy for him.
The bulk of my schedule, however, for most of my career, consisted of private classes. My business model for many years was to operate as a subcontractor to training companies. The company would sell a private class, then hire me to teach it. I might help the process along by participating in pre-sales calls and helping to customize outlines and chose materials, but eventually I show up, teach the class, and send an invoice when it’s over. At various times in my career I’ve maintained between three and seven training companies that used me on a regular basis, in what I always called “friend of the family” relationships. I didn’t work for them directly, but I did so enough that I maintained a calendar with them and kept in touch with all their salespeople.
In my career, however, everything changed about five years ago. That’s when the O’Reilly Learning Platform (formerly called Safari) created the dream model for public training — a subscription model, with enough students to make it work.
The O’Reilly Learning Platform started out as a book subscription site. You paid a flat rate per year, and could access every book they had. They then expanded to include recorded videos. Finally they added live training courses, and that’s where I jumped on the bandwagon.
Their model is not perfect, and I certainly do my share of complaining about it. But it works, and has worked for me, ever since I joined. I probably teach about a dozen different courses for O’Reilly, and most of them repeat either quarterly or more often. So far I have enough work from them that if I got nothing from anybody else, I’d still be fine.
As the pandemic took hold, the No Fluff, Just Stuff conference tour decided to do the same. They started their own Virtual Workshops, and I added several of those to my calendar as well. We had to have some “discussions” about the model (NFJS is a conference tour, and didn’t really understand the compensation model for training), but as a supplement, it’s been very helpful.
That means that if I only teach a private class every couple of months, I’m good. I’ve largely given up on being a subcontractor any more, other than with O’Reilly and NFJS, and less frequently with Gradle, Inc, and I expect those relationships to carry me the next couple of years. Or, as I often say about it, I plan to ride those horses until they collapse, at which point I can probably just retire.
We’ll see how it goes. So far, the O’Reilly people are happy enough with me to keep those courses going, and I’ll be with the NFJS tour at least one more year (everything on the tour is done on a yearly basis). When I have other training or consulting projects, fine, but if those don’t come along, that’s fine too. None of my topics are white hot popular (I don’t offer any JavaScript MVC frameworks, or DevOps courses, or Rust or Go or other alternative languages), but the ones I do teach have solid audiences (Java, or Groovy, or Kotlin-related, along with Spring, JUnit, Mockito, Android, and a few other topics). So far, so good.
Random Tweets
Meet your new President
Just when you thought Star Trek: Discovery wasn’t controversial enough, they did this:
I thought it was great, and all the people you would expect to freak out about it did so, which also works for me.
I have to say, though, that once again I was disappointed in the season. The show has been profoundly mediocre, though the effects and the look and feel have been excellent. I’m pretty close to being done with it. We’ll see.
I still like Star Trek: Lower Decks, though. :)
Test Report Aggregation
I mentioned a couple weeks ago I managed to get that to work, though I’m not sure I can do again easily. We’ll see how that evolves over time.
Sadly, one of the courses I had to cancel when I was in the hospital was my regular Introduction to Gradle course, but we’re repeating it in May anway.
Message from the Governator
Really, really good job by him, but wow he’s gotten old. I guess we all have.
Latest Java Trends
This InfoQ article summarizes the results from the JRebel survey. Mostly it verified what I already suspected — Java 11 has passed Java 8 in number of installs, but Java 17 is growing very fast. Spring is still, by far, the top choice for microservices development.
This week we’ll see the release of Java 18, but I don’t believe there’s anything in there that will really change my life. If so, I’ll talk about it in a future newsletter.
Poor John
That tweet no doubt offended somebody, but I laughed.
So Obvious
This idea seems so blindingly obvious once you hear it that I can’t believe we don’t already do something like that. Hopefully daylight saving really is going away, but I’ll believe that when I see it.
Russian Doll
Finally, I’m not going to dwell on the stupid, horrific, wasteful Russian invasion of Ukraine, but this was clever:
Have a good week everybody.
As a reminder, you can see all my upcoming training courses on the O’Reilly Learning Platform here and all the upcoming NFJS Virtual Workshops here.
Last week:
Spring and Spring Boot, private class
This week:
Spring Data Fundamentals, on the O’Reilly Learning Platform
Gradle Concepts and Best Practices, an NFJS Virtual Workshop
Functional Programming in Java, on the O’Reilly Learning Platform