Upcoming Events, and “The Streak”

I’m really not a workaholic. I prefer days off as much as anybody. The problem is that there are all these things I want to do, so I volunteer to do them, and suddenly I’m overbooked so much I don’t have time for a break.

I think part of it comes down to an acronym that’s making the rounds these days. It’s called FOMO, and stands for Fear Of Missing Out. I suffer from it as much as anybody, I guess. I’ll need to work on that.

At any rate, I’m beginning a particularly busy part of my calendar, and I thought I’d mention it here in case I have the opportunity to meet any of you along the way.

On Tuesday, May 26, I’m giving my Groovy Vampires talk at the Austin Java Users Group. I really have a lot of fun with that talk. I plan to update it a bit, especially because a recording of the version I gave at last year’s SpringOne 2GX conference is currently available on InfoQ.

To give you a clue what it’s about, one day I was wandering in a Barnes and Noble and noticed that there was only one book shelf labeled “Computer”:


while there were three (yes, three) labeled “Teen Paranormal Romance”:


Instead of lamenting the decline of western civilization, I decided that what this meant was that I needed to add some Groovy vampires to my book. The talk is based on that, and involves accessing RESTful web services, parsing JSON data, using a MongoDB database, creating a RESTful service using ratpack and Grails, and more.

The next day, May 27, I’ll be speaking at the Austin Groovy and Grails Users Group, this time on Testing Grails. While the bulk of the talk was created using Grails 2.3 and works under 2.4, I do plan to say a few words about Grails 3.0 as well. The testing mechanisms haven’t changed much in going from 2.3 to 2.4 to 3.0, though now they’ve added Geb as an included dependency, so you can make functional tests easily.

If you’re in the Austin, TX area this week, please drop by and say hi.

Also this week, starting tomorrow I’ll be hanging out at JavaRanch, because my Groovy Fundamentals video course will be featured in the Groovy forum this week. I’ve always been a fan of the ranch. I first joined way back in the late 90’s, when I was getting Java certified for the first time.

Speaking of the Groovy Fundamentals video (did I really need to link to that again? Yes. Yes I did), that’s the first of three Groovy video courses I recorded for O’Reilly recently. It covers the basics, from POGOs to collections to closures, in almost exactly four hours.

The second video course in the series is called “Practical Groovy”, and covers topics like integrating Java and Groovy, runtime metaprogramming, using AST transformations, the Groovy SQL class, and more. That one ought to go live within a week.

The third video in the series is called “Mastering Groovy”. It covers Spock testing (though I use Spock tests in the earlier videos), working with Spring, JPA, and NoSQL databases, functional programming, traits, and RESTful web services, among other topics. That one will go live when I finally finish reviewing all the video segments. It’s rather dismaying to discover that reviewing six hours of video takes at least six hours.

Though I must admit I’m tired of watching and listening to myself, I’m very proud of these videos and hope they’ll be helpful. I used to joke about selling the movie rights to Making Java Groovy, and speculate about who would I would recommend to play me.

(Best suggestion: Vincent D’Onofrio from his Men In Black days; most definitely not his Kingpin days.)

In essence, these video courses are that movie. They capture pretty much everything I’ve learned about Groovy over the years, condensed to an easily digestible form. If you’ve ever seen me give Groovy talks at No Fluff, Just Stuff conferences, you’ve seen a lot of what I’ve included, though with fewer jokes.

That brings me to next weekend, which is the Dallas NFJS event. I’ll be giving a Spock talk, and my “Managing Your Manager” talk, and a series on Android development. Again, if you’re in the neighborhood, please drop by and say hi.

Incidentally, some time this week (tentatively Wednesday, 5/27), Peter Ledbrook, Baruch Sadogursky, and I are planning to do another Groovy Podcast. I love doing those, so assuming that happens I’ll definitely tweet about it.

From Dallas I’m off to San Diego, where I’ll be teaching a (private) Groovy and Grails class. Teaching technical training classes is What I Do, practically my raison d’être, so feel free to contact me for details.

After the Grails class I’m heading to Sebastopol, CA, home of O’Reilly, to get back into the recording studio again. This time I’m working on a couple of Android videos, and if I manage to finish those I’ll also try to record something on Gradle for Android. That will all be the same week that culminates in the Gradle Summit in Santa Clara, where I’m doing an updated talk on the Gradle plugin for Android. I’m really looking forward to that conference, though I may miss the first day if we’re still recording.

(Yes, I’m making progress on the Gradle for Android book. Yes, it would be a lot easier if the Android plugin for Gradle, Android Studio, and even Android itself stopped changing so much so frequently, causing me to have to constantly rewrite chapters. Yes, the video course will be related, and will help me write the book. Yes, I’ll probably scowl if you ask me for an actual release date, but don’t let that stop you.)

