Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

P7S1

macrumors newbie
Original poster
Aug 23, 2019
4
0
Columbus Ohio
Hey my name is Atemnkeng Fontem. I'm currently a senior at a high school in Westerville, Ohio and I just finished finished creating my first iOS App called GradePoint, heres my story.

Growing up I've always been interested in computers and computer science. In middle school used to do those little code.org challenges with ease. My first real computer science class was AP Computer Science Principles my sophomore year in high school. I fell in love with the class and learned a lot with it, however the class did not have much programming in it. The next computer science class I took was in AP Computer science A, which was all coding (Java). I did very well in the class and my passion for coding grew. I even started my first real project over Winter break made 100% in Java. The project was like a Geometry Dash clone, and I learned a lot from that one project. Now in Summer 2019, I was so happy I got relieved of all the stress school caused me. The first week of summer I worked my ass of at my local JCPenney and bought myself my first MacBook Pro. I took a Swift course on Udemy and starting working. I needed to find an app idea that solves problems. I knew me and other students hated how we could only see our GPA's at the end of each grading period, so I made a GPA calculator. The GPA Calculator was pretty easy to build and after that I needed another challenge. I remembered how I would always forget when assignments were due in school. So the next feature I added was a way to track assignments, set notifications on those assignments, and a calendar to view assignment due dates and thus GradePoint was born. The development phase of GradePoint took a little under a month, and I released the app 2 days ago. So far, I promoted the app through social media (Instagram & Snapchat) and my fellow students LOVED it. They loved it so much that I had many people share the app on their social media as well. The very next day of school I had random people I've never spoke to before walk up to me and thank me for the app. As of right now, GradePoint has 30+ ratings, all 5 stars.



The moral of this story is that the true driving force for me creating this app is for the love of computers. I wanted to inspire others to do whatever they love as well. I was not the smartest student, or have the highest grades, or have the highest test scores. I'm just a regular guy who just followed my passions and I'm already starting to make a positive impact on my community.

Link to the listing to the appstore: https://apps.apple.com/us/app/id1477275391
 
Congratulations, man.

I'm a computer science student at uni; I can really advice continuing down the path. Seems you're already doing really well with passion, ability to learn on your own and developing practical skills. Very happy for your success.

I can also advice digging into more languages, especially ones with different paradigms. Haskel is a good functional programming language to look at. I can also recommend looking at and understanding (but not necessarily going very deep with) one of the LISP dialects. LISP is fascinating though I wouldn't recommend trying to do something large scale with it, though learning the way it uses a basic list type to basically do everything is cool.

LeetCode is also a great website for coding challenges of various difficulties. You can pick your own type of challenge and whichever language you want to complete a given challenge in; Java, Swift, anything. Then when you complete a challenge you get told how fast you code executed compared to other solutions in the same language, and how much memory it used. Great fun.

If you need help with anything, or would just like to chat programming you're also always welcome to send me a private message on here. - Sometimes I go so long without checking my regular notifications that they become unmanageable and I just forget all the threads, but always see PMs.

How did you like coding with Swift and (presumably) Xcode, compared to your experiences with Java?

What field of computing most interest you? Programming languages?
I used to think I'd do my masters program in cryptography, but now I'm looking at programming languages and a side in algorithms mostly. But still time to settle in; Not super far along yet. For the first course on programming languages though, we wrote our own interpreter and compiler for a subset of the Scala language, and it was all really cool and very insightful in terms of understanding how the code you write is executed. Soon I'll have a course digging even deeper having us write a bunch of assembly, exploring buffer over/underflows and such. While I've long understood the basics of compiling and machine instructions, actually working with the instructions on a low level really puts the understanding on another level.

Great luck to you in future endeavours. And enjoy the success of your app!
 
Keep up the good workman. Your hard work will definitely pay off and anyways your success is already evident.
 
Congratulations, man.

