Sushi

tap tap tap

tasty bits for your iPhone

Our blog blog blog

Looking for more recent articles? We post new articles exclusively on our new blog…
snap snap snap.

Tools for effective iPhone app development

by John Casasanta
February 18, 201117 comments

a tool

At tap tap tap, we have no centralized location. We have over 20 people working together on well over a dozen active projects and the team is spread-out over all parts of the globe. One of the biggest benefits is that everyone’s able to work in the comfort of their own home, their favorite coffee shop, or pretty much any place they desire. But along with this great benefit comes some disadvantages compared with more traditional businesses where it can be difficult to share ideas and keep everybody in synch with each other. So how are we all able to collaborate in an effective way?

For this post, I’m going to focus on the tools that we all use here. There are tons of good tools out there that empower teams such as ours to share ideas and resources so that we’re able to create our apps, given our constraints. Most of these tools work well for teams that work in the same setting but I wanted to focus on some of the aspects of them that relate to our decentralized, “virtual” office and our design-driven approach to software development. And most of these tools are suitable for small and large-sized teams, but again, I wanted to focus on how they help us in our particular environment.

Photoshop and Xcode

XcodePhotoshop

It’s pretty much a given that if you’re developing quality iPhone apps, the design is done with Photoshop and the programming is done in Xcode. In this post, I’m focusing on tools that go beyond the essentials but they’re worth a mention in passing, at least.

Backpack

Backpack

37signals’ Backpack has become an invaluable tool for our company. For each of our projects, we have one or more Backpack pages associated with it where we keep various lists and notes for the project. I say “project” versus “app” because we have several things in the works that affect more than one app (like social sharing, for instance).

The kinds of information that we store in Backpack are pretty varied. Here are some examples of what we keep in ours:

  • to-do lists of features for our upcoming app versions
  • bug lists
  • brainstormings
  • lists of design sessions for each app
  • product definitions, specifications, and notes
  • app mockups and new feature mockups

For our smaller apps, a single Backpack page for each suffices. But for our more substantial apps, we break things down into multiple pages to make things more manageable (for example, we currently have 16 pages for Camera+).

One of the things I like most about Backpack is its freeform nature and that you can easily adapt it to whichever way works best for you. There are many similar services that try to put too many constraints and restrictions on how you structure your information but with Backpack you have a lot of freedom in this regard. A Backpack page for one of our apps is very unlikely to look like one for another one of our apps and that’s a good thing… the teams are free to organize the information for each project in ways that best suit them and Backpack goes a long way in helping us do that.

Backpack

If you use Backpack, it’d serve you well to get acquainted with Textile, which is the markup language you can use in Backpack to format your entries. While entirely optional (that freeform thing), you can easily do things like bold/italicize text, create linked text, bulleted or numbered lists, and a lot more.

A very convenient feature of Backpack is its calendar. Since our team consists of people from all over the world, saying “the meeting’s at 1:30pm” is pretty useless. But so long as you format it properly, adding a Backpack calendar event adjusts it for everyone’s time zone.

The biggest drawback with Backpack is that it doesn’t work perfectly on iOS and this is definitely a detriment since I live on my iPhone. My main gripe is that I can’t reorder things so when I add a bunch of new stuff from my iPhone, I have to wait until I’m on my iMac to organize it all. There are a handful of iPhone apps for Backpack, but none of the ones I’ve tried were better than the Backpack website experience overall. The one that’s come closest so far is Pouch by Coffeeshopped. The developer seems to be responsive to feedback so I’m optimistic that it’ll suit my needs before long. It seems unlikely that 37signals will create their own native iPhone app for Backpack, but there’s a good chance that they either improve the iOS web experience or create a mobile web app as they recently did for Basecamp.

37signals has a bunch of other services and we’ve tried most of them, but none of them have been as effective for our particular business as Backpack has been for us. Most notable in this regard is their most popular service, Basecamp. I’ve tried Basecamp a few times and it feels like overkill to me. Many companies swear by it, but it seems to lack the simplicity and elegance that makes Backpack work so well for us. But your mileage may vary, of course.

The best way to sum-up Backpack’s effectiveness for tap tap tap is that out of all the apps and services I use throughout the day, I find myself spending most of my time in Backpack. I’m sure the gang at 37signals will want to shoot me for saying this, but Backpack is like Facebook for software development. :P

Pricing: free to $149/month (we use the $99/month “Starter Suite” plan)

iChat/Skype

SkypeiChat

When your team members aren’t all in the same location, good real-time communication tools are vital. It’s somewhat of a no-brainer to mention iChat for this since we’re all Mac people and it’s the standard chat app on the Mac. iChat is definitely our first choice for 1-on-1 text chats, group text chats, and audio chats because we can expect our team members to be available on it throughout the day.

But one thing that’s a bit odd is that its reliability when it comes to audio chats seems to be deteriorating as time goes on (I thought Internet speed/reliability was supposed to get better with time). So when we run into technical glitches, we usually switch to Skype. Skype also has a huge benefit for when someone’s Internet goes down because they can then join a Skype chat via their iPhone through the Skype app.

