There is a moment in a developer’s live where you have to leave our zone of comfort. Where you know that the things will be harder and you’ll have to deal with new responsibilities, knowledge, languages, tools, etc. Probably you’ll ask yourself a lot of questions in the middle of that situation, where the stress takes an important leadership. By questions I mean:
- What will happen?
- Will I be able to deal with it?
- Will I perform well?
- Do I have what it takes for this?
But, honestly, you won’t know until you are there.
I’m here to tell you how one of my most intensive weeks of development in my life was. What were the pros, cons and my humble conclusion of all this.
DAY 1 (FRIDAY): The Announcement
A few weeks ago I was told that I was going to start a new collaboration on a React-Native project, with some software agencies of USA to help with the COVID-19 situation.
~To give you some context, I’m an iOS developer, that’s my main background.~
I didn’t have JS or RN knowledge, and I didn’t know about tools or technologies that they used, such as, GraphQL or Expo, or about good RN practices either. My only experience on that platform was to emit an event of a button, literally.
At the beginning I think I didn’t realize what was coming…
But anyway, I was there and I was going to help if I could.
DAY 2 (MONDAY): The Kick Off
I took a look at my Monday’s calendar I saw there were two calls there. An internal Kick Off and another one with the client.
By mid day, millions of questions started to arise into my head. I was worried, anxious, nervous but very excited to be part of the team that was going to help with the COVID-19. I talked with managers and mentors about it and they knew how to calm me down a bit.
After the two meetings, I knew that they had some features ready, but there was still a lot of work to be done. Also the team was aware about what were my skills and they were okay taking me on this project. That relaxed me a lot. BUT, there was still a minor issue that I had to fix.
I DIDN’T KNOW HOW TO CODE REACT NATIVE.
So, the first thing that came to my mind was “you have to learn JS and RN NOW!”. I had one day, so I took an intensive course to learn at least the basic stuff and I started to prepare my setup to work.
DAY 3 (TUESDAY): Assignments
Next day I had my environment ready and they gave me my first assignment for the project: make “Sign In / Sign Up Flow”. What a way to start! We discussed about Firebase Authentication to make the process faster. As you might guess, the deadlines were very short and also there weren’t tickets with descriptions or acceptance criteria. Just a design from Figma. So I thought, we have to move forward as fast as we can.
I began researching about how to implement this authentication with RN and it looked easy. The major problem wasn’t Firebase but following the processes that they had, such as the architecture and style guidelines. I spent a lot of time trying to understand these kinds of things but finally I had an auth with SMS implementation running on the app (without design of course, just the logic).
I was feeling great, making progress with an unknown language and technology. But, “not all that glitters is gold”.
DAY 4 (WEDNESDAY): A lost morning
A new day began and I realized there was a technical impediment that involved the way that Firebase Authentication checked for real devices and the designs that we had. Firebase presented a Webview to the user with a recaptcha UI, very ugly. So, when it was my turn to give my updates in the daily meeting, I asked about this. It was funny to see their faces when they realized that I was using Firebase, because I didn’t have to use it. Instead of that, there were two endpoints that had to be used with GraphQL. I would have paid to see my face at that moment. Luckily I didn’t have the camera on.
So I had another problem…
I DON’T KNOW HOW GRAPHQL WORKS.
I had a couple of meetings with some guys that were working with RN or had experience with this technology to explain its functioning to me.
That day I worked from 8 a.m to 2 a.m. but I made it, I had both services working.
DAY 5 (THURSDAY): Zombie mode on
I woke up at 7 a.m. to continue working on it. My plan for that day was to integrate the backend services with the UI. During the morning I made good progress but suddenly I saw that the design didn’t match with the backend logic. We had a screen to enter a 5 digit verification code, but the code in the backend was of 6 digits. So, they asked me to change the backend logic. Okay, cool, yes… no problem. Ohhh the backend was made with Typescript, NICE!. I think a good image for that situation could be represented by this one:
Fortunately, it was an easy change.
At 2 p.m. I had not yet had lunch, so I went to prepare some food. I chose pasta. So, I took my multipurpose jug (where I prepare food, coffee, milk, etc), to make the pasta. I think my brain was about to melt, because I served the pasta in a cup like coffee (real picture):
That day I worked until 4:30 a.m. and at the end, I had all the UI done.
DAY 6 (FRIDAY): Final Countdown
I woke up at 8.a.m (please kill me), and even though the UI was done, I had to do a lot of UI tweaks and code improvements. I had to change some details to make the UI work for all device sizes and in both platforms Android and iOS.
Everything was fine until I couldn’t test the app with Expo in multiple devices at the same time. I had to do it one by one. I lost a lot of time on that.
Also after I made some code improvements, the flow stopped working. At that time, I questioned my life. I was not thinking with clarity. So, I took a cup of pasta…, I mean…, coffee and I fixed the issues.
By the EOD I had all the feature done. Finally Yeah!
I made the PR and they rejected it.
Obviously they made some changes there to improve things, but it’s normal, I’m not a React-Native developer.
I learned a lot those days about JS, RN, Expo, GraphQL, TypeScript and more. It was an intensive experience but I think I could help even if my skills weren’t the correct ones for that project.
My conclusion about that week is that even if you don’t have the knowledge or experience, even if you have fears or you’re worried or you just have doubts about yourself… you can help. You are able to adapt you to the changes, you can leave your zone of comfort and you can make the things happen. You have the power to do it, make it count.
I want to send my condolences to all those families who have lost a life due to COVID-19 and to send a lot of strength to all the people who work in health, emergency, security and science systems.