My lessons of 3.5 years of being a front-end developer.
My lessons of 3.5 years being a front-end developer.
It has been three years and a half since I landed my first job as a front-end developer. Since I came from a non-CS background, this is quite a journey to me. Throughout the course of these years, I have learned many valuable lessons that has shaped me to be the way I am today. I think it would be nice to share some of them through a blog post.
Do not hesitate to ask questions or ask for help
I know some individuals might find it hard to ask for someone’ s help when they are stuck on something or they are afraid of bothering their co-workers by asking questions. I was in that position when I landed my first job after graduation.
However, I considered myself very lucky to land my first front-end developer job in company where people are very supportive and kind. In fact, people might encourage you to ask questions because it makes things move forwards faster as a team. Therefore, I eventually stepped out of my comfort zone and started asking questions when I was unclear about something. Since then, I have learned an increasing amount of valuable lessons in terms of technical knowledge, teamwork and time management.
Asking questions help things move forwards faster as a team
Practice makes perfect
There is no better way to improve programming skills by doing programming. Reading technical blogs or watching hundreds of coding videos does not make you any better at programming. That is because you do not actually immerse yourself in doing it. The beauty of programming is that — the more you encounter hurtles in your journey, the more likely that you will learn things the hard way.
There were many times when I found myself banging my head on the keyboard for days for a problem, despite of reading many stackoverflow posts. And I still remember the sense of excitement when I finally solved the problem. These experiences play an important role in learning to code.
However, it does not mean that you should abandon reading blogs or watching programming-related videos at once. I read technical blogs on a daily basis and follow programming tutorials sometimes. To me, it is a good way to learn things — including mindset, lessons and mistakes from other programmers all the around the world. It’s also a way for me to keep myself updated on the industry.
But they only keep you on the level of awareness. Which means that you are conscious about these things, yet not actually fully understand them. What I am trying to convey is that learning by doing and struggling is the key.
Learn by doing and struggling
Being a developer means dedicating most of our time to working with computers. Yet, it does not mean that we should fail to have communication with other people in our team.
As far as I can remember, I have seen many cases when programmers possessing high technical skills failed to convey their thoughts to other colleagues. This caused many ambiguity and misunderstanding. I understand that some developers might chose this field because it has less interpersonal interactions than other fields. Still, whether you are a freelance or full-time developer — if you can’t communicate with other people to reach an agreement about something, your programming skills will not matter.
I think that developers do not need to possess a high level of communication skills. All we need is the ability to express our thoughts seamlessly, and learn to be patient towards other people. That is because I know technical-related people seem to cut to the chase very often, and sometimes it could confuse people. That is when we need to be patient and take more time to explain the situation more.
We need the ability to express our thoughts seamlessly, and learn to be patient towards other people.
Fundamentals, fundamentals and fundamentals
These days many people might find it very easy to learn to code, as there are many resource available on the Internet. However, a very few websites emphasize on the importance of solid foundation when someone starts to learn how to code.
Let’s say in the front-end development, many beginners seem to dive into the realms of React, Angular or Vue after a few months of learning HTML/CSS and JS. This is not a wrong choice, but it is likely that they might encounter some difficulties because of the dearth of JS fundamentals in the first place. I wrote this as a person who had been through that hardship.
It was not until I started to invest myself into reading and learning more about vanilla JS in terms of fundamentals and advanced concepts, everything started to become clearer. That was when I came to realize the vital of fundamentals in learning to code.
Not having a sufficiently solid understanding of fundamentals can create tremendous hindrances on your daily tasks.
When I first landed my first front-end job, I devoted a great amount of my time to doing my job at day and learning other things at night. There was a time I was willing to join two projects at a same time which required all of my available time in a day for a month. I just kept pushing myself so hard that I had forgotten to take care of my physical and also mental health.
After a few months, I came to a point of mental breakdown. Due to many reasons at that time, I got pressured from my job and got depressed. I felt sick of the thought I had to open my laptop after work hours and even at work. I started to feel lost and helpless. I lost all of my desires to get out of bed. It was the most terrified moment of my life.
It lasted for roughly a few months, until I received an offer from another company. Without a second thought, I resigned from my current position and gave myself a short break before joining the new company.
Now, sometimes I look back and I realize there were many factors that contributed to what happened. But the most important one is that I had not learn how to treat myself properly. I had taken myself for granted that I neglected to feel the signs of exhaustion. While I was on a short break, I did not do anything relating to programming — I just relaxed and enjoyed my time and I felt released and started to get back on my feet once again. That was how I came to realize how vital breaks in my life.
Breaks help you avoid a breakdown
Reinventing the wheel for the sake of learning
Years ago, my first mentor used to tell me that I might merely need to learn how to use some practical libraries in order to carry on my daily tasks. He was totally right, because there are thousands of well-rounded libraries out there that could help me achieve my daily tasks. In fact, some of them have contributions from hundreds of talented developers around the world.
However, I believe that there are many benefits of reinventing the wheel when it comes to learning to code. Building things from the scratch allows me to have a thorough comprehension of what lies under the hood and also the risks as well. Of course, reinventing the wheels might cause a tremendous time and effort. If a team is thinking to re-write a package which is already open-sourced, many factors might need to be considered.
However, for someone who begins their programming journey — it would be best to try to create things from scratch, and then compare your version with the other available packages. From doing that, he/she will not only be able to learn how things run behind the scenes, but also learn to how to evaluate the pros and cons of creating things.
Reinventing the wheel will show you how things run behind the scenes
Since developers now have access to a great amount of open-source libraries at their disposal, finding a library that could fit our needs is quite straightforward. However, when it comes to picking libraries or technology for any project, we should be cautious and take time to study the libraries before picking them for any projects.
There are many factors that need to be taken into account when opting for suitable technology and libraries for an application. For example —
- How big is the application?
- Which functionalities should be supportive by open-source libraries?
- Are these libraries still maintainable?
- Do we need to reinvent the wheel? If so, how much time does it take if we reinvent the wheel for long term benefit? and such like.
The list of questions are generally based on developers’ experience in the field. The bottom line is that — we should have a thorough understanding of the benefits and risks of our choice of technology.
Know both the pros and cons of your choice of technology
I came to writing as a result of spontaneity. I discovered medium last year and really enjoyed the content on the website. I read quite a lot of technical blogs, and out of the blue I wanted to write something on the platform.
My first blog post was Freecodecamp show the local weather. I wrote about it as a way to concrete my understanding and my knowledge, and I did not expect anyone to read my post. But some people found it helpful! Therefore, I decided to write about how I became a frontend developer published on codelikeagirl to share my journey.
After that, I have treated writing as a hobby. I have realized that maintaining a technical blog makes me become quite more competent in programming. Why is that? Because in order to write a decent technical blog, I need to do a lot research, reading and dedicate a certain amount of time to turning my understanding into words in as simple way as possible. It is very time-consuming, but I find it is worth my time for the reason that I have retained the knowledge better. Moreover, it also assists me in improving my writing skills.
Writing helps you concrete and retain your knowledge
Thank you for reading.
Have any lessons of your own to share? I’d love to know them — do leave a comment!