I'm a computer science student at uni; I can really advice continuing down the path. Seems you're already doing really well with passion, ability to learn on your own and developing practical skills. Very happy for your success.

I can also advice digging into more languages, especially ones with different paradigms. Haskel is a good functional programming language to look at. I can also recommend looking at and understanding (but not necessarily going very deep with) one of the LISP dialects. LISP is fascinating though I wouldn't recommend trying to do something large scale with it, though learning the way it uses a basic list type to basically do everything is cool.

LeetCode is also a great website for coding challenges of various difficulties. You can pick your own type of challenge and whichever language you want to complete a given challenge in; Java, Swift, anything. Then when you complete a challenge you get told how fast you code executed compared to other solutions in the same language, and how much memory it used. Great fun.

If you need help with anything, or would just like to chat programming you're also always welcome to send me a private message on here. - Sometimes I go so long without checking my regular notifications that they become unmanageable and I just forget all the threads, but always see PMs.

How did you like coding with Swift and (presumably) Xcode, compared to your experiences with Java?

What field of computing most interest you? Programming languages?
I used to think I'd do my masters program in cryptography, but now I'm looking at programming languages and a side in algorithms mostly. But still time to settle in; Not super far along yet. For the first course on programming languages though, we wrote our own interpreter and compiler for a subset of the Scala language, and it was all really cool and very insightful in terms of understanding how the code you write is executed. Soon I'll have a course digging even deeper having us write a bunch of assembly, exploring buffer over/underflows and such. While I've long understood the basics of compiling and machine instructions, actually working with the instructions on a low level really puts the understanding on another level.

Great luck to you in future endeavours. And enjoy the success of your app!

Thanks for your feedback! I've been interested in making an android version of my app. How would I be able to port my app from iOS to Android? How would I made the UX the same while respecting each platform's design principles
 
Thanks for your feedback! I've been interested in making an android version of my app. How would I be able to port my app from iOS to Android? How would I made the UX the same while respecting each platform's design principles

That's a tough question, man.

OK; So, first off. How did you code this? Is the UI clearly separated from the model (backend code), or are they closely intertwined? The more separation you have of front-end UI and backend code the easier porting will be.

2) Would you like to be able to keep your Swift code for the Android release?
It is possible to compile Swift for Android. There are both upsides and downsides to this approach though. The upside is that you can keep the work you've already done, which is great! (although things that rely on iOS frameworks won't work of course). The downside though is that the toolchain for Swift on Android isn't super developed yet, and there aren't super many places to get help and resources for it.
Unless the codebase is too big, I'd advice starting a new project in Android Studio in Java instead. Android apps are typically Java-based, and whilst it generally doesn't perform as well as Swift since it runs on a JVM, Android users are used to a lot of apps being Java, and it's not like your app will need massive performance to work well.

For UI I am guessing you're using a lot of system elements from iOS in your iOS app, like UILabel, UIButton, etc. Anything you haven't spent time making yourself, I'd advice using a similar built-in UI element for Android rather than trying to emulate the look in your iOS app. Though any aspects of the native UI element that can be customised in the API, strive for uniformity. For instance, maybe adjust typography and tint colours to be consistent between the two experiences, but allow navigation views to use different arrow types native to the system. Even big apps like Facebook utilises system UI elements without customising aside from color at times.
Figure out what gives your app a distinct personality on the platform it already exists on, and recreate that personality, letting everything else blend into the environment it's in.
Maybe flick through the design guidelines for Android, and refer to it if in doubt
https://developer.android.com/design
But never blindly refer to it. It might say to do things a certain way that makes sense 99% of the time. But if it doesn't feel right in your app, feel free to ignore it. Experiment with UI ideas. Maybe you find out you want to go back to your iOS app, and replace the image of a UIButton with something custom that you can then use across versions to get more of a sense of them being the same app.

It's not really relevant to my situation, but I'm downloading GradePoint now to perhaps give more specific feedback going forward if you want.

