Most technically savvy people can easily switch from one technology to another without a lot of issues. Where people generally get bogged down, at least at the outset, is the lingo.
For example, when I fell into "business intelligence", it wasn't the shift from highly normalized to denormalized database designs that confused me, it was the language being bandied about. Dimensions and facts were Greek to me. The light bulb came on when I mapped the lingo already in my brain to lookup tables and plain-old tables (
ed: I know that is a simplistic mapping that will piss off some pedantic people out there, but I'm simply trying to make a point). When I talk to most people who don't understand what a cube is, my default explanation of "pivot-tables on steroids" usually invokes the on-switch in their brains.
As I mentioned a few days ago, I've been looking at Objective-C in my spare time, and I have been "remapping" what I already know to what I'm learning.
Most programmers are familiar with the using the terms "object" and "method". Most Objective-C tutorials use the terms "recipient" and "message" in demonstrating the syntax for "object" and "method".
Here's how you would invoke or call a method on an object in a more mainstream programming language:
object.method(argument1);Here is how it is usually described in an Objective-C example:
[receiver message:argument1]Keep in mind that I don't really have an issue with the structure of the Objective-C, it's just a nuance you need to learn. My quibble is that nobody really put it in terms that I understand. I can't be the only one who would learn faster if there was a tutorial a little more tailored to someone who has seen Java, JavaScript and PHP before.
What I would have preferred to have seen:
[object method:argument1];Followed by some text saying:
When you call any method of an object, that line should be enclosed in brackets.
Note that the sentence above is
not targeted to a programming newbie. Programmers know the difference between a brace, a bracket and a parenthesis.
The changes above, I believe, would result in the same "A-ha!" moment that I see in people when I tell them about cubes being pivot-tables.
In the end, I still figured out the difference, but the reality is that there was some time wastage. With my rephrased example, I would have achieved instant understanding. With the documents I've been reading, I had to read and re-read various tutorials to make sure I understood what I was looking at.
Of course, if I wasn't familiar with other languages, it is quite possible would have been a lot easier to pick up the lingo in those tutorials. When it comes to Mac programming, however, I would bet that the 80:20 rule applies. 80% of people interested in OSX programming have seen other languages, while 20% are total n00bs.
Having ranted enough, I do need to say that there are
some excellent tutorials out there, the best are generally written by
Scott Stevenson. I only think that it would be nice to have a short tutorial on the key structural and syntactical changes for programmers who use other languages (i.e., headers and implementation files, method invocation syntax, and special characters).