Hi, I’m Sam.

I make this app called Cheddar. Find out more about me.

I also like to make stuff, play music, and write on technology.

Web App vs Native App

Posted on

This is the age old question for app developers. To state my bias, I make a living creating mostly native app and the occasional web app, but I greatly prefer working on native apps. I'll be referring to iOS devices for all of this, but it applies to the Mac (sorta, see the end), Android, and almost any other platform.

We Can All Agree

We can all agree that native apps have a much better experience than web apps, especially on slower devices (like the iPhone). Pull up your contacts in your iPhone and flick through them really fast. See how smooth that was. Now pull up any website and do the same. Not so smooth. Checkout Cover Flow in the iPod app. Amazing, right? Show me a website that does that that smooth. You can't.

The reason that native apps greatly out perform web apps is that there is a lot more processing power used to render website than it is to render native apps because they are... well, native. Websites need to run through some sort of engine, in this case WebKit, to convert them to something that can be used by the device.

You don't see games like Angry Birds or apps like Twitter for iPhone in your browser, because they simply can't make something that elegant and preformant. Partly due to some of the technologies not being available to web developers and partly due to browsers not being able to handle that much stuff efficiently.

So let's all agree that native apps are ideal over web apps. I could go on and on about this, but I think you get the idea. (If you don't agree, I think you're wrong and would wonder why would would ever use or want to make native apps. You should probably stop reading this and point your beloved browser elsewhere. Just kidding, but seriously.)

Why?

The main question I have for anyone asking this question is "Why do you want to make a web app over a native app?" There are usually two answers that people give me:

  1. If we make a web app, we won't have to make it for each platform.
  2. If we make a web app, we will be able to develop it faster.

Notice that it is never "If we make a web app, it will be a better user experience for the user." because that is never the case. You are trading user experience for quicker development time and platform flexibility. For some, this is ideal. In that case, make a web app.

In my experience, 90% of the time you want the best user experience possible. I want to make my users happy. I think providing them with the best user experience is the best way to do that. (If you are trying to make money of your app, more happiness = more dollars.)

Conclusion

I would rather trade development time and platform flexibility for a better user experience because I am passionate about making the best apps possible for my users.

Disclaimer

I wrote this in the context of mobile development. I think this still applies to the desktop, but it is a very different space. Most users don't buy apps or even understand that concept on the desktop. Web apps are great for most cases. Obviously you can't edit music or video (effectively) in a browser. Stuff like that will probably always be a "native app."

Also, there are lots of other pros and cons for both that I could have went into, but I decided to keep this short. With any other pros added to web apps, my conclusion still stands.

Hello Internet: Throwback Mountian Dew

Posted on

Throwback Mountian Dew is the best beverage ever created.

Thoughts On Writing Code For Money

Posted on

So writing code is a very intimate thing. You spend hours and hours thinking very hard about a problem and then finally solve it. Once you do, you work out all of the bugs and such. After tons of hard work, you finally have something you're proud of that can be released or used with other code someone else has worked very hard one.

This is a special thing to me. I really enjoy this process. Everything about it is great. The problem solving, the perfecting, the design, everything.

I don't know how I feel about selling this. I mean, I just labored away on this code and I'm really proud of it. I understand that I can sell the rights to someone to use, which is fine. It just feels wrong to have worked on something for a really long time and then someone else owns it and I'm not allowed to do anything with something that I made. I know that the money is the trade off. It just feels like I made a baby then sold that baby.

I know that this is how I make money, but I don't like it. This is why I started open sourcing as much as I can so I, and the entire community, can benefit from my hard work.

I don't really have a conclusion, just that I'm going to try to avoid it as much as possible. There's a lot of inner struggle with all of this. Just thought I'd share my two cents.

Update May 20, 2012: The thing that bothers me is writing code and selling you the code so you can sell a product. Writing code for a product and then selling that is awesome. I'm not totally against it. It's just weird. Whatever.