When the Gradle Summit ends, I finally get to go home again, at least for a few hours, before I’m headed to South Carolina for another training class. I might have another one after that, too, but I haven’t decided.

Eventually I’m going to need a break, so it’s a good thing I scheduled one. Next year (!) my wife and I decided to go on the JoCo Cruise in the Caribbean, which is a sweet nerd cruise featuring Jonathan Coulton, Wil Wheaton, Paul and Storm, and many others. That really ought to be fun.

Finally, I need to say something about “The Streak”. Like many people in the I.T. field, I was a career changer. I came from engineering. More accurately, I should say that I was a research scientist, specializing in the field of turbomachinery aeroacoustics. What that really meant was I did lots and lots of math and wrote lots and lots of Fortran (the nightmares have ended, but it took a while). Ultimately I joined an AI group, went back to school at night, got my MS in CS and decided to leave my job.

My new job as a technical trainer started May 31, 2000. That day I helped teach a training course in Object Oriented Concepts (remember when did stuff like that?). I spent five years teaching classes (including roughly one Intro Java course a month back then) before I went out on my own in March of 2005.

We’re coming up on May 31, 2015, and in all that time, I have never missed a day of training. Not one. I call that The Streak, and since it looks like I’m going to make it to that date I figured it was okay to announce it here.

That journey, and the life changes that accompanied and preceded it, deserve their own blog post. I didn’t want the date to pass, though, without mentioning it. I’m rather inordinately proud of The Streak. Some of it is certainly luck, and it can’t last forever, but it means a lot to me. Right now my job and my career are everything I ever dreamed they could be, and I think The Streak is a side-effect. At the very least, it always gets me up in the morning. 🙂


Start With A Story

Way back in the early 90s, I decided to revisit a notion I’d toyed with for years, which was to become a science fiction writer. As part of that effort, I subscribed to Asimov’s Science Fiction Magazine, which was (and is) the best short story market available.

Back then, Isaac Asimov himself was semi-retired (he occasionally lamented that the science fiction world had “passed him by”), but he always introduced each issue with an essay. Though I always enjoyed his writing and, like so many budding writers of my generation, grew up on the Foundation and I, Robot series, I wasn’t really interested in reading the intros. I wanted to move on to the actual stories, especially given how little time I had available to do non-professional reading.

Yet, his essays were irresistible. I never missed one, and remember some to this day.

It turns out that he was using an excellent writer’s trick that he explained in one of his many books on writing: he started each one with a brief story.

He’d talk about some event that took place in his life, involving travel, or children, or a conference, or pretty much anything. He wouldn’t spend too much time on it, and ultimately he’d tie it into what he really wanted to talk about that issue. But the effect was immediate — you were pulled into the story and wanted to know how it all turned out.

(I’d quote some of them here, but my copies of the issues from back then, if they even exist anymore, are buried in boxes deep in my basement bearing giant “Danger! Here Be Daemons!” labels. Actually, if they really were marked that way, they’d be easier to find.)

While I never became a real sf writer (a story for another day), I definitely took that advice to heart. Whenever the form allows it, I start anything I’m writing with a tiny story. Most of my blog posts work that way. I do the same thing in my presentations.

The structure can be remarkably loose, and doesn’t actually have to be about me. The key requirements are only that the story has to be interesting and that it has to be short. Some I’ve used recently:

  • “My wife has an old car with over 225,000 miles on it. My son and I have been bugging her about getting a new one. You know how here in Canada my phone doesn’t work? Well, I just got an email from my insurance company with my ‘new’ insurance card.”
  • “I’ve been reading about Bayes’ Rule and statistics recently. Did you know that Pierre Simon Laplace, one of the greatest mathematicians of all time, was disowned by his father when he refused to go into the clergy? I’ve been thinking about what jobs my son could go into that would cause me to disown him. My short list includes patent troll, spammer, TSA groper, and any I.T. job that has the word ‘evangelist’ in it.”
  • “I saw a great tweet yesterday. Do you know why George R. R. Martin can’t use Twitter? Because he’s already killed off all 140 characters.”
  • “You know how you know you’ve been traveling too much? I’m ashamed to admit I drove over to the site today and sat in the parking lot for ten solid minutes trying to remember what state I was in. That’s not good.”
  • “Last night I was looking on the Internet for a list of palindromes for some code we’re going to write today. Did you know that ‘Flee to me, remote elf?’ is a palindrome? How about ‘Go hang a salami; I’m a lasagna hog’? Or even, ‘Sex at noon taxes’?”
  • “Way back in the 90s, I tried to become a science fiction writer…” (I see what you did there)

