I had the chance to intern at Gemography during the Summer of 2020. My experience was very rewarding and I believe I have enjoyed every part of it. The exciting part was working with professional developers who were miles ahead of me and having the chance to get feedback from them.
During my internship, I have worked on a full stack application that provides assistance to interviewers and supports real-time audio and video communication between interviewers and candidates.
Before the internship, I felt like I was stagnating. I love learning new stuff and working on side-projects, but quite frankly, the lack of feedback from professionals and experienced developers was getting a bit frustrating. I was desperate for my mistakes to be pointed out by senior and more experienced developers. I also wanted to discover working in a professional setting: communication and collaboration with co-workers, working full-time, meeting deadlines, etc.
I knew Gemography offered a great mentorship experience and almost guarenteed a learning curve. I was confident that, at that point in time, this was the best choice for my career.
I first went through a short bootcamp period of 3 weeks where I worked on an full-stack web application where independent couriers can pick-up anything customers requested through the app and get it delivered to their door. You can think of it like a Glovo clone. Through weekly demos with my supervisors, I learned about the importance of having a product mindset and how it can help you write and ship better code. This is particularly relevant and important when working on an app by myself.
For the remainder of the internship, I worked, in close collaboration with my supervisor Yassine, on a proof of concept. The project was to develop an interviewing platform that assists interviewers in both the interviewing and assessment phases. The application was also powered with real-time audio and video communication by using the Twilio Programmable Video API which sits on top of WebRTC.
The interviewing platform was the bulk of my internship. With the help and mentoring of my supervisor, we were successfully able to implement a solution to most problems the team was facing.
As part of my on-boarding process, I worked on the below application for the first couple of weeks. I think it was a fun and important challenge because I believe it helped the team gauge my level and allowed me to know what was expected from me as a developer.
Through working on the projects and code reviews, I learned a lot more about state management, advanced patterns, styling, UI libraries, and folder structure in React. I also learned about the Twilio Video API and some of the underlying concepts in WebRTC.
I believe I got much better at designing interfaces and crafting better user experiences. This was mainly thanks to a book suggestion (Refactoring UI) from my supervisor. It was such a good read and I think it opened my eyes to so many things about UI and UX.
One other prevalent thing I learned about was the product ownership mindset I have mentioned previously. The team is kinda religious about this so it was very instructive to learn about it and how it affects the software development cycle.
I also challenged myself to write some end-to-end tests. I am not afraid to admit that they are very far from being good. However, I discovered the importance of having tests, experienced how time-saving they can be, and learned about how they can actually serve as documentation!