Why do I want to become a developer?
It’s always been in my nature to create – I’ve written, produced and recorded music, and built small websites through WordPress for years – I’ve always been a creative person with a love for computers and the Internet. However, for the majority of my life I did not believe these two sides of me had a shared destiny; I did not believe that coding was creative. Now I know that Code is Poetry.
My plan is to progressively enhance the app into a fully complete app, allowing me to step-by-step learn important principles of development without overwhelming myself while at the same time practice my learning by applying them to a real app.
Why build just one app?
A lot of junior developers will have multiple projects to list off in their portfolio but will not have anything actually published to one of the app stores. After reading advice from senior developers it’s clear to me that a single, complete, published app tells more about an aspiring developer than several incomplete and unpublished apps.
How will I do this?
By building my own app from scratch and progressively enhancing the app, learning and practicing core development concepts essential to becoming a professional developer.
What is the app?
The app will be a very simple “contacts manager” app which is designed to help keep all of your contact information in one place – address, phone, email, and birthday.
I have a terrible time remembering birthdays so I want a way to not only look them up but to be reminded of upcoming birthdays.
How am I building it?
The back-end architecture will be done using Firebase – a relatively easy-to-use development platform which can offload some or all of the server-side responsibilities an app would normally need. For this app I’ll be using the following from Firebase:
- Firebase Auth – user creation, deletion, authentication, credential storage and password reset. This allows me to quickly add login/auth capabilities to my app without building my own totally secure backend server.
- Realtime Database – storage and retrieval of data without using a separate query language. Realtime Database also has the ability to set access rules(authorization) to make sure that users can only access and modify their own data.
What are the core steps?
- Build the core of the app first. Add all of the necessary features to get the app working and get it to an MVP state.
- Spice it up. Add UX improvements such as input validation as well as adding hints to devices when to use specific types of keyboards. For example, when inputting a phone number, use the number keypad instead of the standard keyboard.
- Beef up the security. Prevent unauthorized data access/modification as well as prevent injection of unwanted or dangerous data into the app database.
- Reduce potential bugs. Allow me to more confidently refactor my code in the future by adding Unit Tests through Jest.
- Improve clarity. Help document the intent of functions/components by adding Typescript compiling. Help prevent accidental data mutation by adding static typing to variables, props, and state.
- Caching. Help reduce tight coupling to an active internet connection by adding caching for some amount of offline access. This will also speed up performance.
- Test performance. Use performance debugging to make sure it is smooth and has a native app feel. If possible, adhere to the 16 ms golden rule.
- Document the code. For readability, document the code within the app code itself. For longevity and ease of understanding, create a readme file and include it on GitHub.
- Publish. Most importantly, publish the app to an app store and have some people test it. Publish to GitHub.
- Feedback. Take feedback from #9 and refactor/fix issues.
What if I fail?
That’s not going to happen.
I will hit snags along the way. I will get stuck trying to fix a tricky bug. I will pull my hair out(what’s left of it, anyway) trying to resolve esoteric NPM errors. But I will not fail. I will not give up.
These blog posts are additional pressure I need to cross the finish line.
It’s not a question of
Can I become a developer?
It’s a question of
When will I become a developer?