Those are pretty generic. I try to keep an eye on slashdot or reddit or related sites to see if there are any relevant news items, too. Like during an Android class, I’ll show people the latest information about the mobile marketplace, or how there’s a huge debate going on right now about the best way to introduce apps into cars. Or if I’m teaching anything related to Java (including Groovy and/or Grails) I talk about the Java 8 release and ask about any plans for adoption. Or, as I did last January, I’ll remind those students I met in St. Cloud, MN (temperature -24F before windchill) that in this country we’re allowed to live in warmer places.

It’s simple, but it has the effect of getting everyone’s attention. Try it out on your next article, or tech talk, or lunch-and-learn, or whatever. Next week I expect to open with “Hey, did you notice that the UConn men’s AND women’s basketball teams just won the NCAA Championship? Well, nyah, nyah, nyah.”

I’ll let you know how that goes over. 🙂

Teaching Web Services

NetBeans 6.1 is a lot better than I thought

This week I’m in New Haven, CT, teaching a class that combines UML and Java Web Services (an odd combination to be sure).  The client wanted to use NetBeans as their primary IDE, and I always try to accommodate that if I can.

My last exposure to NetBeans was back in version 5.5, I think, when a couple of friends suggested I give it a whirl.  I’ve been an Eclipse user since version 1, so I’m very comfortable with that environment.  As part of giving a presentation at my local Java User’s Group, I also got a license for IntelliJ’s IDEA, so I’ve been playing with that off an on.  When I don’t want to use a heavy IDE, I generally stick with UltraEdit, which does a decent job, even with Groovy code.

Nevertheless, I downloaded and installed NetBeans 6.1.  I have to say that I’ve been very pleasantly surprised by the editor.  The UML support is surprisingly good, including the capability to generate sequency diagrams from code.  But its JAX-WS and JAXB support has been outstanding.  I’ve been using them with the embedded Glassfish server and really enjoyed it.

I’m in a bit of a rush (have to get back to class) or I’d say more.  What I can say, though, is that if the NetBeans group really does deliver on Groovy and Grails support in NB 6.5, as promised, I’m definitely going to try it.  I’m still mostly an Eclipse person (and the commercial MyEclipse tool as well).  I know it’s practically heresey to say so these days, but I’m still finding that IntelliJ slows me down a lot more than it speeds me up.  But this single week with NetBeans has been a revelation.  I can only hope the Groovy and Grails support when it comes out in October is as good as the rest of the IDE.


Our last, best hope … for message digests?

So I’m teaching my course in Securing Java Web Applications (my third one in the last six weeks) and we got to a section that discussed the MD5 algorithm for generating message digests.

One of the students asked, “whatever happened to MD’s 1 through 4?”

I simply couldn’t resist saying, “MD’s 1, 2, and 3 were sabotaged during construction.  MD4 vanished without a trace shortly after it came online.  Now we have MD5, our last, best hope for peaceful digests.”

To my pleasant surprise, about five different students got the joke.

(And yes, every time I see the abbreviation JMS I don’t think Java Message Service, I think J. Michael Straczynski.)

We live for the One; we die for the One.


Eight years and haven’t missed a day yet

On May 31, 2000, I officially left my job at United Technologies and became a full-time technical trainer. It’s now been eight years since that day. While I don’t like to talk about personal things here very often, I thought that was worth a mention. That, and the fact that in all the training classes I’ve taught since then (probably somewhere around 250, though that might be a bit low), I’ve never missed a day.

As Inigo Montoya said, “Let me ‘splain — no, it is too much. Let me sum up.” After receiving my Ph.D. in Aerospace Engineering from Princeton, I took a job as a research scientist at United Technologies Research Center in East Hartford, CT. I spent nearly 12 years there, mostly investigating the aerodynamics and aeroacoustics of jet engines. That meant lots of math (pretty cool) and lots of Fortran (shudder). Toward the end of my stay, I learned Java and switched to a different group at UTRC that specialized in Artificial Intelligence. Quickly realizing that twelve years of programming in Fortran hadn’t taught me anything about modern software development, I went back to school at night and got my MS in Computer Science from Rensselaer at Hartford.

Just before graduation I reentered the job market. This was in the Spring of 2000, just before the dot-com bubble burst completely. In the end, I had to choose between a developer job, and a job teaching training courses. One night at dinner with the family I said, “I’ve decided which job I want.” My son Xander, who had just turned 8 years old, said, “did you take the one with more money, or the one you liked?” I was very happy to say I took the one I liked, and became a member of the Golden Consulting Group.

Five years later, in March of 2005, I formed Kousen IT, Inc., and went out on my own. I now look back and can honestly say that I’ve never been happier. I spent years in jobs and in situations I intensely disliked. It took me a long time to correct all that. Now I’m finally in a job where

