One of the baggage that kept me within my comfort zone is the sense of impostor syndrome: the fear of being exposed as a fraud. For one, I have attempted multiple mini projects with none seeing the light of day. Secondly, I was struggling with even the foundation computer science topics. Lastly, I was doubting my decision in picking computer science as my major.
The opportunity for my internship arises shortly after I resolved to act despite my fears. On the day I went for my first meetup, I was offered an interview. I was eventually offered a role as front end developer.
I started the job with the expectation of working with plain HTML and CSS. As soon as I review the codes, it hit onto me that the job is not as simple as I initially thought. What are less files? What are templates? Why are the files organized in such a manner? What is grunt? Why does the index file look so different from my expectations? Why are everything stored in a single page? In the face of all these unknowns, I began to question if I have made the right decision jumping into this internship.
To make things manageable, I should have start with the simplest work. Creating the design template on paper and implementing them on plain HTML and CSS. At the very least, I would have made concrete progress. Furthermore, since we are dealing with web technologies, HTML and CSS work would never be wasted.
This brings us to lesson 1: ALWAYS remember the foundations. I have made the mistake of jumping straight into learning AngularJS in the first week. The belief that I need to know enough about AngularJS before I can start working led me down the rabbit hole of massive information that I can neither make heads nor tails of. The result is two weeks with no tangible progress. On top of that, my imposter syndrome only continue to grow.
The turning point for me is when the time pressure kicks in. At that point, I decided to stop focusing on learning AngularJS and shifting to doing what I already know. I started with transferring the design from paper to a photoshop document. When that is done, I implement the photoshop design with plain old HTML and CSS. The last step is to integrate the HTML and CSS into the existing code so that the design changes will be updated.
At that point, it became clear that I do not need to know everything about AngularJS, I just need to know how the code is structured such that I can integrate my own implementation. This focused approach helped me make progress despite many of the questions I still had.
This experience reminds me that frameworks comes and go, but the fundamentals are unlikely to change. In the future, should I be tasked with work that are built on unfamiliar frameworks, be it ReactJS, VueJS or others, I would limit the time spent on understanding these frameworks to a maximum of 2 days and focus on building with the foundations.