There is a moment in every developer’s life where you have to leave your comfort zone. In these times, things will be harder, you'll have to deal with new responsibilities, knowledge, language and tools, and you'll question if you'll be able to get through it. But, honestly, you won’t know until you are there.
I had one of these moments recently, and lived to tell about it. So I thought I'd share my experience with what I like to call the most intensive week of development of my life.
DAY 1 (FRIDAY): The Announcement
A few weeks ago I was told that I was going to start on a new project as part of a pro bono collaboration Rocket was working on to help with the COVID-19 situation.
To give you some context, I’m an iOS developer. That’s my main background. While this particular project was going to be a React Native project, the other company requested a Native developer (that's me!) knowing that we would need to figure some things out as we went.
I didn’t have JavaScript or React Native knowledge, I didn’t know about tools or technologies that this client was using (GraphQL or Expo), or about good React Native practices either. My only experience on that platform was to omit an event of a button...literally.
At the beginning I don't think I realized 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 and saw that there were two calls scheduled - an internal kick off and another one with the client.
By midday, millions of questions started to arise into my head. I was worried, anxious and nervous, but very excited to be part of the team that was going to help with the COVID-19 situation. 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 the client had some features ready, but there was still a lot of work to be done. Also the team was aware about my skills and they were okay taking me on for 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 JavaScript and React Native 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
The next day I had my environment ready and the client gave me my first assignment for the project: make the sign in / sign up flow. What a way to start! We discussed Firebase Authentication to make the process faster. As you might guess, the deadlines were very short and also there were no tickets with descriptions or acceptance criteria. There was just a design from Figma. But I knew we had to move forward as fast as we could.
I began researching how to implement this authentication with React Native 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, and 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 developers that were working with React Native 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 had 6 digits. So, they asked me to change the backend logic. Okay, cool, yes… no problem. Ohhh the backend was made with Typescript. NICE!
Fortunately, it was an easy change.
At 2 pm, I had not had lunch yet, so I went to prepare some food. I chose pasta. So, I took my multipurpose jug (where I prepare coffee, milk, etc) to make the pasta. I think my brain was about to melt, because I served the pasta in a cup like my coffee (real picture):
That day I worked until 4:30 a.m. and by 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 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 end of the day, I had all the features done. Finally, yeah!
So I made the PR, and then the client rejected it.
Just kidding!
Obviously they made some changes to improve things, but that's normal. Remember, I’m not a React Native developer.
In the end, I learned a lot throughout this experience about JavaScript, React Native, Expo, GraphQL, TypeScript and more. It was an intensive experience, but I believed 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 to the situation. You can leave your comfort zone and you can make the things happen. You have the power to do it, so 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 healthcare, emergency, security and science systems. Stay safe.