As for never missing a day of class, I simply can’t. These aren’t like academic classes, where you see a single group of students for months at a time (though, come to think of it, I’ve never missed a day teaching an academic class, either :)). People clear their work schedule for training classes. The classes only last three to five days, too, so missing a day is a huge sacrifice. No, I can’t miss a day if it’s physically possible to be there. It’s more than a responsibility; it’s an obligation.

I freely admit, though, that keeping a perfect record going involves some luck. I’ve certainly been sick enough to miss days. Earlier this year I caught some stupid stomach bug that knocked me for a major loop. I couldn’t get out of bed, much less make it to class. I’m just glad it happened to hit me on a day I wasn’t scheduled to teach.

I’m sure that first missed day is coming. Life simply isn’t always controllable like that. Illnesses happen, and I received a reminder about a week ago that my parents are aging and no longer in the best of health. As they say, stuff (or even life) happens.

Still, I wanted to take a moment to feel quietly pleased about the fact that I’ve made it this far.

Recent classes:

Upcoming classes:

  • OOAD/UML in Austin, TX
  • Java Web Security in Asheville, NC
  • Java Web Services in New Haven, CT
  • Java Web Security in Huntington Beach, CA

One of the best things about teaching

I’ve been very busy teaching classes recently (The last four weeks have gone Ajax, Spring, Struts 2.0, and XML and Java) so I haven’t had much time to blog.  Every once in a while, however, I try to stop and smell the roses, such as they are.

You want to know one of the best things about teaching training classes?  Think back to when you were in school, and remember the last day of classes.  More specifically, think about the ending of one of the classes where you had to work hard, but wound up doing a good job and being rewarded for it.  Picture that last day, when there are no more assignments, no more exams, no more projects to be done of any kind, just a warm feeling that you did everything that had to be done and you did a good job doing it.

Feels good, doesn’t it?  I get that feeling at the end of every training class. 🙂

I do enjoy the actual classes.  The give-and-take is always great fun.  For me, a big part of my job is technology transfer, telling the current students what’s going on at other clients I’ve seen (without the specific client names, of course), talking about events in the industry, learning how they plan to use the subject I’m teaching in their actual business.  I also enjoy seeing the light bulbs light up over the students’ heads when they “get” a particular concept.

Also, not every class goes well for every student.  Since the students are grading me, rather than the other way around, I hear about it when it doesn’t work.  I really feel every negative evaluation, too.

But there’s nothing like the joy of finishing, knowing that everybody is (basically) happy, there’s nothing else that has to be done, and you did a good job.  I love that feeling.

(That’s also a much more pleasant reward than what my friend Tom once told me, “the worst class in the world is over in a week,” even though he’s right, too.)


My winding career path

I got a question today about why I left the aerospace engineering to become a software developer and trainer, especially when the aerospace field is so popular at the moment.   I’ll assume for the sake of argument that the questioner is right about the popularity of aerospace engineering.  I don’t know any more, for obvious reasons.

I spent four years as a graduate student and eight years as a research scientist in the aerospace engineering world.  I started out investigating the flutter of airplane wings as an example of the nonlinear dynamics of fluid-structure interactions.  That’s what my Ph.D. thesis was all about.Even at that point the “engineering” part of my background was a bit of a running joke in my family.  I was never the sort of kid who took things apart to see how they worked.  I never learned the internals of a car or even a computer.  Everything I did was theoretical and mathematical.  Actually, going into Mechanical Engineering at M.I.T. was my way of doing physics without being a Physics major.  At the time it seemed to me that the Physics community had abandoned most of the “real world” in favor of the very, very small (quantum mechanics, string theory) or the very, very large (cosmology).  While I found both of those areas fascinating, my M.I.T. experience quickly showed me that I wasn’t going to be the next genius who revolutionized either field.  If I went into physics, I felt my career was going to consist of begging for funding to do slight modifications to the existing theoretical structure, just waiting for some genius to come along and revolutionize everything.  I didn’t really want to play that game.  By going into engineering, though, I thought I could make progress in existing fields by applying computer analyses to them.

I fully expected to become a professor after graduation, though.  I always wanted to be a professor.  I really liked teaching and I thought I was going to like research.  Being a professor always seemed like such a cool job to me.

When I was in my last year of my Ph.D. work at Princeton, though, my thesis advisor didn’t get tenure, despite his obvious qualifications.  I still think they made a staggering mistake, but their decision changed my perspective on the whole business.  I had no desire to be a glorified grad student with a title and then not get tenure.  Instead  I decided to go get a “real” job in an industrial lab, build a resume and funding contacts, and then go into academia.  That’s why I joined the United Technologies Research Center in East Hartford, CT.

