For the past 4 months or more, I was introduced to my first front-end project in the company (after working partly on Visual Studio/C# and CI/CD-related tasks), and I was really glad to be able to work on something more relevant to my skillset and interest.
In my previous job, I spent so much time with Bootstrap, jQuery and self-written native libraries, that I didn’t realise how much tech I had been missing out on. Thankfully, this project made me realise that I have so much more to learn, and I am glad I was given the opportunity to learn as I work.
Thankfully, I also had the opportunity to work with two experienced UI guys from the UK team, and I have a colleague sitting beside me who had started 2 months earlier on the project, to guide me through the project’s code, and explain its concepts.
I’m sure you can easily Google up articles about React, so I won’t elaborate too much about it. In a nutshell, I really enjoyed using React! And the concept of Redux was pretty hard to grasp at first, but once I got it, it felt really familiar, like I was writing game code (based on the idea of immutable states).
Regrettably, in my previous company, my ex-boss had stressed on the importance of testing, especially for web apps, but I never got around to learning or using them. Dear Andrea, if you’re reading this, I’m really sorry I skipped around the task and focused too much on writing the application code, instead of dedicating some time to write tests. I’m sure the tests would have helped shave a lot of time off discovering and fixing bugs.
But, now, I have had the opportunity to write in React, Redux, Jest and Enzyme. And I see the power of frequent, automated tests. I finally understood what unit, component and integration testing means. I now (sort of) understand why some people are so concerned about test coverage. I’ve learned so much in the past 2 months and I intend to pick up more relevant tech that complement the project, such as Webpack, ESLint, Selenium and more.
I’ve come to realise that “programming skill” isn’t exactly about the prowess in the language, but rather, the ability to use as many complementing libraries as possible, effectively, to create the end-product. Heck, even non-project related tech knowledge would help a lot, e.g. Git commands, integrating CI/CD into the project, or using Powershell scripts to automate build and resource provisioning.
On a side note, finally learning and writing tests for the React app made me realise that it must’ve been really difficult to write automated tests for games. Although Riot has written an article about how they tested their game (League of Legends), I imagine it must’ve taken some effort to get the initial tests working.