And I'd planned to post now and come back later, but it downloaded quick and I poked around so I'll just continue ranting...

It seems your app already has a rather strong identity as it is; Especially the pull-up screen for adding classes and presentation of GPA average.
You've also got a clear tint color dominating the UI, which is good. This will make the transition to Android easier, in that your app has characteristics it can be recognised by.
It doesn't matter if it looks different on Android, as long as it's recognisable, and I think you'll be able to tackle that nicely. While it's not a hugely complex app you do also seem to have integrated well with system calls on iOS. Do as good a job on Android and I have no qualms about your project going well.
I will add a critique though; It seems that the icons in your tab bar don't all sit level. It looks like the calendar and calculator icons are raised above the plus, settings and how it works icons.
And while it's not a hugely important feature, I'm a big fan of the "How it Works" tab. It's a small thing, but I like that you inform people of the process not just the result of a GPA calculation.

Android generally likes hamburger menus more than tabbed interfaces, but even if the Android Design Guidelines suggest otherwise, I'd actually recommend keeping the tabbed interface if you find the implementation simple enough to mimic. You app can definitely keep its identity with a hamburger menu too, but I like it as part of the characteristics of your design language.

And finally, well done on scaling the UI for iPad. Haven't run it on iPhone so if there are major differences in how things are done; There you go. iPad version was the one I tried.

Since it's very, very similar to iOS development, and most of your code can be reused; You may consider expanding to Apple Watch before knuckling in with Android. It won't expand your user base by nearly as much, but it might be a good place to try your hand at adapting design, keeping the coding differences minimal.
But from a perspective of what benefits your user base most, an Android port is definitely the most beneficial place to spend your time, so maybe better to just dig in.
 
That's a tough question, man.

OK; So, first off. How did you code this? Is the UI clearly separated from the model (backend code), or are they closely intertwined? The more separation you have of front-end UI and backend code the easier porting will be.

2) Would you like to be able to keep your Swift code for the Android release?
It is possible to compile Swift for Android. There are both upsides and downsides to this approach though. The upside is that you can keep the work you've already done, which is great! (although things that rely on iOS frameworks won't work of course). The downside though is that the toolchain for Swift on Android isn't super developed yet, and there aren't super many places to get help and resources for it.
Unless the codebase is too big, I'd advice starting a new project in Android Studio in Java instead. Android apps are typically Java-based, and whilst it generally doesn't perform as well as Swift since it runs on a JVM, Android users are used to a lot of apps being Java, and it's not like your app will need massive performance to work well.

For UI I am guessing you're using a lot of system elements from iOS in your iOS app, like UILabel, UIButton, etc. Anything you haven't spent time making yourself, I'd advice using a similar built-in UI element for Android rather than trying to emulate the look in your iOS app. Though any aspects of the native UI element that can be customised in the API, strive for uniformity. For instance, maybe adjust typography and tint colours to be consistent between the two experiences, but allow navigation views to use different arrow types native to the system. Even big apps like Facebook utilises system UI elements without customising aside from color at times.
Figure out what gives your app a distinct personality on the platform it already exists on, and recreate that personality, letting everything else blend into the environment it's in.
Maybe flick through the design guidelines for Android, and refer to it if in doubt
https://developer.android.com/design
But never blindly refer to it. It might say to do things a certain way that makes sense 99% of the time. But if it doesn't feel right in your app, feel free to ignore it. Experiment with UI ideas. Maybe you find out you want to go back to your iOS app, and replace the image of a UIButton with something custom that you can then use across versions to get more of a sense of them being the same app.

It's not really relevant to my situation, but I'm downloading GradePoint now to perhaps give more specific feedback going forward if you want.

And I'd planned to post now and come back later, but it downloaded quick and I poked around so I'll just continue ranting...