Within a year or two after I got there in 1988, the market for engineering professors dried up.  I recall seeing an advertisement for an Assistant Professor of Mechanical Engineering at the University of Connecticut and hearing that they received about 450 resumes in response, all of whom were qualified.  I also got married in 1990 to a woman who had her own law practice in CT, so my moving options were also limited.

Worse, it turned out I wasn’t happy doing research anyway.  It’s a lot like the fiction writing I did in the early ’90s — I really enjoyed having done research, but I didn’t really enjoy actually doing it.   Doing productive research means working on hard problems all the time because the easy ones have all been solved.  It means working on problems that may not even have a solution at all.  It also means (and this was the worst part for me) constantly having to justify yourself to funding sources so that they’ll give you money to pay your salary.

I’ve never been happy at zero-sum games.  I’d much rather everyone win, as long as I get to win too.  I don’t need to get an A while everyone else gets Bs.  Likewise, I hated the thought that the funding I received meant that others with good ideas got less or even nothing.  That probably doesn’t make a good businessman, but I know now it’s who I am and I can’t change it.  I have to remind myself of it periodically so I don’t get greedy (I’ve posted about that here before), but it’s true for me.

Some of the work at the research center was very interesting.  I started off in a Theoretical & Computational Fluid Mechanics group working on the unsteady aerodynamics of axial turbomachinery, which is a complicated way of saying I used computer programs and math to analyze air flow through jet engines for Pratt & Whitney Aircraft.  Over the years I moved into aeroacoustics and worked on noise control in jet engines.  I even got a patent during that time, which you can probably find using Google Scholar.

I spent four years in that first group and then another four in the Physical and Mathematical Modeling group.  Eventually funding for acoustics dried up, though, as it always does.  Acoustics doesn’t affect engine performance.  It just affects where and when the planes can land.  Once that’s fixed by some jury-rigged solution (or a change in regulations), it’s back to performance issues.

That happened to me around 1996.  I discovered Java around that time, too, which was still fresh and new enough that it was considered “easy”.  Just download a JDK, write some code in Emacs (I was firmly a Unix user at the time) and run from the command line.  I’d already dabbled in C++, pretty much unsuccessfully, and Java was a welcome respite.  I also had a friend at UTRC that ran an Artificial Intelligence group, and he was willing to take me on.

In the AI group, my task was to help apply AI technologies to engineering problems.  I learned a lot about genetic algorithms and neural networks, or, as I used to call them, the cool stuff in AI.  I worked on one project to analyze elevator data to predict mean time to failures and another to design a distributed, enterprise architecture integrating systems across Otis Elevator’s international network.

That project was an unmitigated disaster.  I suppose it’s possible it all worked out, but it was certainly a disaster for me.  The project used CORBA and C++, neither of which I found very comfortable or easy to implement.  The project also involved three different project managers who disagreed on nearly everything.  We wasted staggering amounts of money.  Plus, I quickly learned that about 15 years of coding in Fortran (and a little Pascal) hadn’t taught me anything about modern software development.

During that time I also knew that I was growing increasingly unhappy with what I was going and where I was going it.  In response, I went to a woman who called herself a “career counselor”.  She gave me a barrage of tests (Myers-Briggs personality tests and things like that) and tried to help me discover what I really wanted to do with my life.

She told me that nearly 75% of all workers are unhappy in their jobs.

That’s a scary statistic.  I’m not sure where it came from, but it rings true, too.  I know lots of people who don’t like what they’re doing.  They get there by all sorts of paths, but it’s very difficult to make a fundamental change.  I usually feel that the problem can be fixed, but it often can’t be fixed easily and almost never right away.

At the same time, a new manager at UTRC gave everyone a copy of “First Things First” and forced us all to come up with our own personal mission statements.  Normally I viewed such a Dilbertian exercise as an amazingly useless waste of time and resources.  This one time, however, I decided to do it right.

In trying to decide what I wanted, I narrowed my list down to three items:

1. I like learning about new, state-of-the-art technologies.

2. I like playing with state-of-the-art toys, especially computer toys.

3. I like sharing what I’ve learned with other people and helping them learn it too.

As a reaction to what I was learning, I started looking at teaching as a possible alternate career path.  In 1997 I made a contact at Trinity College in Hartford, CT, and a year later that gave me a chance to teach a course in sophomore dynamics.

(That figured, by the way.  M.I.T. didn’t have a class like that and I was already in an AI group, so I was hardly prepared to teach it.  That’s one way G-d often plays games with me — often when I struggle with a subject or do badly in it, I  wind up having to teach it.)

I also decided to do some substitute teaching at the high school level.  I was a sub at Glastonbury High School in physics and math.  I quickly became known as a “teaching sub” who didn’t need hand-holding to help the students learn something.  That was fun.

