Jason Schroeder is the developer of the recent App of the Week winner, Chungaboo Language Series (formerly known as Lingo Slingo). Jason was hired by Chungaboo, a publishing company that specializes in interactive educational content, and shares tips for working on a client project.

There are more than 150,000 registered Corona developers, and I’d imagine that most of us are working on projects we conceived ourselves. I started with Corona in early 2011, and while I do have a few personal projects simmering, the three apps I’ve published in the last year were all developed for clients. Making oneself available as a developer-for-hire is something all Corona developers should consider, as the relative ease and speed of Corona can give you a competitive edge when meeting potential clients.

While being a “hired gun” might sound less engaging than working on something you dream up yourself, I have found the opposite to be true: my client-based projects have been creatively challenging, gave me an incentive to expand my development skills, and are a source of great personal pride – not to mention a welcome source of income! But finding clients to partner with can be difficult, and partnering with the wrong people can be more trouble than it’s worth. Here are some tips on finding and working with clients:

Leverage Existing Relationships: I have a “day job” at an art gallery, and my first paid project was to develop an app for an artist my gallery represents. This made finding my first client easy, and we already had a relationship heading into the project. Look for opportunities to combine your offline interests with your development work.

Build a Web Presence: Add yourself to the Corona Studio Directory. Set up a webpage with a custom domain name. Make a Facebook page and Twitter account for your development work. One of my clients who is now a repeat customer made first contact by linking to my website through the Studio Directory. You’d be surprised how quickly potential clients will find you once you’re out there!

Respect Your Limitations: Don’t promise your clients anything you can’t deliver 110%. Be honest about your abilities and be prepared to turn down work if you’re not the absolute best person for the job – think “quality over quantity.” One happy client will generate more long-term success than three unhappy ones. Find out exactly what your client wants and make sure that:

1. Corona is a suitable platform, and 

2. You are able to build it quickly and effectively. You’re not being paid to learn on the job!

And here are some tools that will help your collaboration succeed, especially if your client is in a different city/state/country:

Basecamp et al (http://www.basecamp.com): If you can afford it, Basecamp is probably the best Project Management solution out there. Fortunately, there are loads of free and/or open-source alternatives. Regardless, once you’ve settled on a management tool, I strongly suggest you commit to it 100%. Resist the urge to communicate via email with team members – if you communicate exclusively through your management platform, it helps keep all your project info archived in one place, and reduces miscommunication. I personally use a self-hosted platform called Collabtive (http://collabtive.o-dyn.de) to manage my client projects. It’s not as robust as Basecamp, but for me it works well – and it’s free!

TestFlight (http://www.testflightapp.com): If you develop for iOS and don’t have a TestFlight account yet, stop reading and go open one now. Seriously. It’s a free, invaluable tool for sending out test builds to your team. Among other things, TestFlight streamlines UDID collection and allows you to distribute new builds with a single click. (You’ll need to repackage your .app binaries as .ipa files to send them out over TestFlight. Fortunately, Corona staffer Danny Glover created a great little utility that will automate that step. You can download it at http://www.jasonschroeder.com/app2ipa.zip.)

Obviously this is just the tip of the iceberg. If you have tips or tools that I neglected to mention in this post, please add them to the comments and/or hit me up at @schroederapps on Twitter. Thanks for reading!

-Jason Schroeder

  1. Great words, although they apply to any kind of app development freelancing. Only last year I was the solo developer on 12 client Corona games, and 3 this year so far (I don’t have a day job, I live solely of freelancing :).

    • Hi Alfred – thanks for the comment! I’m totally jealous that you’re self-sufficient based on your work as a developer. If things keep picking up, I might make the jump myself eventually. For now, though, steady reliable income and health insurance are too good to give up. :)

  2. Jason,

    Thanks for sharing your experience. How do you handle source code ownership for each project, as this affects the ability to reuse code developed for prior clients on new projects ?

    Also what compensation model has worked best for you ? Time/Material , Rev share, hybrid ?

    thanks,
    Ken

    • Hi Ken,

      Thanks for commenting! To answer your questions:

      I’m no lawyer, but I state in my standard contract that “Copyright to the app is owned by Client. Developer agrees to provide a copy of all source code and associated files to Client upon completion of the project as a digital download. These files shall be considered Client’s property, and can be modified or re-used as Client sees fit.” I don’t get too deep into whether or not I can re-use code in future projects, but I would personally never re-use substantial blocks of code. (I have a basic code base that I might copy and paste from for simple things like touch handling of display objects, but I tend to approach each app as a unique project. I don’t work from templates.)

      As for billing, I go with a very simple flat-rate system. I calculate my fee based on an estimated number of hours, multiplied by my hourly rate. 50% deposit to start work, then monthly payments on the balance (depending on the length of the project). I try to explain how I arrive at my estimates in the proposal letter – it’s not an exact science, but I strive to keep it fair and so far my clients seem to be comfortable with this system. If the project takes longer than I estimated, the client pays nothing extra (and I learn a valuable lesson). Conversely, if I manage to get it done faster than I estimated (that hasn’t happened yet – ha!), then my hourly rate effectively goes up. This allows us to get the “money talk” completely out of the way before we start working, helps the client know exactly what his or her costs will be, and gives me an incentive to work quickly. However, I explicitly define the scope of the project in my contract, so if the client wants to add new features after we’ve begun, I am able to increase my fee appropriately.

      I personally shy away from revenue shares, as I’d rather have a guaranteed income than gamble on an app’s success. If one of my client projects ever becomes a million-seller, I’m sure I’ll regret that decision. :)

      Thanks again for commenting – I hope this helps!

  3. I have a question though, if you develop a game/app for a client how do they go about uploading it to the app store? Does your client have to end up buying corona sdk so they can do the final build then upload that, or do your clients setup up their provisioning profiles and certs. then send you those files? For me i’m seeing its becoming a bit of a hassle to develop using corona for clients as most clients expect us to deliver xcode to them so its easier and less hassle for them to take over when uploading to app store.

    • I also have the same question as Jacques – how do you go about ‘delivering’ your app to the client? Do you give them the compiled app file or get their provisioning profiles, etc.?

      Nick

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>