He was impressed with the fact that the system doesn't need to be "set up" with applications before it's ready to use. PDF files, Word documents, Flash movies -- they all are viewable straight out of the box. He's used to having to download a new application for each file type he wants to open. We even had a joke in the family: every time he mentioned a new app he bought for Windows, I gave him a faux-quizzical look and said, "Wait, that's not built into your operating system?"
As a developer, he's hit the ground running, far outpacing where I thought he'd be in a week.
The day after I set the system up for him and walked him through everything, he had Xcode installed and the iPhone SDK downloaded. He was amazed that each and every Mac comes with development tools, free; equivalent development tools from Microsoft are a thousand-dollar investment, if not more.
He's learning to use Xcode and Cocoa. Right now, for the project we're working on together, he's also using Coda and a PHP framework called CodeIgniter. Both CodeIgniter and Cocoa are built upon a model-view-controller (MVC) architecture. What he's learning with Cocoa helps our PHP project, and vice versa.
The MVC approach and Cocoa, he says (and he knows much more about this than I do), are "a little strange" compared to frameworks and languages he's used to, like .NET and Visual Basic. The theory, he says, will take some getting used to, but makes sense. He most misses property sheets, a way of assigning properties to objects in Windows development environments. Instead, all the properties for Cocoa are defined in code. This, he admits, allows for much greater flexibility, but requires a little more work.
For example, he mentioned custom controls. With .NET, custom controls are pre-compiled applications that are referenced by other applications. In Cocoa, he said, those custom controls can be written directly in your project, and the resources for them stored in the application bundle. Greater flexibility, yes, but also more work: It's not as easy as, say, grabbing a control from your library and plugging it in.
To my delight, Dad also wrote his first iPhone application. He wrote a simple app that opened a web page when a button was pressed. Not exactly ready for the App Store, but pretty incredible considering he's only owned a Mac for a week. He found his iPod touch's serial number, and is going to try actually using it on the device today.
He said he was very excited about using -- and developing for -- the platform, and was happy about the first-day introduction. He said had his comfort level not been as high as it was that first day, he would have been much more reluctant to install the developer tools and dive right in.
It's good advice for all of us, looking to bring another Windows user in from the cold. It's not really enough to sit them down in front of their new Mac and walk away. It takes a little handholding, and a little guidance to make the switcher comfortable. The faster the switcher is comfortable getting around, the more willing they are to learn new things. You'll find that they're more willing to find new things and solve problems on their own when they know they can.
As before, it's good news for any long-time Windows user in your life. If my dad can do it, anyone can.
I'll be sure to keep everyone posted on his progress. We're kicking around a few ideas for iPhone apps, so -- who knows -- you might just see him in the App Store soon.
One last note: If I've unwittingly misrepresented any ideas about how to write software for either Windows or Mac, they are comprehension errors on my part, and only that. I'm just a graphic designer, here, people.