Teaching full-time in the public school system requires a certificate, though, which I didn’t have.  For a few months I looked at the private school system, which was quite attractive until I found out how little they pay.  I’m still rather astonished that they can charge so much and yet pay so little, but the way the system was set up there was no way I was going to be able to afford that move.

In the summer of 1997, I decided to attend the Alternate Route to Certification program.  Connecticut has an eight-week summer program where you can go full time to be eligible to be hired in a public school.  I took an unpaid leave of absence from UTRC and learned about becoming a physics teacher.  Someday I’ll say more about that experience, but not in this post.

Connecticut has one of the highest teacher salary scales in the country, but the gap between the starting salary and what I was making at the time was still too great.  Since teachers are unionized, too, the scale was based purely on seniority and had no provisions for my particular expertise or capabilities.

In early 1998, I wound up on that nightmare CORBA/C++ project I mentioned above.  That convinced me it was time to fill in the educational background I’d been missing, so I decided to go to Rensselaer at Hartford (a division of R.P.I. in Hartford, CT that catered to working professionals) and get my MS in Computer Science.  I also was not blind to what was going on in the community, so I decided to get my Java certification.

One Saturday morning in late 1999 I was sitting in a networking class (some kind of queuing theory as I recall), stewing.  Another member of my team at UTRC had arranged to attend a Java training class, without even asking me about the required code.  Here I was, one semester from graduation (I took two classes a semester all year around to finish as quickly as possible) and with existing Java experience, and nobody even thought to talk to me.  I wasn’t happy.

Then a light dawned.  It seems so obvious now, but at the time it was a huge revelation.  I suddenly wondered, “who teaches those classes, anyway?”

I’d never attended a training class in my life.  I didn’t know how they worked or how they were arranged or taught.  I did know how to find out, though.  If someone on my team had arranged for one, I just needed to follow the trail to see how it was done and asked who they used for instructors.

I got some names and made some phone calls.  I knew I was leaving UTRC, partly because I didn’t want to be there any more and partly because they didn’t really need the sort of work I wanted to do.  Those of you in the IT field may remember that in early 2000 the bubble had burst, but we didn’t know it yet.  You could still write a “Hello, World” program in Java, put it on a resume, and get calls.  Enron didn’t start to collapse until the Fall of 2000.

Interviewing that Spring was a strange experience for me.  I had been in such a specialized field as a research scientist that I knew exactly where all my opportunities would be and, perhaps more importantly, where they wouldn’t.  As a freshly minted Java developer with industrial experience (even if most of it wasn’t in I.T.), I was very popular.  That was truly fun.

Eventually I narrowed down my options to a developer position at a major insurance company (Hartford, CT — as they say, the insurance capital of the world) and a new trainer position at a training company.  The developer position looked a lot like what I already knew, even though I didn’t have a lot of I.T. experience.  The trainer position looked more fun, but I arguably knew even less about that.

My favorite day was when I went home from work one day and I announced to my family that I’d made a decision on a job.  My son Xander (only 7 at the time) said, “did you pick the one you liked, or the one that had more money?”

Out of mouth of babes, or at least young goofballs.  I was very happy to say that I’d taken the job I liked, and the rest, as they say, is history, or at least the subject of future posts.

When students ask me whether they should bother going into IT in these days of outsourcing and few jobs, here’s what I tell them.

Try to find a field you enjoy.  If the field is popular, you’ll stand out because you like what you’re doing so you’ll do it well.  If the field is unpopular, there will be little competition but you’ll stand out because you like what you’re doing so you’ll do it well.

Finally, the vast majority of jobs are found by meeting the right person at the right time.  That usually requires meeting all the other combinations (right person/wrong time or wrong person/right time) a LOT.  Hiring is no fun at all, so most technical hiring managers will do anything to shorten and simplify the job.  That means if they can get a candidate referred to them by someone they trust, they’ll like that person and be eager to say yes rather than no.

I’m sure the poor soul who asked me about my decision to change careers is seriously regretting that now, so I’ll stop.  Thanks for the comment, though. 🙂


Focusing on what’s important

At the No Fluff, Just Stuff conference I attended last week, I managed to talk to a couple of the presenters and quietly ask about the rates they charge.

That’s always a dicey subject, of course, but it’s very hard to get good information about that.  Software trainers don’t have a union, or anything like that.  We also tend to be a pretty independent lot.  Also, software developers are almost always highly opinionated, and trainers can be even worse since they have a soapbox to stand on.  It’s easy to see how egos can bump into each other when we get together.   The result is that my “market research” consists of talking to a few, trusted individuals and then negotiating with my favorite training companies as a subcontractor.

Those can be unreliable sources of information, though.  Individuals can exaggerate and claim that they gate a particular rate when they rarely see it.  Training companies want to minimize their costs so they may claim they can find someone else for a lower price.

