Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Martin Pilkington.
Who are you?
I’m Martin Pilkington. I’m based in Accrington, England and run a company called M Cubed Software that currently consists of just me.
What do you do?
Most of the projects that I can currently talk about are my own apps, which can be found at mcubedsw.com. I mostly spend my time designing or coding up Mac and iOS software, both for my own apps and for clients.
I have been involved with a few other things. I write up reviews of new Xcode releases on my blog, such as this one for Xcode 4.0, and am currently working on a book about Xcode.
I also give talks at development conferences on occasion.
What is your development environment?
My main dev machine is a 27“ iMac with a Quad 2.93GHz i7, 16GB of RAM and 1TB HD. I also have a 20” Dell display as my second monitor. Recently I got a Mac Mini to use as a testing server. It’s running Mac OS X Lion and Mountain Lion at the moment, but I’m hoping to get Windows 8 and Ubuntu on there as well at some point.
The majority of my day is spent in Xcode. I also spend a lot of time using my own Lighthouse Keeper app for issue tracking, Tower for making git usable, OmniOutliner and OmniGraffle for sketching out ideas and Photoshop for doing UI design.
For any web development or scripting I use a combination of Textmate, Coda, RubyMine, MAMP and Querious.
My favourite language is by far Objective-C. A lot of people dislike it at first, but when you get to learn it properly you begin to appreciate how powerful it is.
By extension I’m also quite fond of C. It can be painful to deal with, but I believe that is largely down to the APIs. Most C APIs are not well named, nor very easy to use, but that’s a result of the time in which they were created. If you use more modern APIs, such as Apple’s excellent Core Foundation, C can be as nice to use as any other language.
I’m looking more into Ruby and Rails. I’ve used Ruby for scripting, but usually stuck to PHP for the little web development I’ve had to do, simply due to its ease of deployment and my familiarity with it (PHP was my first language).
I am very interested in Windows 8 and Windows Phone. Metro is one of the most exciting things Microsoft has ever done. I’ve noticed many Mac and iOS developers who have long dismissed Windows as not worth the effort to develop for, who are now looking at it quite curiously now. Hopefully I’ll be able to find the time to get into the development tools, languages and frameworks.
What is your coding pet peeve?
Poor naming. We are not in the 1970s or 80s any more, there is no valid reason not to give methods and variables descriptive names. So many languages and frameworks try to be overly concise rather than being obvious, optimising for writing than for reading. Don’t abbreviate things. And don’t use non-obvious names. Sure it may make you feel smart to name a method “squeeze”, as in the case of one of Ruby’s String methods, but naming it “
stringByRemovingDuplicateCharactersInSet” is far clearer as to what is being returned (a new string), what it is doing (removing duplicates) and what is being passed in (a character set).
For my own code I prefer to use K&R and tabs. The naming convention depends on the language I’m using. Overall I prefer camel case, but I’ll use whatever is the standard for a particular language
How did you get started programming?
The first computer I remember having was an Performa 5200 back in the mid 90s (though apparently my family had an LC in the early 90s when I was still a toddler).
I initially started making point and click adventure games using ClarisWorks and Apple Media Tool. I gradually started making more and more advanced games until I reached the point where I had to learn how to program.
My first real language ended up being PHP, simply because there was a book on it in my local library and I was starting to get interested in building websites. I’m always conflicted about PHP. On the one hand, it’s my first language so it has a special place in my heart, but on the other hand it does frustrate the hell out of me when I use it at times.
The developer community has influenced my coding greatly. The biggest impact the that other developers have had on my coding is making me think a lot more about the structure of the code I write.
My biggest dislike about the developer community in general is probably how closed minded many people can be. The degree of this can vary a bit from community to community, but often there are those who dismiss the ideas of others simply for being different. Obviously not every idea is good, nor does every idea work well in all situations, but it’s good to see what other communities are doing and see if you can gain benefits from them.
My biggest online resources are probably GitHub for sharing code and Twitter and StackOverflow for solving problems. I don’t really use forums too much nowadays, but I’ll occasionally go on Apple’s Dev Forums. I find them too slow and clunky compared to other forms of communication
What advice would you offer to an up-and-coming programmer?
Never stop learning. You should always be learning new languages, tools, frameworks and techniques. As a general rule of thumb, if you look back at code you wrote 6 months ago and don’t see things that could be improved, you haven’t spent enough time working on your craft. Like most things, software development is easy to learn but incredibly hard to master.