Creating a Social Media Platform as My First Coding Project
One year ago to this day, if you asked me to create an application that multiplied an input by 2 and displayed the result, I would take a look at you and tell you to do it in your head instead. In fact, if you asked me that 6 months ago, I still wouldn't be able to give you a finished product.
I started my development journey in August of 2020, and I thought it would take years before I would be able to create something meaningful to people. For years before that, I had spent countless hours trying to learn simple programming to no avail. I was never able to pick up how things worked and was overwhelmed with the amount of information out there. In August of 2020, something clicked and I decided to dedicate myself to creating one simple project.
As most of you know, starting off and creating your first project is probably the most difficult hurdle in a journey as a developer. My goal was to create an application from scratch, but this could not be done without learning how to program first. The most impactful thing that I have done was that first tutorial video that I watched. This was created by Afraz A. Siddiqui, a senior iOS developer at Microsoft. Through his YouTube channel and free tutorials, I was able to quickly pick up programming industry knowledge and standards that iOS developers hold themselves to.
While watching his nearly 20 hours tutorial, I coded right alongside him to create a messaging application using Firebase. Starting off, I probably understood less than 5% of what he was doing and talking about. The method of which I learned was different from all the other times I tried coding though - this time, when I did not understand anything he said, I would go back to carefully retrace his words and look up other tutorials and documentation on what he was talking about. Using this method, the 20 hour tutorial turned into a multi-week adventure for me where I not only created the messaging application, but understood the majority of the inner workings of the application as well.
At the conclusion of creating the application, I then felt much more confident in finally venturing off to create my own application.
Making the Application
Initially, I did not intend to create a full social media platform as my very first personal coding project. My project was supposed to be an application that allowed me to transition my knowledge from a Firebase backend to an AWS backend. As I started building it out, I just kept adding more and more features until I realized that I could just make a social media application from what I already had.
When there was something I did not know how to do, I referred back to the internet and documentation on building exactly what I wanted. With this method, there was pretty much nothing that I could not figure out how to do.
It was probably nearing the end of October and I was coding every single day. Feature by feature, my app started to become what it is today. Since it was my first project, you can actually take a look at the initial versions of the project and see a significant difference in code quality compared to the later versions of the app. My only goal while coding this was to make it work, so I did not really put significant effort into the code quality. The first features built out were very sloppily made, with disorganized functions and notifications flying everywhere because I didn't really know how else to make it yet. As time went on, I naturally learned better practices that would help me maintain the project more. Nearing the end of creating the MVP, my code was still not amazing, but it became much better than the initial versions and was at least slightly maintainable. The difference between a swift file I made in the later stages versus the earlier stages was significant.
Finally at the beginning of December, my application was completed and ready to publish on the App Store. For a brief list of features, my app included: user authentication, user database, posts database, intelligent text analysis (using AWS Rekognition), analytics, notifications, user profiles, in app purchases, dark mode support, post commenting, liking, sharing, QR code scanning to get to your post, an algorithm to query posts to your (the user's) interests, and an explore page.
After posting the application to the App Store, I posted some TikToks to get some user feedback. The response I got was amazing and there were many people interested in the application and supporting it. It was certainly not perfect, but people seemed to love it and I felt that it could gain significant traction.
When the first hundred users or so joined the application, I immediately noticed bugs with the application. Some data was taking a very long time to load, users were not seeing the same information, and my user interests algorithm was acting a bit funky. A regular user would probably not notice some of these issues, but the issue that took the data long to load was one that has plagued the application's growth.
The reason the application takes so long to load on its first query is because the application actually tries to sync a large portion of the backend into the iPhone. This was definitely not what I wanted and I learned several lessons after discovering this issue on planning the structure of an application.
I have since learned how to prevent that and since updated my knowledge to modern standards of doing a regular lightweight api call to the phone. In my latest application, everything works very smoothly and is scalable up to the limits of AWS (whatever that may be). I have not yet changed it and am hesitant to in this social media application I created because in doing so I would have to delete all of my current users' data.
I may one day revisit my application and recode it from the bottom up now that I have learned better scalability and coding practices, but that is a project for a later date.
Up to this day on February 10th, 2021, I have about 500+ users on the application and counting, but there is not much momentum to my application due to the long loading times that I have mentioned.
I learned so much in making my first application and I am sure that the obstacles and barriers I surpassed in making it will make my future applications much better than my first. Although there are many issues with the application that prevent it from scaling up, I am proud of the first usable thing I made with code that other people have enjoyed using. It has only been about 6 months now in my coding journey, and I am excited to see what the future holds!
Thank you for reading through my documented history of creating my first iOS application.