My original approach was to talk to a good friend who was a trainer and adopt his price as mine.  It also fit my budget, which is based on invoicing a certain minimum amount per month.  Based on that amount, I know how many days I need to teach.  I’ve learned over the past couple of years what my upper limit is before I start to get really tired and my quality starts to suffer.

For me, though, I still get many more requests than I can honor.  Without any marketing at all, my schedule can get booked solid for months.  It’s probably inevitable that I start wondering whether I’m undercharging for my services.

At the NFJS conference the presenters are among the leaders in the development industry.  They consequently are in serious demand for their services, but mostly in the form of contracts.  Most of them also do training, though, and they charge a premium for it.

Comparing my rate to theirs, though, is not so easy.  I’m a trainer first and a developer second, though writing code is very important to me.  I can’t imagine I’d ever be happy without being in a classroom occasionally, for reasons I’ve detailed here many times.  Since I spend much more time and effort teaching than writing code, it’s also very unlikely that I’ll ever come up with some fundamental framework that everyone adopts, so I’m unlikely to be the sole or original source of some highly sought-after technology.

Still, it’s hard not to get greedy.  I spoke to a couple of presenters at the conference, as I said above, and what they said gave me the feeling I was significantly underpaid.

Now, I’m not a presenter at NFJS.  I don’t have major book publications to my name.

(Aside: I once read that Bruce Eckel, author of Thinking In Java — now in 5th edition, but whose first edition was my first Java book — said that the book didn’t make him a lot of money.  Instead, being the author of that book helped him increase his rates considerably, and that made him a lot of money.)

I don’t run a consulting firm with lots of employees.  I also don’t run a training firm with lots of employees.  I occasionally work directly with a client instead of as a subcontractor to training companies, and that’s both much more lucrative and much more work.

Greed is a great motivator, though.  So is jealousy.  I don’t like either one, but it’s hard to ignore them.  I suppose they’re acceptable if I use them as motivation to work harder and improve myself.  I’m now thinking I should get more involved in book projects, for example, and become a better developer by doing more project work.

In the meantime, though, I prodded my clients by asking for a slightly higher rate.  One client accepted without a second thought.  Another pushed back, and I compromised.  A third said fine, charge anything I want, but that it will affect what work is offered to me later.

I also had a change to talk to one of my friends at a training company and discovered that one of those presenters at the conference was lying to me, or at least exaggerating.

The upshot of all of this is that I have to periodically remind myself what’s important to me in this business.  I want to work with clients I like.  I want to work on state-of-the-art technologies using state-of-the-art tools (I’m never going to be a Microsoft Word trainer, for example).  I want to make money for people I like.  I want to help students do things they couldn’t do before.   I’d also like to make a million dollars, but only if I can still do all the above.

Money isn’t the most important thing, not by a long shot.  I need to have enough that it’s not an overriding issue, and there’s a certain amount of pride involved, too.  I believe I am a very good trainer and I’m always working to get better.  I think that’s worth a certain amount of reward and a certain amount of respect, a respect in this culture is often given in dollar amounts.  Still, the key is to do what I want to do with the people I want to work with, and that’s awfully valuable.  I spent years and years in other jobs where I didn’t get any of that.

My route to making money will be to learn what’s both popular and enjoyable and cutting edge and do a lot of that.  That’s why these days I teach a lot of Hibernate, Spring, JSF, and Ajax classes.  I also happen to like EJB3 and think it’s going to be very big.

In the meantime, I’m going to spend this afternoon digging into  Dierk Konig’s Groovy in Action book some more and get ready for next week’s class.


Always trying to make contact

I guess this is more of a Xander story than a holiday story, but it has the benefit of being true and even cheerful.

My son Xander (short for Alexander — calling him Xander makes him unique in a crowd full of Alexanders and Alexandras) enjoys playing baseball, but he never had a chance to play in an organized league until we moved to Marlborough two years ago.  When he started, he was a 12 year old in a league that let in 12 to 14 year old boys, most of whom had been playing organized baseball all their lives.

(That, as it turns out, is a New England thing.  When I was growing up in Pennsylvania, football was king.  Since I was small and made up for it by being slow, I didn’t have much of a career.  Around here, everybody plays baseball.  Frankly, I think that’s a good thing, as long as they’re not accursed Yankee fans.)

Xander was smaller than most of the other boys at the time, but he always had more confidence than he could handle.

(Winston Churchill once famously said that the Balkans manufacture more history than they can consume locally.  I often feel similarly about Xander.  If he survives, he’ll be a very impressive adult.  Sometimes I think that’s a pretty big “if”.)

Xander therefore played anywhere and any time he got the chance.  Still smarting from my own little league baseball experiences (I got to play in a 12 to 14 year old league when I was 15 and nobody minded), I arranged to get the boy some lessons at a local batting cage.  That helped, but he was still way behind the other kids in skills development.  He had a natural eye, though, and was learning fast.