It seems your app already has a rather strong identity as it is; Especially the pull-up screen for adding classes and presentation of GPA average.
You've also got a clear tint color dominating the UI, which is good. This will make the transition to Android easier, in that your app has characteristics it can be recognised by.
It doesn't matter if it looks different on Android, as long as it's recognisable, and I think you'll be able to tackle that nicely. While it's not a hugely complex app you do also seem to have integrated well with system calls on iOS. Do as good a job on Android and I have no qualms about your project going well.
I will add a critique though; It seems that the icons in your tab bar don't all sit level. It looks like the calendar and calculator icons are raised above the plus, settings and how it works icons.
And while it's not a hugely important feature, I'm a big fan of the "How it Works" tab. It's a small thing, but I like that you inform people of the process not just the result of a GPA calculation.

Android generally likes hamburger menus more than tabbed interfaces, but even if the Android Design Guidelines suggest otherwise, I'd actually recommend keeping the tabbed interface if you find the implementation simple enough to mimic. You app can definitely keep its identity with a hamburger menu too, but I like it as part of the characteristics of your design language.

And finally, well done on scaling the UI for iPad. Haven't run it on iPhone so if there are major differences in how things are done; There you go. iPad version was the one I tried.

Since it's very, very similar to iOS development, and most of your code can be reused; You may consider expanding to Apple Watch before knuckling in with Android. It won't expand your user base by nearly as much, but it might be a good place to try your hand at adapting design, keeping the coding differences minimal.
But from a perspective of what benefits your user base most, an Android port is definitely the most beneficial place to spend your time, so maybe better to just dig in.
1. I coded this with swift and Xcode. I used a lot of the interface builder but also did a good chunk programatically.

2. Probably not, I don't think I have enough experience to do it if there is not a lot of help out there

3. Thank you so much for your advice I'm currently making the apple watch version right now. Its a good place to start because I don't think it'll take too long.

One more question, how do you think the android version will help my app grow? Android dominates 80% of the smartphone market. However, my user base is high school-college students and 80% of them own iOS devices.
 
One more question, how do you think the android version will help my app grow? Android dominates 80% of the smartphone market. However, my user base is high school-college students and 80% of them own iOS devices.

Yeah; But I think if you want it to grow, having an Android version is a way to try and capture the remaining 20%.
Improving the iOS app could also be a way to try and improve the userbase; Perhaps a more effective one. I see an Android port as serving two main goals, in order of importance:
1. Making you more familiar with Android development, rounding off your skill set.
2. Getting those who don't use iOS access to your app.

Something like the Apple Watch variant I suggested and that you're now working on, is likely going to be a feature used by people who already use your app, rather than something that gets more people to it. Though it may also be something that people show off to get others interested. But Android opens up the app to a new audience.

The biggest downside is maintaining two codebases. Especially if you want to be well integrated with the OS, and keep up when new system software is released. Though that's less relevant on Android since so few are on the latest releases of Android anyway.
 
Congratulations on the release of 1.3. Your Premium subscription tier is a good monetisation idea. I think you perhaps should reconsider the pricing tiers; With the feature additions it gives, $3 per month is perhaps a bit on the high end, and it may be better to go for volume, setting the pricing to $1. Then again, if your premium tier will grow in features substantially to more warrant a higher price tag, it may be better having the price tag as is from the start, since people generally probably wouldn't react well to a price hike if it started lower. - Just to add something to consider; It may be perfectly well as is.
You continue with good design for the premium screen and such. Though I might advice for a "Maybe later" or "Not now" button to deny the premium subscription instead of just the x in the corner. Making it more explicit that it will not result in any cost to continue with the free tier.

Good work, mate.

BTW; I'm getting along with my first Android project myself, so if you still want to eventually develop an Android port, I'll soon be much more capable if giving hints if any is needed. I've so far been positively surprised by a lot of developmental similarities to iOS and Xcode, working with Android Studio, though also some massive differences of course.
 
Congratulations on the release of 1.3. Your Premium subscription tier is a good monetisation idea. I think you perhaps should reconsider the pricing tiers; With the feature additions it gives, $3 per month is perhaps a bit on the high end, and it may be better to go for volume, setting the pricing to $1. Then again, if your premium tier will grow in features substantially to more warrant a higher price tag, it may be better having the price tag as is from the start, since people generally probably wouldn't react well to a price hike if it started lower. - Just to add something to consider; It may be perfectly well as is.
You continue with good design for the premium screen and such. Though I might advice for a "Maybe later" or "Not now" button to deny the premium subscription instead of just the x in the corner. Making it more explicit that it will not result in any cost to continue with the free tier.

Good work, mate.

BTW; I'm getting along with my first Android project myself, so if you still want to eventually develop an Android port, I'll soon be much more capable if giving hints if any is needed. I've so far been positively surprised by a lot of developmental similarities to iOS and Xcode, working with Android Studio, though also some massive differences of course.


Thank you so much for your feedback. I thought deeply about the price and I decided it because I do plan on adding a lot more features within the next few weeks, and increasing the price is risky because the last thing I want to do is to make people feel like they're being ripped off/not getting a good deal. So I decided to start the price at the higher end and see how it goes form there. You had a great idea, I'll definitely add the "Maybe later" button instead of an x. Because "Maybe later" makes it sound a lot less intrusive than just an x.


I also decided to put a hold on my apple watch and android versions for a bit, so I can grow more of a following before I expand to other operating system.

Also, do you have any tips in marketing and gaining more popularity? I've had some success in the beginning however my installation rate is beginning to slow down.

Your tips are very helpful, if anyone else is reading this and has tips as well please reply! Thank you!
 
Thank you so much for your feedback. I thought deeply about the price and I decided it because I do plan on adding a lot more features within the next few weeks, and increasing the price is risky because the last thing I want to do is to make people feel like they're being ripped off/not getting a good deal. So I decided to start the price at the higher end and see how it goes form there. You had a great idea, I'll definitely add the "Maybe later" button instead of an x. Because "Maybe later" makes it sound a lot less intrusive than just an x.

Makes good sense. It's definitely better to make people feel like value is added to a price tag over time, than it is for a price tag to increase, even if the feature list does grow with it. Just to formalise it a bit, this psychological effect is called anchoring.

I also decided to put a hold on my apple watch and android versions for a bit, so I can grow more of a following before I expand to other operating system.

I think that's probably a pretty good idea overall.

Also, do you have any tips in marketing and gaining more popularity? I've had some success in the beginning however my installation rate is beginning to slow down.

I mean, my field is mostly on the technical side. Since you have users already though, a potentially good way of growing the userbase, would be to get the users themselves to drive adoption through sharable functions.
I.e. share sheet options for sharing GPA calculations, assignment due dates, notes, whatever, and maybe for the more simple things it could just send a message with the information and a "shared from GradePoint", and the more complex shares, like assignment due dates, would require the receiver to also install the app. That way a team of students who work on the same assignment could set up the due date, and share it in the group as a friendly act, then the people in the group not using GradePoint would see the shared action and get the app to stay in touch with their due dates more easily.

You could also try with a dedicated Twitter/Facebook group, but I'm not sure this would really be of much benefit.

Asking free tier users to review the app on third launch or something might be an avenue to look at.

Push notifications talking about the new features and maybe teasing upcoming features; An app I use called Vectornator does this, and honestly it probably makes me engage more with the app than I otherwise would've. Not super many people read update notes on the App Store, so they might miss your cool new feature that gets them to talk to their friends about the app.

Find relevant groups on Facebook and such that might have an interest in your app and tell them about it; Make sure it's relevant though. Irrelevant spam doesn't benefit and only annoys people. But in relevant places, people will appreciate it and it can help.

In the physical world, maybe even putting up posters around school could work. It doesn't grow it across the country or anything, but local growth can eventually lead to more.

But as I said, marketting typically isn't really my field, so I'm mostly just spitballing ideas.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.