A few thoughts after making my first few bucks from apps

<%= @topic_view.topic.title %>
<%= @topic_view.topic.average_rating %> <%= @topic_view.topic.posts.count { |p| !!p.custom_fields['rating'] } %>

Thanks in a large part to what I’ve learned on FCC, I’ve been making and publishing a few apps on the App Store and Google Play Store for the past few months and I wanted to share my experiences with the community as I’m sure others may be curious about what being a new hobbyist app developer can be like.

1st -There is a huge misconception among most people that publishing apps will make you wealthy. Not that I really bought into this, but so many times I’ve heard this from well-meaning but misinformed acquaintances, friends, and family members. Initially I was concerned that I wouldn’t make back my developer fees ($100.00 per year Apple, and $25.00 one time fee Google), but minus the upfront costs and the 30% cut that both stores take I’m now optimistic that I can hopefully start turning a profit before shelling out another $100.00…

2nd -From my experience nobody will buy an app outright. The first app I made was with the pay model and I didn’t sell a single copy for over the first month. Not much really prepares you for the disappointment you may be met with after spending months on a project only to find nobody will use it. Over my Christmas break I re-wrote the app to be free with in-app purchases. Thankfully, people are much more inclined to try a free app and then pay for it if they find it useful than buying an app without using it first. I plan on using this model for all apps I make in the future. I’m personally opposed to using ad monetization for several reasons. For example, you need tens of thousands of installs and daily use to make more than a few cents a day on ads, and I have a bitter Adsense taste after getting a lifetime ban from my first website for invalid clicks which I still don’t entirely understand (that’s a completely different topic though).

3rd -I have zero regrets about learning programming and publishing apps at the same time. My first app was the first project I made using Bootstrap and I wanted to solve a real problem I had while coaching track, so it’s pretty cool to now have a custom app that I can use and other coaches can benefit from too. Each additional project I did was really to learn something new while trying to make something useful, whether it was getting exposure to C# / Unity, learning React, or learning and implementing some other technology there’s just something awesome about making something that others can use while going through the process of learning yourself.

4th -There’s a lot of non-programming stuff you have to do to publish apps, and you may or may not have fun doing it. For example, writing support documentation, answering user questions, making videos, making a gazillion icons, creating correct dimension screenshots, keyword research (I should have done that earlier…), marketing -still haven’t done that probably should, and many more. I was very surprising how little time was spent actually writing code compared to the time I spent thinking about design issues and doing tons of stuff besides just writing code.

5th -It’s awesome that we can make apps just using HTML, JavaScript, and Cordova or Phonegap. It can also be challenging to have to depend on plugins because as of now I have no clue how to integrate native code for things that would probably be incredibly simple for a native developer. There’s also a learning curve for using Cordova and all the plugins that you’ll need.

6th -As a hobbyist developer it can be a bit lonely (I’m a middle school teacher and don’t have any friends who code). There are great communities online for developers to solve technical questions. There are also a lot of indie game dev forums and stuff, but if you’re mainly writing utility type apps and have questions about what to expect regarding download expectations, or anything pertaining to possible income type stuff, it seems like the internet is a ghost town. I understand why. With a gazillion apps out there and tons of copycat apps people are rightfully tight-lipped when it comes to sharing because being helpful could possibly really hurt one’s livelihood.

Well, I wanted to share my thoughts and journey because of point six, and I know there has to be other FreeCodeCamp users interested in app development also. I thought about posting this under “Getting a Developer Job” but I didn’t want to give anyone false hope. Regardless, you’re not alone in this journey and I wish you the best of luck.

If you’d like to see my apps go to www.squadtiming.com (I should have used a different domain, but I thought my first app was going to sell a million copies…needless to say I didn’t buy domains for my last three apps lol).

5 Likes

Thank for the write-up.

What is your tech stack?
Or do you experiment with something a bit different for each app you have developed?

Since you are not developing native-native with Java/Swift etc…
Are you focusing purely on building a mobile application?
or do you plan, build, and release a web application and submit a mobile application to the app stores?

What framework/library do you use to develop mobile apps?

Thanks camelcamper and Gilbert1391 for the questions.

Regarding my stack, or technologies used-
Frontend:
JS
jQuery & jQuery Mobile
Bootstrap [or sometimes just CSS using Grid & Flexbox]
CSS [I haven’t tried SASS / LESS yet]
*React [My last app was built using this, but either due to my ignorance, or limitations of the technology –probably not, I couldn’t build the project while using Cordova plugins…So I was left with a working app that couldn’t do in app purchases or detect the type of device…at that point I rebuilt the app using vanilla JS. I had just finished the React course on FCC and wanted to build something right away so it was a good learning experience, but I will NEVER build an app using React again, I may at some point give React Native a try though.]

“Backend” -I hesitate to even call it that
SQLite [SQlite is very similar to MySQL, but different enough to make you pull out your hair occasionally, SQLite is also the only way to save a DB locally on Android and iOS as far as I’m aware.]

Regarding making the apps available online-
During development I do all the initial testing with Chrome and Safari. Once SQLite is added it breaks things and I have to switch to testing on a device or emulator (although as I write this I think there may be workarounds for this…) Anyway, my preference is to not put the apps online for a few reasons. First, it’s very hard to monetize things that are only online unless you have lots of users and lots of ads in my opinion, maybe I’m wrong, but that’s just my gut feeling. Second, it can be a bit expensive to annually pay for domains and web hosting fees (I lose about $120.00 every year on a website that I use for my students currently, the idea of compounding that with each app I make isn’t very appealing to me). Lastly, the nice thing about apps on iOS and Android is they can work offline, users typically have your app available in their pocket, you can take advantage of things like GPS, Cameras, etc., and unless you setup a webserver an app for 1 person or a million people can scale without costing you an extra penny in theory.

Originally I made Squad Timing for the web. It’s still online in a very basic non-updated form for now at www.sluap.com. The purpose was to learn Node.js, and I found that to even use Node.js on a website most web hosts either need you to have a VPS or use AWS, which then led me to learning how to setup and host a site using Linux (CentOS). On the backend I used MySQL because it was familiar to me, although most people prefer to use MongoDB with Node.

I read a great tip online once about making apps, and the advice was to start small and make a minimally viable product, then if you find people really like it and start using it you can then add all the bells and whistles that you’d like. I keep a running list of possible features for each app that I’ve made that I’d like to add, but I probably won’t add them unless there is big demand by actual paying users. A feature I’d love to add to my app Squad Timing is to sync the client’s DB with an online DB where users can then view individual results and meet lineups online. If I do that, it would be monetized through an in app subscription fee because otherwise I’d be paying for the backend website out of pocket and if it were by chance to scale so would my expenses without matching revenue.

It’s been fun to wade into all these technologies. Sometimes I feel like the jack of all trades and master of none kind of person. Other times I think it would be great to really dive in deep and fully conquer a language or framework (if that’s truly possible). For now I’m just really excited to make stuff that just works, and hopefully learn a little more each day than I forget.

This seems like some really good advice, cheers

Even though you said you wouldn’t use React again, I recommend having a look at React Native. It builds into a literal native application while still using the languages you’re used to HTML/CSS/JS.

1 Like

Hi there…I’ve read your post and checked out your website. I must say…you really do nice work. I would love to speak you regarding an app development project. Let me know if you have some free time. Thanks.