Skitch

Skitch

Skitch is a vital tool for us and our design-driven approach to software development. I’ve written about our somewhat unique usage of it in the past and instead of just rehashing it here, I’ll refer you to that post. If design is an important part of your software development methodology and you’re looking for ways to streamline your workflow, I’d advise you to check it out as our designer, Wolfgang, has a great screencast in it. It shows you how a team with members located all over the world can be very effective at interactively designing an app in real-time with the assistance of Skitch.

http://taptaptap.com/blog/the-design-session/

Pricing: free to $14.95/year for each user

Dropbox

Dropbox

The creators of Dropbox pitch it as “software that syncs your files online and across your computers”, which implies that it’s for a single user. But you can share folders with others and this is primarily how we use it.

For the most part, we use it to share design files for each of our apps. Once our designers create new Photoshop files, PNG files, etc for our apps, they put them into the folder that corresponds to those apps. Those folders are shared on their systems via Dropbox and the other members of the teams join those shared folders. So soon after the designers put the files in the shared folders, they automatically get uploaded to Dropbox and then downloaded to all the people who’ve joined those folders. It’s a very simple and transparent process.

Dropbox

But as simple as it can be, there are a few downsides… If someone moves a shared file to another folder, the file will move for everyone and if it was moved outside of the Dropbox folder hierarchy, then it’ll seem like it was deleted to everyone else. It’d be nice if the Dropbox folder was treated as a volume instead of a folder so that the system would default to copying files dragged out of it and this would eliminate the issue mentioned above.

Also, I’m mentioning this to avoid having you run into this issue that we did if you start using Dropbox for file sharing… originally, I had our tap tap tap shared folder in the top level of my Dropbox folder and I created subfolders for each app we were creating (I had other shared folders in the top level like the MacHeist shared folder so it made sense to do it this way). Since we didn’t have nearly as many people working on our projects when we started using Dropbox as we do now, I just shared out the whole tap tap tap folder with all of our team members. But as both the number of projects we’re working on and the number of people working on those projects has each grown to over 20 now, it started to make sense to share only the relevant folders that each team member was working on. The problem here is that you can only setup sharing on top-level folders and not subfolders. The “fix” is to move all the project folders to the top level and then share each folder only to the appropriate team members. It’s going to be a pain to do so and we’ve all been pretty lazy about doing this so it’s remained as it’s been still.

As far as pricing goes, Dropbox can be prohibitive if you have a large team as you need to pay a monthly fee for each member using it. It’d be great if Dropbox had group pricing like most of the other services that we use have.

Pricing: free to $199/year for each user (we use the $99/year “Pro 50” plan for most of our team members)

Versions/Beanstalk

BeanstalkVersions

Even if you’re a one-person outfit, using a source control system is a good practice. If you have more than one person working on the same codebase, it’s absolutely vital.

For those of you who aren’t familiar with the concept of source control, in a nutshell, it’s the management of changes made to the files that are used to create software. These files generally consist of the source code, art and sound resources, project files, etc. The source control system makes it easy for several people to work on the same files and keep all their changes synchronized. There’s a lot more to it than this and for those of you who’d like to learn more about it, Wikipedia is usually a good place to start:

http://en.wikipedia.org/wiki/Revision_control

At tap tap tap, we prefer that everyone working on apps does their own builds of the apps while they’re in development. If everyone’s doing their own builds, they can always be completely up-to-date with the latest revision of the app that they’re working on without having to depend on anybody but themselves. Empowerment is a great thing.

Of course this makes sense for the programmers on the projects to do so, but real-world project teams don’t just consist of programmers. We generally have several people working on each app and the technical levels of the team members vary wildly from extremely technical to almost technophobe.

Because we have relatively non-technical people building the apps they’re working on directly from the sources, it’s essential that we use a source control system that’s simple and intuitive to use. So even though Git has become the fashionable source control system these days, we’ve chosen to stay a bit “retro” and we’re sticking with Subversion (SVN).

The main reason that we’re sticking with SVN over Git isn’t so much that SVN is a lot easier to use than Git on its own, but rather the tool that our non-programmers use to access it. For this we use Versions by Sofa. Versions is a very slick, award-winning client app for SVN that runs on your Mac. It makes it possible for non-programmers like project managers, producers, designers, etc to easily do their own builds of the apps they’re working on with minimal fuss. Once the project has been setup for them, it’s a simple click to grab the latest version of the sources for the app and then a couple more clicks to build and run it on their iPhone. It doesn’t get much simpler.

Versions

Disclaimer: We’re friends with the Sofa gang (AKA “The Difficult Dutch”) and they gave us a bunch of freebie licenses when Versions was released. But even if they didn’t, we still would’ve paid for the app because it’s very high quality and has become a necessary part of our workflows.

Instead of using Versions, our programmers generally access SVN directly through Xcode or via the Terminal because they like being all hardcore.

