I’m Tarun. I love creating and designing mobile applications for iOS.
My two years were a real rollercoaster ride for me, especially since the starting period was a real struggle. Trying to fit into your first job is not easy. Tech companies give too much importance to a tech degree you attended so I guess English honors graduate with no experience didn’t look quite appealing. I was learning to code, but couldn’t quite understand where to begin.
Googling my way to a solution was the only I had to teach myself how to learn.
What led me to start teaching myself Swift & iOS development?
Back at the end of 2016, I decided to teach myself how to code. Back then the motivation came from a realization: I was a fresh graduate from University, had a graduate degree in English in my pocket but somehow I knew nothing about the professional world. I decided to do this entire thing by enforcing the learning by doing rule.
Reinforcing knowledge to write better code is a great way, to begin with. Here is a mantra that I follow every day, whatever the format I pick to learn, I don’t just read, watch or listen, I CODE! Even if it’s re-writing what I see or read, I see whenever I make a mistake, skip a line, make a typo, use the wrong auto-complete option, and this is GOOD. This forces me to read again, compare with the example, see what’s different and where I went wrong. This is super valuable. Because once I fixed it, I’ll know why and won’t make the same mistake again (hopefully), or if I still do, it will take me half the time to fix it. That’s how we learn.
Developing iOS apps is fun and challenging. During this process, we sometimes make bad decisions and mistakes, that can have an impact on the quality of the app (both technical and from the user’s perspective).
It was a lot of really new stuff and I think I just had to… there were some phases when I was watching online videos typing and I would be typing it in and I was straight up Coping & Pasting word-to-word what were they typing and after when I was doing for while it slowly started making sense. You know, there was so much work.
It just takes some amount of time and experience you have in that environment.
These are some of the mistakes I’d make while creating iOS apps. Of course, there are many more. Just being exposed over and over again I started to learn a little more.
a Memory leak is a piece of memory that is not used anymore in your app, but it is not de-allocated.
Zombies are deallocated objects which are still used in the app. When you try to access such an object, the app immediately crashes.
This is not iOS specific and it’s a generally bad practice in software engineering.
For some, it might not be a big deal, but an inconsistent coding style between team members is something that bothers a lot.
Breaking of patterns:
When you’ve started a project, you (hopefully) agreed upon some general architecture and design patterns that will be followed throughout the project.
Usually, that’s MVC, MVVM, VIPER, or something else. However, usually, again because of lack of time, bad software design decisions, or not understanding the architecture, there are breaking of the established patterns.
Massive View Controllers:
I don’t think that the MVC pattern is bad for iOS apps. There are complex apps written in MVC, which are not implemented in a bad way.
Tight dependencies on third-party frameworks:
You must not depend on a third-party framework, deeply integrated into your solution. Your business logic should be isolated from implementation details such as which frameworks you use.
Also worth mentioning:
* Force unwrapping Optionals in Swift.
* Not having a centralized place for style management (colors, fonts, etc).
* Not using constants.
* Doing long operations on the main thread.
* Changing the user interface from threads other than the main.
* Not caring about security. Storing credentials in insecure storage, such as User Defaults.
That is something I learned which again is the culture. It is semi-related.
But I found that the biggest learning curves come when you try to build your project especially as cool and as complex and I think it’s necessary to have a really basic foundation.