Archive for the ‘Uncategorized’ Category

The thing about teaching a class is that it can’t actually be done. You can only teach an individual.

I’ve been teaching since I was in middle school. Hard to believe, but true. That effort, to teach my younger sister (by six years) how to do addition was an utter failure. My next major outing was to create a one week segment for my 12th grade physics class on black holes, including a test. I believe that one fared better, although I don’t believe my endeavor to expose my classmates to then cutting edge cosmology was necessarily appreciated.

Throughout college, I was a TA and grader for various CS classes. I spent a summer a the Nature and Conservation director at a Boy Scout camp and two summers teaching programming to teens. By the time I entered the professional arena, I knew teaching (tech transfer) was in my DNA.

A decade ago, I worked for a company where teaching C++ was part of the job.

Fast forward to my current position. I’ve had the opportunity to create and present Modern C++ (C++14) training within my company. This has come in two flavors, one to jumpstart them into C++ (C developers) and one to bring them up to speed on the start of the language (C++98/03 developers). Both classes have about 15 hours worth of material.

The first challenge in teaching modern C++ is that of linearization. C++ has a wonderful breadth. Unfortunately, It can be challenging to present the material in such a way as to be both meaningful and at the same time not resort to appeals to Oz-ian “pay no attention to the man behind the curtain.” My success in this area I attribute to years of exposure to the materials of James Burke.

The second, far more interesting challenge, is hitting that Goldilocks zone where everyone is learning. Even when teaching C++ to C developers, there will be those who immediately take to its conceptual frameworks and there will be those who probably never will. It would be easy to cater to the former and simply write off the later as Luddites. Alternately, one could obsess on the later group and end up boring the former to tears. A fundamental balance can be achieved by using labs which build upon a coherent problem and lead the student to embrace ever more abstract aspects of the language.

In the case of my modern C++ for C++98/03 developers class, I take an entirely different approach. With them I use a progression from changes in the language, to important element of the standard library, to useful Boost bits and finally to the contributions made by the GSL. Within this progression, I give attention to each feature or class using a presentation / discussion format. Unlike the jumpstart class, I can’t use the labs to modulate the pace of the class. Each group I teach will progress at their own pace. (I limit my class size to about 20). In this advanced class, I also find myself researching answers to specific, real-world issues that the students are encountering. I then fold these results back into the materials I present.

As with any modern company, there is a mix of platforms under development. This has necessitated my doing a bit of bounds checking to be sure that the materials I present will work in a Visual C++ / gcc / VxWorks world. With the advanced class, I present not only the modern (C++14) methods (with a bit of C++17 previews), but also the pre-C++11 mechanisms as not everyone has the luxury of constantly upgrading their tool chains.

Overall, it has been an enjoyable experience. One I’m sure I’ll be repeating in the future.

Note: As a nod to an interesting Stanford professor (Mehran Sahami) and in the voice of Starfire, I have taken up the habit of “the throwing of the candy.”

Read Full Post »

In the dim days, dinosaurs roamed the Earth. Okay, not that far back.

In the American West of the late 19th century, if you wanted the latest technological wonder needed to make your life easier, there was one place you’d go … the blacksmith. Why? Well, the smith had both the equipment and the skills to produce just about anything out of metal. (Our expectations of technology was a bit lower by ¬†today’s standards.)

On the face of it, the things you needed to set yourself up as a blacksmith were fairly minimal.

  • Fire
  • Metal
  • Water
  • Tongs
  • Hammers
  • Chisels
  • Anvil

Of course all the tools in the world a pointless without the skills needed to use them effectively and efficiently.

Of the items on the list, the outlier is the anvil. It is the foundational piece of equipment second only to fire in importance.

Interestingly, this fairly humble object is used to the production of stunning pieces of metalwork.

For some time after the arrival of Europeans to North America, anvils were shipped from the Old World. Eventually, the infrastructure was sufficient to allow the production of anvils locally. Bringing the cost down significantly. Still, they were expensive. Likewise, if you wanted a blacksmith, you brought one over.

To become a blacksmith, you apprenticed with a blacksmith. At the end of your apprenticeship, you would be given either money or tools. With your tools and skills and after purchasing your own anvil, you could now go and ply your trade making everything from spoons to fences to lanterns.

For me this history has a special significance. When I started on my journey of working with software development, computers were million dollar investments. Access to them was restricted to a few highly trained individuals. I had the opportunity to study under one of those who was present at the beginning of the computer era. I watched the development of the computer from big iron to something you wear on your wrist.

Throughout there has always been the computer and keyboard with which I craft software. Long gone are the days of stacks of dollar bill sized, hole-ridden cards. Now my anvil could be lost in a stack of magazines. Strangely, that US$20 anvil of 1850 would cost about US$700 in 2016, about what you’d pay for a run-of-the-mill laptop or the iPad I’m composing this post on.

Like that anvil, I can take my tools with me anywhere. Like the blacksmith, the quality of my  work and the words of my employers and colleagues speak for me. Likewise, my tools and skills need constant sharpening and care.

I have seen many fads come and go. Throughout the basic skills are always applicable. When teaching, I try to emphasize that there are no shortcuts to mastery. There seems to be a great willingness to build software today by assembling large chunks of other people’s work. While this may lead to a functional product, it does not make you a better developer. To become a better developer you must understand how the pieces work. I’m not saying that you must build everything yourself, merely that given time that you could. This is the distinction between a technician and a technologist. The former can be trained in short order by the latter.

It seems that in an age when we want everything on a global scale, we believe that the quality of the craftsman a price that must be paid. In reality, scale need not sacrifice quality. The missing piece of the equation is time. The old adage of fast, cheap, good; pick two; is quite real. Quality takes time. If you’re seeking quality, keep you’re eye out for those who have their own anvil.

Read Full Post »

There appears to be a relationship between me moving and not adding entries.

That being said, I’ve just completed reading Richard Nisbett’s book, Intelligence and How to Get It: Why Schools and Cultures Count.
The message is fairly simple, “you can’t improve the IQ of children by mandate.”

Okay, that’s really simplifying things. There’s much more nuance in the text. Nisbett provides many many examples of failures to improve educational outcomes via our typical big hammered mass production techniques. As with most well crafted things, the best product comes from the individual and personal attention. You only get so far with the Walmart approach.

There are no revelations here, merely support for those things that should be fairly obvious to anyone who takes the time to look at the problem. Not a bad read.

Read Full Post »

%d bloggers like this: