I noticed a rise in the number of developers (mostly doing web development) using Apple machines. Does Mac OS offer a better environment for programming or is it because of the hardware? What are the reasons?
Mac OS X is based on Unix but is more user friendly than most Unix distributions, I think that counts.
Also a lot of nice software (TextMate...) is available.
I prefer Macs for all forms of development (except .NET development of course) because it has a UNIX command line. I can't stand it when I can't access standard UNIX command line tools to speed up my development. It feels like a crippled development environment without them.
I've also found, in my opinion anyway, that the quality of software in general that is written for Macs is much higher than that written for Windows, especially when it comes to friendly development tools such as Coda and TextMate.
I don't use a Mac, but I can see part of the appeal; it looks good, it works out of the box, and it offers a real Unix environment (with all the power that brings) with less of the hassle. Even programmers get peeved when Linux doesn't behave itself.
I understand that some platforms work better under Mac OS; allegedly Ruby, for example - maybe there's a slight increase in uptake due to people wanting to get going with the latest "trendy" language?
There are a few reasons I switched to Mac. One by one I am replacing all the windows development boxes in my environment.
Mainly, it just gets out of the way and let's me work.
1) Backups - My old HP Laptop died. I was screwed for a few weeks having to set everything up again when a Mac friend showed me he could take a live backup of his hard drive, plug it into another mac, and boot. This was because the hardware inside a macbook pro was identical to an iMac's internals. Pretty cool. Backups happened as often or as little as he wanted. This meant near zero downtime (even if I ran windows in a virtual machine).
2) Vista - It was bad enough 2 years ago that it was easier to switch. Switching was made easier due to the VM Software that came out.
3) VMWare Fusion/Parallels - It was easier to switch to Apple and run Windows in Parallels. Parallels ended up being unreliable, but VMware Fusion came out and it's been great. Today I have any number of virtual machines kicking around from servers, to windows 98 machines, all available for testing or development as I need.
4) It just works. It's hard to explain, the computer itself seems to melt away and you can focus on the task at hand. I go weeks without rebooting, standby is actually stand by (near instant on and off)
5) Better Tools - Many of the tools I used in Windows, seemed to have better counterparts in the Mac world.. Skitch (Instead of SnagIt), OmniGraffle (instead of visio), TextMate (although I am more into Eclipse now), Scrivener (Writing/research tool).
6) Multimedia - Handy to be able to mess around with your own video/audio editing, a small bonus for me.
Originally I had a bootcamp partition due to paranoia of having to run Windows. As time has gone on, I have found Mac equivalents of most the software and keep the Windows VM for client environments where I have to deal with their windows only software.
The software offered is quite appealing to both designers and programmers alike. Although, most (if not all) the functionally isn't exclusive on the Mac, it's been my experience that a major factor of being drawn to the Mac platform was indeed, the available tools.
I suspect it being from a surge of consumers from the ad campaign wars and/or iPhone developers meandering around.
Reliable hardware with great aesthetics and the ability to run Mac OS X, Windows, and Linux via virtualization. In my case I work mostly on Windows systems, but I have a Macintosh laptop that lets me take multiple environments with me wherever I go.
The .NET developers I know that have bought MacBook Pros, did so because they like the hardware and since they are using Intel CPUs, they can run Windows on it. With the people I know, they didn't buy it for Mac OS X, but again, mainly because they have pretty solid hardware.
They are also nice looking machines. I wouldn't mind getting one, but my IBM T60p will suffice for now.
Pros (In no particular order)
- They look great
- They don't slow down over time as badly as PCs do
- Seperate graphics engine makes for cool stuff in the GUI
- Very good out of the box toolset
- You don't get all the rubbish that PCs come pre-installed with
- You can run Parallels or VMWare to run windows on you mac very easily (2 in 1)
- As a web developer/designer you are highly regarded and targeted by Apple's products
- You can look cool with one on your lap at a conference
- Good open source software support out of the box (helps the wallet)
Cons (In no particular order)
- They're expensive
- There's not as much software out there as you get with PCs
- Games are EXPENSIVE and limited
- What you get is what you get. Building Macs is very difficult (compare to a PC)
- You could end up being a smug Apple user, who think's their machine never crashes
Oh by the way. I'm a web developer and I'm a PC.... but I would have no issue with being a Mac
On the one hand, there is of course the iPhone. I wouldn't say it accounts for all switching developers, but at least half of them do so because they want to develop for the iPhone.
Another reason is that Macs can run Windows, but not vice versa. That, plus the fact that Macs are way more "stylish" than PCs could account for another large part.
And last but not least Windows Vista, and its not that different successor, Windows 7, have the potential to drive away another bunch of developers.
For me, and I'm sure for many others, it is due to the fact that a Mac is required to develop iPhone applications.
I bought a Mac just out of curiosity and to keep myself educated in the areas beyond my field of expertise. Overall I did not find Mac any better than Windows but I guess that depends on kind of work you do. I imagine *nix fans should really like it.
If I did any amount of Ruby/Rails, Python, PHP, Java, iPhone or anything beyond my standard .NET stuff I would consider making Mac my dev platform but still, I have to too many utilities, tricks, performance improvement tools on Windows and I don't know *nix shells that much so I think my performance would suffer.
For now I'm using it solely as a home PC - mail, internet, music, photos, skype.
I'm a developer who is thinking of buying an Apple. Here are my reasons:
I like having a UNIX command line available. Cygwin is nice, but it just feels klunky compared to a real UNIX/Linux. Thus, I would like my primary OS to be a UNIX or UNIX-like environment. This limits me to Mac OS X, Linux, Solaris, or a BSD. I'm mainly a Linux guy, but I've messed with all of those enough that I'm comfortable with whatever.
I'm into photography. There is some really nice photo software out there that my pro-photographer friends swear by (Photoshop, Lightroom), and from what I've seen of the Open Source competitors, they just aren't there yet. This software is only available for Windows and Mac OS X.
The combination of 1 and 2 leaves me with Mac OS X as a primary OS.
I don't want to deal with Hackintosh stuff. It's worth it to me to spend a little extra and have it work out of the box. Yeah, I'll probably buy with fairly minimal specs and upgrade RAM/hard drive myself if I feel the need, and save some $$$ that way.
I can always run Windows, Linux, Solaris, *BSD, etc. in a VM.
Apple hardware is cute.
Most of my actual development work isn't platform-specific, and what is I can always run in a VM or on one of my other computers.
I bought a Mac for iPhone development.
But I think the biggest difference between now and ten years ago is the rise of the web developer and interpreted languages. Web developers can use Java, Python, PHP, Perl, JavaScript, etc. Doesn't matter what OS they use, so they can use the computer they WANT to use.
I think the rise is largely due to the change to using Intel processors and therefore the ability to run Windows natively or in a VM. Macs are solid performers but a bit overpriced. I personally run VirtualBox with Windows 2003 Server and Visual Studio 2008 to do C# development.
The iPhone App Store is a great marketplace for apple software. If you start playing around with developing iPhone software you are by default learning how to develop on the Mac.
It's currently trendy?
(Awaits downvotes from fan-boys...)
EDIT
In response to the responses, to quote Charlie Brooker in "I hate Macs":
"Cue 10 years of nasal bleating from Mac-likers who profess to like Macs not because they are fashionable, but because "they are just better". Mac owners often sneer that kind of defence back at you when you mock their silly, posturing contraptions, because in doing so, you have inadvertently put your finger on the dark fear haunting their feeble, quivering soul - that in some sense, they are a superficial semi-person assembled from packaging; an infinitely sad, second-rate replicant who doesn't really know what they are doing here, but feels vaguely significant and creative each time they gaze at their sleek designer machine. And the more deftly constructed and wittily argued their defence, the more terrified and wounded they secretly are."
EDIT2: Another recommended reading The Case Against Apple by Jason Calcanis.
For me it's:
- The ability to run or develop either UNIX (any x86 variant), Windows, or Mac OS X applications on a single machine.
- UNIX command line
- Because of the above access to all the development tools I could want (iPhone SDK springs to mind)
- No viruses (yet)
- I like the bundled applications with Mac OS X such as iLife
- Exposé and Spaces are awesome
- Well designed computer
The only disadvantage is the cost. But I don't mind paying for quality.
In one sentence: you get all the power of UNIX with (almost) none of the headache.
For a lot of us out there who are UNIX fans but never had the time / inclination to get UNIX / Linux working without an IT department to back us up, OS X is something we've been wishing for since about the mid-80s.
(Personally, I was expecting Solaris to have broken through and become this OS by the early 00s. Boy was I wrong.)
For me:
The hardware is pretty rock solid. I have had 10 Apple machines and only had to use Apple Care once.
Stability - My mac Pro has been running without a reboot for 91 days.
Awesome GUI and still has command-line which I am in all the time.
The development tools make it possible to develop cross platform software easily.
Virtualization - I can run ANY other OS on a Mac. Not true in Windows land.
RoR - Ruby on Rails. This is becoming a very popular framework, and the preferred environment environment is using the TextMate (or something like that) editor on Mac OS.
To actually answer the question:
The reason you've seen a recent rise in programmers working on Apple machines isn't because Apple is awesome or trendy. It's because it's actually possible.
The compatibility gap between platforms has been greatly reduced in recent years thanks to technologies such as virtualization, cross platform run-times, and mainstream cloud/internet services.
As the operating system and application platforms become more and more irrelevant and commoditized, programmers will be less bound to the platform they are developing for and will seek out new environments to work in that better fit their tastes.
Given that Apple clearly occupies the high end 'luxury-computer' niche, it's no surprise that certain types of (well paid) programmers have gone there.
I believe it is the great UI running on UNIX that makes a Mac very attractive ( and they look very good ).
I wouldn't be so quick to assume that the basis of your question is actually true. It's impossible to say without some level of research whether more developers really ARE switching to macs.
See this page on the Biased Sample fallacy, which I believe applies to this situation. Sample S, in your case, would be the combination of (F) the developers you've noticed using PC's and (G) those you've noticed using macs. It is not necessarily true that that the percent of people using macs from your sample group S is the same as, or even anywhere close to, the percent of people using macs in the entire population P. For example, CS students at a university may be more likely to use macs if the facilities provided by that university are more mac-friendly than PC-friendly (though this situation is very unlikely - it's merely an example).
In short, just because you have noticed a trend around you, does not mean that the trend actually exists.
And thanks for the down-flag with no reasoning.
That's quite a new trend for me :) Never ever ever heard, that programmers are starting to use Apple as developping environment. I'm gonna keep an eye on it...
I also noticed this trend, and as a web developer I recently made the leap and bought a mac and stuffed my PC in the closet. Two months later, I gave up and installed Windows 7 on the mac (atleast the hardware is nice..).
For people claiming that macs are made for programming...come on...the mac keyboard doesn't even have keys for "|", "{" or "}"...
OSX is pretty nice most of the time, but its the little things that bothers me. First of all, I can't stand the window handling. Decoupling the menubar from the window is stupid. Period. Resizing only in the bottom right corner - who came up with that? Maximize isnt really maximize...just "make bigger"...wtf?
Then came the obvious "moving to OSX from windows" things:
- Home/end moves to top/bottom of document/console instead of the line - wtf?
- Keyboard bindings...20 years of CTRL-C/V is hard to get rid of
- Window controls to the left instead of right - it's like Apple is trying real hard to be different
Don't even get me started on the Apple lock-in... Pressing the play/pause button on the keyboard starts iTunes (but Apple, all I wanted was to play/pause Spotify!), and the (best) way to get rid of that behaviour is to "chmod -x" iTunes. Then chmod back when you need iTunes, which you of course do if you have an iPhone... Great user experience!
One other reason not mentioned yet, of course it's me alone, and this has not significance:
The Mac OS is the only one (that I know) that allows me to use a QWERTY keyboard (muscle memory, historical reasons, well adapted to programming C-family languages…)
AND ALSO
easily enter the French diacriticals é, è, ê, ü, ç, œ and the likes.
I'm a programmer because I used an Apple machine. I'm an engineer by training and had always been mildly interested in programming, but never enough to overcome the initial setup learning curve on Windows. Once I made the switch to a MacBook, I had the ability to write Bash scripts, Applescripts, Ruby, Cocoa... all with no or trivial setup.
Also, newbie tutorials written for OS X back then (~2001) were much better than the ones written for Windows. Judging by the results of a google search (.net tutorial vs. cocoa tutorial) it looks like this is still true.
I recently switched to a MacBook Pro (13"). Previously I had always used PC laptops from Dell, HP, Sony, etc ... The major reason for my shift to Mac was the durability and build quality I saw in the uni-body design of the MacBook Pro. I had difficulty finding a durable, well built PC laptop under $1,000. In the past I would have gone with a Thinkpad but I feel their build quality has gone "downhill" since Lenovo purchased them. A major plus for the MacBook Pro was that I could go into an Apple store and actually try one out before purchase.
As a software developer the majority of my work has been Windows based. I use ASP.NET, WinForms, WPF, and SQL Server. However, as the Mac uses the Intel processor I can run Windows natively or as a virtual machine with the Mac OS. To me it is the best of both worlds. When developing PHP, MySQL and Java I stay within Mac OS. When doing .NET and SQL Server work I use Windows via a Virtual Machine.
Does Mac OS offer a better environment for programming or is it because of the hardware? What are the reasons?
OSX has its own UNIX underneath: which means for a web developer who works with webservers (that are commonly dominated by Linux/FreeBSD), can get the advantage of using unix-to-unix(/linux). This means rsync, cron, scp and secure shell.
OSX has its own UNIX underneath: this means, developers can use a unix build of popular databases such as MySQL, but also their favorite webserver (nginx, apache, lighttpd) local. This switch makes the workstation more effective and efficiently (develop-test and upload when done). FOSS admirers don't have to wait for the Windows port to arrive.
Ruby projects (Rails, Merb, Ramaze, Gosu, etc) are good FOSS examples. But also Python projects, like Panda3D, Unity, Django, etc. find more love on OSX. The XCode developer tools have bindings for these languages and these tools come with the Operating System DVD's. Oh, and Ruby and Python are standard on the system.
OSX supports spaces (virtual desktops). This allows me to keep application realms in order, like my editor, api references and shell.