The Goal
Greetings! I am posting this journal as a way to keep myself accountable, and moving forward with development. So many times in my life, do I get excited about an idea only allow to allow it to fade as difficulties emerge to replace it with a new idea. I’m not allowing that to happen this time. Prior to 2021 closing, I am embarking yet again on a path towards coding an hour daily. Through this, I will keep building momentum to release my own app.
A Little History
In the summer of 2017, I gave my first shot at iOS development. Then, it was all about Storyboards/ UIKit. I found I could create apps as long as I followed along with the videos from the instructor. Once, I stopped, and tried my own project, I would get totally lost. That’s why Chris’s method of producing challenges for important concepts has been so valuable to me. It forces me to remember how to implement components on my own.
Only five years ago, I hated programming. I learned Java in college, where I got completely lost with Object Oriented Programming (OOP). I didn’t understand how anyone would voluntarily code for a living. However, my views changed a few years later as I discovered Python for work.
I was impressed by Python’s simple syntax and powerful libraries. Something that would have taken me days to produce in Java could be done in less than 10 lines with Python. Also, Python allowed me to create complex function-based programs. I was able to produce powerful programs without using OOP at all, only through functions. However, as these programs grew in complexity, and with guidance from some more senior developers at work, I began to see the value in OOP.
It is so much easier to maintain classes versus functions. You can extend classes, while leaving the older code alone. You can modify a simple file to fix a bug everywhere. Also, it’s nice to modify an object itself versus throwing around new variables everywhere, as I might do with functions.
In March 2020, I became proficient enough with programming to even begin to make my own web apps that do something no one had done before. I learned how to run the front-end with JavaScript, and a backend with Python’s Flask/ FastAPI frameworks along with databases like MongoDB and PostgreSQL. It took me about eight months to pull everything together, but not I understand full stack development with multiple technologies. I can build production-grade apps.
Planting the Seeds
However, for my latest project, I needed to run code on the user’s phone. I wanted my app to be able to work, even without connectivity. Plus, I liked the security and cost benefits associated with this. If my app scaled beyond my wildest dreams to thousands of users, I might be set with thousands of AWS bills. Rather, by doing the compute/ heavy lifting on the user’s iPhone, I would avoid all of that.
Plus, my app would perform faster, because it would not need to go to the server with its request, wait for the server to process it, then return a response. It could process everything itself.
My app needs to convert photographs of receipts into text. I was able to get something running through Google’s ML Kit (always ironic to me that Google produces some of the most relied-upon technologies for iOS developers, like Firebase). The app was able to perform Natural Language Processing (NLP) successfully, but could not get the order of the words right. It would confuse items in the receipt as one paragraph without saving their prices correctly. I attempted to debug it myself, but couldn’t. That’s when I decided to invest the time and money to learn iOS Development again.
Learning with Code with Chris
I started the 14-day challenge with Code with Chris in late July. I loved how everything was setup. Chris and the team did a brilliant job with the coursework. Plus, it’s fantastic how the courses are setup: foundations; performing; and professional. This spurred me to join CWC+.
For me, the plan is to complete the SwiftUI iOS Foundations, databases course (because I want to hold data locally), and design courses to improve design, followed by the machine learning course. Once I get through with these, I will feel confident that I can build my own app.
I worked on the iOS Foundations course from August until mid-November. It was discouraging at times. I thought to myself, if this is taking me so many months for a single course, and this is one out of ~18 courses offered by CWC+, how would I ever finish? Still, by sticking with things, pushing through, when I did not grasp everything, later with more time in the language, I started to understand more. I was so happy to complete the iOS Foundations courses. It truly teaches you what you need to build an app.
I knew that with the knowledge it taught me, I could start building my own app. However, I decided to hold off to learn more, to finish the databases, and am excited to learn more about design/ Figma.
The Present
Right now, the day after Christmas, I aim to code daily, ideally an hour every day. I’m about to start module 2 in the databases course (after taking my time in the module 1 challenge, where I implemented SwiftUI Firebase code to more efficiently parse objects between Swift and Firebase, more details here).
Any tips people can pass on about starting a business/ generating revenue from apps are much appreciated.
I hope by sharing this, I can connect with others, keep myself accountable, and build better apps. I was encouraged myself by @CalStark’s post, Two best friends starting a business - #7 by CalStark.
Cheers,
Andrew