Smalltalk Teaching fun

I’ve just returned from a one-to-one workshop in which I taught a new member for a customer’s development  team in VA Smalltalk.

It was real fun. We went through our 4.5 day course in 2 days and even had some time to do pair programming on the exercise. My victim is an experienced programmer with good oo and programming know-how, so we could skip a lot of introductory material and go well into the interesting topics of Smalltalk, like Blocks and Debugging.

It was good to see how a programmer with a C# and Java-Background immediately found Blocks and the elegance of control structures in Smalltalk great and he was just blown away by the elegance of Envy’s integration of Version Control with Configuration Management and Team concepts – even without code ownership Envy still is way ahead of most its competitors – apart from the diffing / merging support…

I also found some nasty bugs in my presentation material and wonder how I could ever teach the course before and have happy customers with such buggy material. I am now working on the corrections and feel so ashamed – apologies to all who had to suffer before 😉 The only positive thing abut this is that if it was different, I’d probably be ready for retirement due to perfectness and boredom. At least I know for sure that some of them are happy Smalltalkers today, so maybe they never realized and hopefully burnt their folders in the meantime 😉

On the other hand, if you look over the shoulder of a programmer who’s been using VisualStudio or Netbeans for years when he’s using VA Smalltalk, you just realize how much VAST but also other Smalltalk environments have fallen back behind modern IDEs. Searching code or navigating the system is clumsy.As a Smalltalker, we’ve gotten accustomed to this, but it’s a real hurdle for switchers.

I never really realized it, but in VAST, many search dialogs for Classes, Implementers and Senders are case sensitive when they either shouldn’t be or be configurable (Do you really know if you named the method lastname or lastName, and why should that even matter in searches?). There is little to no support to easily find out which classes define a variable named “firstname” and the like. Browsers that won’t let you go away without saving valid source code really break your productivity. And the menus are a bit of a mess. Like, in some places you can “Browse Class” while in others there is only “Browse Hierarchy”. Never mind the Diff tools that I’ve already mentioned.

All kinds of nasty little things that we’ve accepted over the years and don’t even realize any more really make coming to Smalltalk harder than it should be. Most vendors or O/S projects are improving their tools in this area, and the environments that do not offer syntax highlighting or intellisense will soon be gone. Cincom, for example, has introduced a very nice search tool (searchlight) to VisualWorks and Instantiations is working on VA Code Assist and a new settings framework. Object Arts has been providing intellisense and syntax coloring for years and Pharo is also very good in suggesting method names etc.

But hey, after two busy and hard working days, my trainee said he liked the concepts, tools and language a lot and looks forward to working in Smalltalk!

As a side note I am glad to see requests for such small team workshops more frequently these days, because it means companies ramp up for a longer life of their existing Smalltalk projects and actively invest in new Smalltalk know how for their project teams. Finally they found out that there’s an easy answer to the question of where to find enough Smalltalk developers: make or buy is also a decision to make when it comes to staff and know how, and only waiting for someone to somhow somewhen improve the situation is not always the best strategy.

So back to project work again…

Oh, and while we’re at it: if you are looking for someone to teach Smalltalk to individual team members or a group of developers or need a workshop on more advanced topics like unit testing, Refactoring, configuration management and team concepts in Envy, or the web Framework Seaside, you should probably get in touch with me. You can find more info on our company website.