Martin Pilkington Independent iPhone Developer
Who are you and what do you do?
I’m Martin Pilkington. I live in sunny Accrington in the north-west of England. I’m currently the sole developer, designer, janitor etc of M Cubed Software, through which I work on Mac and iOS apps, both to sell myself and for clients. I currently only have two apps, Lighthouse Keeper and Syllabus, due to a recent reshuffle I had.
I’m also getting into writing. I have a blog at pilky.me where I write about anything that takes my fancy, but usually development related stuff such as reviews of Xcode. I’m also working on a book about Xcode at xcodeguide.com
You can find me on Twitter at @pilky where I’m usually rambling about Starcraft 2 or arguing with the whole internet.
How did you get started in developing for Apple devices?
I started using Macs at a very early age. We had an LC when I was 3 that I'm told I would end up doing stuff on that my parents had to get the manual out to reproduce. When I was about 8 we got a Performa 5200 which came with Myst. The key thing though was the making of video, which got me wanting to try and make my own games. Down the years I learned more about building games, eventually learning real programming, and through a series of lucky encounters I ended up being funnelled towards Mac app development. After that there was no turning back.
What does your computer and workspace setup look like while developing?
I have a 27“ iMac (2.9GHz Core i7) with 16GB of RAM which is hooked up to a 20” Dell display as my second monitor. For input I have Microsoft Natural Ergonomic 4000 keyboard and a Logitech MX Revolution mouse, which I consider the best keyboard and mouse around. I also usually have my iPad hanging around. If I’m not using it for development it’s job is to be my main twitter device (so I can put it out of reach when I need to concentrate). Beyond that my desk is usually a mess of pens and paper that I use for scribbling down ideas and planning stuff out.
On the computer, I have two spaces set up. The first holds all my standard stuff like iChat, Skype, Mail, Safari. The second generally has Xcode open on the main display (usually the latest developer preview) with anything else I need to reference open on my second display. I have Xcode set up in a particular way. I have a Files tab which shows the file navigator and two files in the assistant editor side by side. I also have a NIBs tab which has the file navigator filtered by “.xib”, the inspector and library showing and the assistant editor split horizontally with my NIB on top and a header file on the bottom (I highly recommend everyone check out behaviours in Xcode. Brian Webster wrote a great overview of them).
I’m looking to get a Mac Mini in the near future to use a continuous integration server for my Mac and iOS apps, as well as a staging server for any web stuff I work on. This will also mean I’ll be able to easily test on multiple OS versions without the pain of having to reboot my iMac or have all my RAM eaten up by a VM.
With so many apps being released daily now, what are some ways that you think help to stand out above the rest?
The most important thing is to be useful. Don't sell features, sell solutions to problems. Features are nice, but why should a user care about them and how will it help them in their life? Really think about that before adding any feature in.
I also think being smart about design is important. Try to go less for initial visual impact and more for long term elegance. Think hard about how something should work. A pretty picture will get someone to look at your app, but a truly delightful and well thought out user experience will get people recommending it to their friends and coworkers, which is by far the most valuable marketing tool out there.
If you had two minutes to tell another developer your favourite iOS development tip, what would it be?
The most important advice I can give to anyone, but especially to developers, is to never stop learning. Always try to learn new things. Look at new development processes and see if they improve upon your current ones. Try to learn your development tools in depth so you can become more productive. Look at other development platforms and see what is interesting there that you can use. And make sure you read release notes and API diffs when a new OS comes out. There is so much that you can miss if you don't read them, stuff that can make your life a lot easier.
While the creation of an application is enjoyable for developers, there is the feedback and comments that come after. How do you deal with that at M Cubed?
I've grown quite a thick skin over my life so I don't really feel the impact of negative comments. Indeed, I often end up agreeing with much of them as they're often about things that frustrate me more than anyone else. The important thing is to try and not take it personally. It's hard, but it helps you be objective. Is the criticism warranted? If so try to take a neutral tone and solve it. A willingness to help and not sounding like a support drone can do wonders to changing the mood of someone.
As for positive criticism, enjoy it. It's one of the great things about this job. Just make sure it doesn't go to your head as complacency is lethal.
Finally, what is your favourite app?
Xcode. I often joke that I'm the only person outside of Apple who genuinely loves Xcode. I think it's a fantastic piece of software. Admittedly it has some issues, but it helps make developing software fun and enjoyable, while also making me more productive. I love features such as the assistant editor, behaviours and schemes which make my life so much easier.
I hate the vitriol I see directed towards the team that work on Xcode. It has issues, yes, but they're an incredibly hardworking and talented team and Xcode is an very large and complex project to work on. They often forget that 10 years ago OS X was in the same situation of being something new with lots of bugs and things that didn't work, but now the code behind it powers most of the devices produced by the world's biggest company.