Photo by Clark Tibbs on Unsplash
During this pandemic, as a junior developer with less than 2 years of experience, I have had difficulty to find a new job/role. So, I have decided to focus on building apps, keeping on learning and doing more productive things not only for myself but also, for society.
Over the summer, I joined a charity organisation which was founded by university graduates aiming to reduce education inequality in the U.K. We work as a tightly-knit team and constantly communicate to share our ideas in order to conduct the best practice and to bring out the best outcome for the business over the zoom calls or the group chat.
Initially, I was the only front-end engineer and I had to take the initiative to make it happen. But, as time goes by, the team has formed and as I initially chose all the tech stacks for the front-end application, I am taking the lead naturally.
This is meaningful experience for me to learn the project/time management and to communicate with other devs to deliver the best application. As a lead front-end engineer, the role requires a proactive attitude. To deliver the best outcome as we all have limited experience, it's not just about coding away during the sprint. It requires lots of research and studies at the same time as we sometimes have to deal with other tech stacks we never tried.
Sometimes I feel a little bit overwhelmed by the amount of work which hinders and is not easily estimated in advance as I am not a seasoned developer. However, the key is not to rush yourself to the hustle and bustle and to be mindful on what you are doing. Before you start taking on a task, make sure that break down the task as much as you can and utilise any task management system, such as, Trello board. No matter how big a project you have, you will see you are making progress step by step and it really helps you keep motivated.
Let me tell you what my day-to-day duties as a lead front-end developer.
Communication is a crucial part. As a team and knowing that we are all different people with our own perspectives, sometimes working as a team could make you feel a little bit frustrated as others could disagree with our ideas and suggestions. Depending on which person I speak to, as we all have different background knowledge, I have to articulate the complexity of the dev's work to non-tech people. As I started my career as a web/editorial designer, I tend to put myself in their shoes whether they believe it or not.
However, as a lead developer, I need to prioritize features and estimate the value vs complexity quadrants for all the features on the prototypes and as we are still in the early stage of the business, I focus more on the realistic goals which are low hanging fruits. This is my initial strategy and as the business grows, we can increase adoptions or engagements on specific features. Otherwise, over-qualities could lead to operational costs and too much engineering effort as well.
The communication with other devs is pivotal as we are aiming to develop the best outcome as possible. For instance, I discussed the JSON formats, with our backend dev. As I will be consuming the data on the client-side, I try my best to take consideration into time and space complexity from the all-mighty Big-O notation. I am more scrutinized about the data format depending on its usage since I know that how I write the codes make the big difference for the performance from the client-side, but also, how I write the codes depends on the data format we will consume.
Sometimes as inexperienced developers, we tend to push all the data into arrays as a simple solution whether it was a conscious or unconscious decision. Perhaps it will be ok if we do not need to use the data again, but, just in order to store the data. It could be beneficial to keep the data integrity, to log the changes in the data and so on in my opinion.
However, what if we need to consume the data on the client-side later? In general, we need to loop through the entire array as we do not know which one is where and it would be more time consuming if the array is one of the key values from each user and if we need to aggregate certain data from the entire users, it will make the application run significantly slower. The more users we have, the more we have to loop through the specific data from each user and it would be really expensive in terms of the performance.
The more I work and engage in the project, I gain not only the experience but also, critical thinking and accountability. I'd like to encourage more people to get involved in the volunteering whether it is a small team or not, you can make the opportunity as a dev experience and you also make the difference in our society as well.