How An App Is Made, Part 2

Have you ever wondered how apps get made? In Part 2 of our exclusive series, we’re going to learn what it takes to build an app, exactly how it’s done, and how to make the hard decisions.

Jack Freeman, Chief Technology OfficerCrono Inc.

When last we left Team Crono, they’d acquired angel investment funding and were deep into writing the code that would make their smart, stylish iPad email app work.

In Part 2 of our exclusive series following an app’s development from beginning to end, we’ll dive into the nuts and bolts of how an app is crafted. But first, we have some catching up to do.

Rebirth

Just a few weeks ago, Crono Inc. made a surprise announcement: they’d completely redesigned the app and renamed it, too. It’s now called MailDeck, and at first glance it may not resemble Crono‘s original concept art, but the guys behind MailDeck — CEO Stephen Weigel, CTO/Head Developer Jack Freeman, and Head of Legal Andrew Rothberg — assure their fans that there’s some strong motives behind the change.

“We realized that our old designs were too complex, so we decided to take a step back and rethink some things,” says Chief Technology Officer Jack Freeman, who’s handling the bulk of writing the code that makes MailDeck work. “We needed to simplify the overall design while still keeping advanced features for power users. And I must say, we’re very happy with where we’ve ended up.”

Full-sized screenshots of MailDeck are at the end of this article.

That “rethinking” of the app is intended to make the app look and function better, which means fewer taps between functions, more intuitive interactions, and streamlined aesthetics. But the guys are quick to point out that Crono‘s most exciting and appealing features are still there — only now they’ll be even easier to use.

On a scale of “fresh coat of paint” to “completely rewritten app,” Freeman says the transformation from Crono to MailDeck is a mixed bag. “There are UI components that we salvaged and tweaked, but others we had to completely rewrite.” But most of the changes are on the user’s end of things. The technology that makes MailDeck work, the “backend,” is mostly independent of the user interface. “The backend consists of networking and database code, so fortunately it only needed minor adjustments. If it were a car, we’ve ripped out the seats and removed the paint, while leaving the engine and chassis intact.”

It’s been a long haul, but Freeman and his coworkers are nearing the light at the end of the tunnel. “We’re approaching our internal beta deadline where we’ll be testing core functionality, fixing any bugs we find, and polishing pixels. After that process is complete, we’ll submit it to Apple for approval.” This means that they’re still on target to hit their October release window. (Part 3 of this series will examine the App Store submission process.)

Under Construction

I think everyone has a cursory understanding of most of what’s involved in crafting an app. It’s the same basic process that musicians use when writing music, writers use to write a book, and filmmakers use to make a movie. There’s brainstorming, planning/designing, creating (in this case, coding), and editing (aka, testing & tweaking).

It’s that third one that most people regard as mysterious and intimidating. Coding is a complex undertaking, make no mistake. But sooner or later, we all can’t help wondering… Just how hard is it to make an app?

“I think it really depends on the scope of the app,” says Freeman. “To create anything worthwhile, it does take a lot of patience and time. People often have the misconception that it’s a ‘small’ app that runs on a ‘small’ device, so it must require a ‘small’ amount of work. But the truth is that most [mobile] apps today are full-blown pieces of software, much like you’d find on your computer.”

I asked what Freeman meant, in concrete terms. He explains, “[Mobile apps] are made up of hundreds of thousands of lines of code, and require hundreds if not thousands of man-hours to build. MailDeck is a very complex piece of software and has required the efforts of several veteran engineers and designers to make a reality. Almost everything has been written from scratch using frameworks provided by the iOS SDK.”

Full-sized screenshots of MailDeck are at the end of this article.

So, yeah. It’s pretty darn hard. Just as hard as you’d imagine, if not harder. Apple provides a powerful program called Xcode, for constructing an iOS app from scratch. Xcode works its programming magic by writing apps in a computer language called Objective-C. (Stay with me now, no wandering off.) While the majority of developers write their apps in Xcode/Objective-C, there are other ways to go about it. iOS apps can also be written in C++, RubyMotion, AppCode, MonoTouch, Corona, and many more. And that doesn’t even take into account stuff like game engines, such as Unity and Unreal.

But the majority of developers go with Xcode, and Crono Inc. confirmed that they used Xcode as well to write all of MailDeck‘s code. Since I had the attention of Crono’s lead developer, I asked if a programmer of his aptitude and training ever gets bored writing code, or if it’s fun for him.