Even though Git is highly in-vogue by the developer community these days, nobody’s been able to convince me that the benefits outweigh the overall benefits that we have with our current system (cue a bunch of “zOMG BRANCHING!!!11” comments by hardcore Git fanbois… I’ll simply refer them to my favorite Git parody). For the Git zealots working with us, they’re still able to use Git behind the scenes and then use a script to push the changes to our SVN repository. And everyone’s (relatively) happy.

Some of you may be quick to point out that similar client apps like Versions exist for Git, but they typically lack the polish and intuitiveness of Versions.

For SVN hosting, we use Beanstalk. Beanstalk has a great web UI and makes it a snap to administer our various projects and users. It’s worth noting that you can setup your own SVN server for free, but is it worth the hassle? Because of the number of projects we have going on, it’s hard to beat the simplicity of having a polished web interface to administer it all.

Beanstalk

Our system works for us an allows us to get our collective job done. And that’s what’s ultimately important.

Pricing:

  • Versions: €35.50 to €39 (approx $48-$53)/user, depending on how many licenses you purchase
  • Beanstalk: free to $200/month (we use the $50/month “Gold” plan)

In the end, this post may come off as some big ad for a bunch of apps and services. But that speaks for the strengths of the apps and services themselves and how they help us to make great software. I hope that this post helps you to improve the ways that you create software.



tap tap tap is a leading iPhone and iPad app developer and publisher.

We’ve been creating top-notch apps since the App Store first opened. Our apps are used by literally tens of millions of people in all corners of the world. A few of our favorite and most popular apps we’ve created are:


Who linked to this

17 comments

  1. Jean-Paul Florencio
    11:39am, February 18, 2011

    Once you have your app on the App Store, there is one more tool you need, a business analytics solution to easily and efficiently manage your Mac, iPhone, iPad and iPod Touch app sales. AppStar is one of them.

  2. Erik
    11:51am, February 18, 2011

    I’m really enjoying these “looks behind the curtain” of taptaptap. Keep them coming!

  3. Rod
    11:51am, February 18, 2011

    If you’d like a Mac app for Backpack or want access your content offline on a big screen then check out Packrat at http://www.infinitenil.com/packrat. It’s also on the Mac App Store.

  4. Andrew
    2:58pm, February 18, 2011

    Thanks for the info. We’re always looking for new ways to be more efficient here at my job.

  5. Fred
    8:54pm, February 18, 2011

    Just a note on your Dropbox sharing - you don’t need to move your folders to the top level to share them, the limitation Dropbox has is that you can’t share a folder inside a shared folder - so you need to stop sharing the top level folder and then you’ll be able to share individual projects. Also, once a folder is shared if other members rename or move their copy of the shared folder that only affects the name of the shared folder for them (as long as it remains within Dropbox, of course).

  6. Vladimir Minakov
    2:19am, February 19, 2011

    http://www.dropbox.com/teams

  7. Yuan Tao
    8:53pm, February 19, 2011

    Thanks for sharing your valuable experience with developers. I am only curious to know how do you manage to assemble a team from all over the world?

  8. Matthew Guay
    1:16pm, February 21, 2011

    Excited to see Backpack getting mentioned … It’s my favorite 37signals app, and is usually overlooked by most.

  9. Ted Kao
    3:03pm, February 21, 2011

    Thanks for the info! We are looking to drop our physical office soon and this clearly helps us think through some potentially helpful products that will add up to less than the cost of our rent.

  10. Chadwick Wood
    8:44pm, February 24, 2011

    Thanks for the mention of Pouch! I’m working on version 2.0 right now, which is going to add support for Backpack’s Calendar, Journal, and Reminders, so hopefully you’ll get even more use out of it then (and respecting Note date display settings is on my to-do list as well).

  11. Gary Moss
    4:39pm, March 27, 2011

    I have an ipad app I’d like to discuss with a developer. Where do I start?
    Please email or call me at 805-446-6677.

    Thank you,
    Gary Moss

  12. agus
    10:42pm, January 11, 2012

    Can you know, by using it in your app, from where did your app users came from?

  13. iPhone Apps Developers from India Blog
    12:15am, April 6, 2012

    The post about iphone apps is more helpful for the developers. Thanks for share this valuable post.

  14. Ryan McCallahan
    11:27pm, June 11, 2012

    I haven’t used Backpack but have heard a lot about it. Think I need to give it a try.

  15. Olivier Beaujean
    12:18am, August 16, 2012

    Very good post, I’m also using BackPack a lot, but just realized 37signals decided to retire it and won’t let new signups for the moment. Did you come across good alternatives to Backpack?

  16. Hassan Barber
    3:43am, October 1, 2012

    Hi, i have been encountering this error on xcode, does someone experiencing this also?

  17. Storage Dayton
    8:13pm, February 11, 2013

    I am really enjoying the theme/design of your website.
    Do you ever run into any browser compatibility problems?

    A number of my blog readers have complained about my website not operating correctly in Explorer but looks
    great in Opera. Do you have any ideas to help fix this problem?


the comments are now closed