Anyway, at the end of that first season the league had an all-inclusive playoff.  The game was held on a Friday evening in late October (this was a Fall league focused more on instruction than winning) so it was pretty cold out.  I was teaching that week but made it back from Boston during the first inning.

The game was a back-and-forth affair, as games with kids that age often are.  Pitchers are unhittable for an inning or two, then can’t find the plate at all, then find it again sporadically.  Fielders made hard plays and botch easy ones.  Throwing to a cut-off man is always an adventure.

Finally we reached the bottom of the last inning (the 7th), with my son’s team down by three runs.  A couple of kids get on, a couple of outs happen, and eventually my wife and I realize that a potential nightmare is about to happen.  Xander is about to come to the plate with two outs and two men on in the bottom of the last inning of a playoff game.

Now as bad as my baseball career was, I still remember a lot of it.  I remember the first time I saw a real curveball and dived out of the way just before the umpire said “strike!” I remember actually hitting the ball over the center fielder’s head and making it all the way to second before the throw came in.  I remember fielding a ball cleanly at third (third? what the heck was I doing at third?) and being so surprised I’d snagged it that I airmailed it over the firstbaseman’s head.  I remember grounding to the shortstop and being thrown out at first even thought the fielder bobbled the ball three times.

(Another kid, trying to be nice, said to me on the way back to the dugout, “are you faking it, or are you really that slow?”)

So I’m very worried now, because if Xander strikes out to end the game with the tying runs on base, it could scar him forever.  I looked over a Ginger and I could tell she was thinking the same thing.

So what happened?  My boy fouls of a bunch of pitches, takes two strikes, and hits a grounder up the middle that he beat out for a single.  The next kid up flies out to end the game.

I, of course, let out a huge breath that I hadn’t realized I’d been holding.  When I met with Xander afterwards, I asked him about it.

“Weren’t you worried about striking out?” I asked.

“Nah,” he replied.  “I knew I’d make contact.”

And there you have it.  It’s been two years now and I’ll bet he’s even forgotten about it, but that’s Xander in a nutshell.  He’s got a lot to learn and the thought of him being a font of wisdom is bizarre, but that’s not a bad life lesson.  When it’s your turn at bat, know that you’ll make contact and everything will be okay.  I can live with that.

Happy holidays, everybody.


Some things I’m happy about

I realized I’ve been doing some complaining lately, probably because I’ve been fighting a cold recently and that makes everything harder.

(Aside: In almost seven years of full-time training, I’ve never missed a day due to illness. This week I came awfully close to breaking that streak, but pulled it out somehow. Now if my ears would only unplug…)

To compensate, I thought I’d list a few things, both technology-wise and other, that I’m happy about.

1. The EJB3 spec means I never have to deal with JNDI again. They’ve replaced it with dependency injection. Since JNDI is also known as the bane of my existence, I’m very, very happy about this.

2. Speaking of EJB3, they took a technology that was a maze of complications and confusion and made it really easy. Sweet.

3. My Comcast cable modem is probably three times as fast now as it was a couple of years ago. I realized this week that IBM had finally released RAD7. The total download size is about 5.3 gigs (yes, gigs). I waited until I got home and started the download and it took just over two hours. Amazing. Of course, it makes me wonder if I could have had that speed all along, but they’ve been throttling it…

4. In a year when we got a new James Bond, a new Superman, and a new Batman, the Batman movie totally wins, mostly because it had a wonderful script, great performances, and even excellent music. I liked the Bond movie, too, but the torture scene was disturbing, even though it was true to the book. I found the Superman movie disappointing. Still, as Meatloaf once said, two out of three ain’t bad. Daniel Craig and Christian Bale are two actors I’d never heard of but now look forward to watching.

(Another aside: Rachel Dawes gives this big speech at the end about how “the man she loved” never came back.  Excuse me, but you’re talking to a good-looking, intelligent billionaire who obviously loves you.  Aren’t you setting your standards just a wee bit too high?  Of course, then she went and married Tom Cruise, so her judgement is seriously open to question anyway.)

5. The movie Daredevil (which I felt was quite underrated) introduced me to the band Evanescence. Their album The Open Door was released a couple months ago and I still play it every time I’m in the car. It’s become one of my all time favorites. The song “Good Enough” is almost too gorgeous.

6. I’m still grateful that I get to read columns from the Sports Guy (Bill Simmons) and articles from the writers at Baseball Prospectus (I almost said “guys” and then remembered Christina Kahrl, who is excellent) on a regular basis.

7. I love my job, really enjoy running my own business, and people keep calling offering me money to go to new places and teach interesting things. Life is good. 🙂