In 2002 I made my computer science professor angry enough that he “accidentally” poured coffee on my assignment (we handed in printed copies of our code along with floppy disks) and for the rest of the semester he took 20 points off every assignment without explanation.
What was my great sin? I turned in an assignment two weeks early when he insisted it couldn’t possibly be completed that quickly. We actually had an amusing argument in the hallway over it.
hand the professor the assignment “Hi, Professor [What’s-Your-Face]. I finished the assignment and wondered if I could turn it in now.”
professor hands the assignment back “No. You cannot be done.”
hand the assignment back to the professor “But I am.”
hand back to me “No. You cannot be finished.”
look at the paper and hand it back “Yeah…it looks pretty finished.”
The professor eventually accepted the assignment and walked away in a huff, and I wandered over to the library to read a few hours, unaware I’d somehow offended the guy with my not-so-social skills.
What allowed me to finish that supposedly weeks-long coding assignment in an hour? Not my computer. In 2002 I was still rocking a bottom-of-the-line Win 98 system. It’s because the assignment was fairly basic C++ and I’d been coding in another language in the C family for a few years.
It was my prior experience that allowed me to excel, yet I often hear people talk as though having a Mac or a PC defines whether you’re a good developer. I know amazing developers that use Macs, and I know folks that use Windows that could code the pants off a lot of Mac snobs I know.
Having a good tool can make crafting easier, but it is the time put into perfecting the craft that makes you able to use the tools well. I could get the most powerful computer in the world, set it in front of my 3-year-old, and she’s not suddenly going to become an elite developer. The same is true for a 23-year-old and a 73-year-old.
Most of the tools I use these days are for the Mac, but that’s just because my current computer is a Mac. I still have a Windows PC, and I could still build websites, games, and the majority of stuff on it about as efficiently as I do on my Mac. Some specific tools have nicer implementations on specific systems, but you can almost always find good alternatives.
I currently use a Mac, but could choose to use a PC in the future. My programming skills would not change. The key for you is to first and foremost focus on improving your programming skills, and beyond that find the system on which you are most comfortable, develop a toolset and workflow in which you’re comfortable, and put in the time to become efficient with it.
Tools can make your life easier, and some operating systems are easier to use than others, but a programmer is ultimately defined by his or her programming skills. Spend a little time to do some research and get your computer and tools setup so you can program, and then actually do programming. Don’t review your setup for 3-6 months. Don’t spend more time perfecting your toolset than your ability to use the tools. Otherwise your core skills will never grow and instead of being the best at using tools you’ll just sound like one.