“For the most part, I do find coding and testing enjoyable,” Freeman confirmed. “Like any job, there are chores involved and not all code is exciting. What is exciting is facing a problem without a known solution; the gratification when your code works and the problem is solved is well worth the endless hours and hours it takes, sitting behind the keyboard. Coding, like other professions, has its craftsmen, and sometimes you get to craft something truly elegant that you can be proud of. And that never gets old.”

I’m not a programmer, but I’ve written stories and novels, so I recognize a familiar pattern in this — a pattern I think all creatives follow. It’s about identifying what you want your creation to say or do, and then finding the best, most effective way make it do that. And when you find the solution and build it, if all goes according to plan, there’s that moment when you just nail it. And that moment is fulfilling in ways you can feel all the way down to your bones.

Of course, it’s rarely as simple as that. Just like a story might not come across the way the writer intended, or a piece of music just doesn’t sound quite right, building an app is full of surprises and snafus that require serious problem-solving skills to fix. Don’t assume that because this is Crono Inc.’s first app, this team is comprised of noobs.

“Our production team consists of app industry veterans,” says Freeman, “so there haven’t been too many surprises.” And they’ve put all those “hundreds or thousands” of man-hours to good use, since MailDeck is comprised of far more building blocks than you’d imagine. “Our Microsoft Exchange framework is completely proprietary, while our IMAP engine, on the other hand, has an open source core.” (“IMAP” is a protocol for accessing email, similar to how “http” and “ftp” are protocols for accessing the Web.) Their IMAP engine may be open source, but Freeman says they still had to build a lot of new code atop the existing code to make the engine fit their needs.

If that wasn’t enough, here’s evidence of just how complex an undertaking MailDeck was. Team Crono built their own proprietary toolset to assist in assembling the app. In other words, they built an internal app to help them build their commercial app — MailDeck. Think of it like a woodworker’s tool belt: without the belt, the craftsman can still get to his tools; but the belt puts those tools in a much more convenient place. It simplifies the process.

Freeman says Crono’s “tool belt,” if you will, is a repository of “all kinds of useful, reusable, and portable code.” Those codes include: networking, animations, screen view loading and management, UI components, in-app purchases, threading, version management, encryption, and other various wrappers and categories. They even gave this toolkit a name. “We call it ‘The Wheel,’ because… Why keep reinventing it?”

Full-sized screenshots of MailDeck are at the end of this article.

That spirit of reinvention and flexibility has, quite obviously, infused every part of MailDeck‘s construction. That disappointing Kickstarter campaign and the app’s recent makeover are just two examples of how Freeman and his partners have had to adapt to unexpected challenges. But they seem to take it all in stride. “In my opinion,” says Freeman, “if you don’t allow for flexibility in a business plan, you’re setting yourself up for failure. Things change as time progresses, and you need to be able to adapt and decide that something doesn’t work.”

He continues, “Our biggest setback was deciding to redesign the app several months into development. We knew it was going to squeeze our budget and timeline, but we also knew it had to be done. Our goal from the get-go was to change email on the iPad, and settling for good enough wasn’t going to make that happen.”

Sound familiar? Being unafraid to scrap everything, start over, and gamble the farm on so big a risk was one philosophy that made Steve Jobs a success.

Dollars and Sense

Aside from skill, there’s another important component to every app’s creation: the budget.

A strong budget is no guarantor of success, but it certainly helps. Because the costs involved are nothing to sneeze at. Freeman tells me that most of MailDeck‘s budget has gone towards team member labor, considering all those hours required to create it. But they found a clever way to save big: they don’t use a corporate office space. “Currently, we all work from home and meet regularly at coffee shops and other shared working spaces,” he says. They also hold frequent conversations via phone and chat. “In doing this, we eliminate our overhead, allowing us to stretch our investment a little further.”

MailDeck‘s next biggest expense is marketing. Freeman says that they’ve invested in standard promotional items like business cards and t-shirts, as well as ads, website development, and a promo video. Other costs incurred go toward the company’s technology infrastructure, which includes things like cloud servers, a build server, push notifications, and code storage services like Github. “Compared to labor and marketing, these expenses are minimal,” Freeman adds.

And then there’s Apple’s standard developer fee. Apple doesn’t charge anything to download the Xcode software and write your own app, but if you want to test your app on an iPhone or iPad, and if you want to put your app up for sale in the App Store, you have to enroll in Apple’s iOS Developer Program. Enrolling gives you access to stuff like early beta downloads of new versions of iOS and Xcode, as well as Apple’s online developer library, which is filled with tools and tutorials.

The iOS Developer Program costs $99 a year.

In Part 3 of this series, we’ll take an up-close look at the App Store’s submission and approval process.