Today was the end of my first full week of doing the iOS Essential Developer Program. I was pleasantly surprised by how much I was able to learn. It didn’t quite start off that way, when I watched the first video it started off talking about singletons and how some developers think singletons as the anti-pattern. The first lesson caught me by surprise, I was a little confused as to why that would be the first lesson in a course. Don’t get me wrong, this is not a beginner course, this is not for people wanting to learn about iOS development. This is a program for mid to senior-level developers who want to level up to the next level, for those who want to be a lead or a senior iOS developer. So, it didn’t surprise me that we were talking about design patterns on the very first course, it just shocked me that it was about singletons.
It was surprising because most blogs, YouTube videos, or other courses that I have done and seen don’t mention singletons in lots of detail, they tell you about it in a high overview level, they are mentioned, but they’re never the main focus. After the first video, I was confused, I had to go online and find out more about the singleton pattern because like I had said I had to come across it in readings but I wasn’t familiar enough to really feel comfortable with it. I had heard that it was bad coding practice to use singletons, that it should be avoided but I never really found a good reason as to why. I was one video into the program and I already felt lost, this was not a great start for me. After watching the video and reading the the notes on the lecture I started to think that maybe this course was going to be too advanced.
Background information on my current iOS journey: I have been working as an iOS developer for a little over nine months now, I started in May 2021 it is now February 2022. I am by no means advanced, I am not ready to move on to the next position but I am a motivated learner and I know that in this industry especially with Apple things are always changing, things are always added. New frameworks are created all the time, SwiftUI, Catalyst. And these are updated regularly. There are always new things to learn in this field, where if you are not learning you are going to get stagnant and you are going to be left behind.
I wasn’t sure if I wanted to continue the program. There is a 14-day money-back guarantee if for any reason the course is not for you. I was thinking maybe I wasn’t ready, I was thinking about asking for a refund but I managed to convince myself to give it a longer try, to try a few more lectures. If there is one thing that I have learned, especially while learning to program is that things are not always going to click or make sense in the beginning. Usually, you have to just accept that you’re not gonna learn it right away and move on, come back to it after a few more videos. After a couple of weeks or a month depending on the pace, things will click. Knowing that, having experienced that in the past I moved on to the second lecture in the course. This lecture was not as technical, it was still very informative they started talking about diagrams how you take your code and represent it in a flow diagram, so I started to feel a lot better about the course it was not super technical like I thought it was going to be based on the first video. It started to talk more about the processes of planning. It went from diagrams to code separation, to business-driven development to taking the initiative and ask questions when things are unclear. It also showed that in large projects it’s ok to start working on projects even if you don’t have all the pieces.
The first section of the course was titled “Planning, Initial System Design and Requirements Analysis” and it had five videos. I was able to go through the five videos this past week, and as I said with the singletons lecture I didn’t fully understand all of them. I understood the concepts at a high level. My goal for the week was to watch the videos and read the lecture notes; take my own notes, write some questions as I watched the videos. I did have a lot of questions pop up. There were some terms that I had heard at work that I didn’t quite understand. One of those words was having a contract with the backend or the design team. I kept hearing the word contract from the senior developers during meetings and I figured it was some kind of an agreement between the backend and the client-side teams on what was going to be returned from the API once it was set up. It was a way of knowing what the data that we should expect to get back would look like. I did not know the exact definition and being who I am, I never asked to get it cleared up from the senior developers. I was always thinking, “OK I think this is what it is, but I’m not sure, I don’t want to ask because it sounds like it’s something I should know.” All these insecurities came up and because I didn’t want to sound like an idiot, I didn’t want people to realize exactly how little I knew, I never asked. This was a big mistake on my part, this is one thing that they talk about in the course, communication is a huge part of being a good developer.
I need to work on my communication skills, I tend to be quiet and insecure at times, that insecurity makes me not want to speak up. It’s an irrational fear of people thinking that I don’t know what I’m doing but I am going to start working on that and I am going to start blogging about what I’ve found and how I’ve overcome it and hopefully I will overcome it, No scratch that I will overcome it.
The first five videos cleared up a lot of issues that I had with establishing projects and working on teams, working with design, working with the backend. It was very helpful, I am very excited to say that I am going to continue this program. I am not going to ask for my money back at the end of the 14 days I am going to continue doing it. I am excited to start the next section which goes on to talk about testing and networking. Testing is one of those areas where when I was learning iOS development we touched on unit testing, we wrote unit tests, I wrote tests but I am not comfortable at all writing tests. I will do it, I know that I can do a better job at it.
The program has a very active slack channel. Anytime there’s a question, people are willing to answer it might be one of the instructors or somebody who has already gone through the lectures that you’re having questions on. Someone will usually respond within a couple hours. I have asked a couple of questions, and so far and I’ve only had to wait maybe an hour or two before somebody responded, and then when I come back to the channel the next day I have tons of people responding and giving me ideas.
This program is to be done at your own pace, you get back what you put in, so if you put in the time and you put in the effort you get back insurmountable knowledge. From what I can tell so far is that if you take the time and you learn it and you practice you can get to that senior developer level of knowledge.
My plan for this blog series is to do this once a week trying to give an overview of what I’ve learned what I’ve come across, topics, areas that I’ve been touched upon on the course.
If there was a knob that went from 0 to 10 and that the was it was representative of my confidence, I would have to say that my knob before I started on the course would be at a four, after watching the first video the knob went from four to about a one. Learning brings on an uncomfortable feeling and the reason is that you realize how much you don’t know. At that time when the feeling occurs, it feels like a bad thing, at least for me that feeling of “I don’t know” makes me doubt myself. However, I have to remind myself that it’s a good feeling to have because that means I can grow, that means that if I am willing to put in the effort and the time to grow as a developer, it means that I am going to get better at my job.
I should have another post at the end of the week or early next week about the areas encountered and how much I learned. Hopefully, I am still as enthusiastic as I am right now. Thanks for reading, feel free to leave me a comment.