Hi everyone! In this post, I would like to share my experiences from being the youngest frontend engineering lead at Indonesia's largest digital signature company, PrivyID. I was 20 years old at that time. And I worked for about 1.5 years.
I'm a special curriculum vocational high school graduate. Why we called it 'special curriculum' is because usually in other schools in Indonesia it only spend 3 years. Meanwhile, I was in school for 4 years. The 4 years were divided into two phases, 3 years of learning, and 1 year of internship.
Also, I hadn't found the right learning method for me. And then, I tried all the learning methods that I knew. It turned out that watching and following along online courses from YouTube or Udemy is the best for me.
However, these online courses only teach me the basics. When I encountered more complex tasks, I got very confused. Thankfully, many senior mentors were very happy to help me to solve those tasks. And I learned a lot from them. Especially how to read and learn from the documentation.
From this experience, I think I had enough knowledge foundation to go deeper into this frontend engineering world. So I chose this path, and I learn more.
As I learn, I was happy to share my findings and knowledge with others. And eventually, I began to be a mentor for my colleagues when they confused while trying to solve complex tasks. Also, my school was calling me back to mentor my juniors who will take part in some frontend engineering competitions.
I was promoted to be a frontend engineering lead at the start of 2020. Everybody knows that being a leader is hard.
There would be more and more people that are looking for me. Also, many important decisions are up to me. Being good at coding isn't enough. There are many non-coding skills that I should learn.
But before I go through it one by one, I would like to share the important attitudes that I've learned, first.
Attitude Skills (Soft-skills)
This first point might be sound a little bit cliche. But in my opinion, this is the most important point.
"Lack of intelligence can be corrected by learning. Lack of competence can be eliminated by experience. However, dishonesty is difficult to fix."
- Muhammad Hatta
From that quote, I firmly believe that honesty is above all. It's the main foundation. Since many people are believing in me, I should be accountable to them by being honest.
So I learned to be honest and open to my real situation and knowledge. Because lying will only cause new conflicts and problems.
When I'm being honest with myself, I could understand my weaknesses and strengths. I know what I should improve and learn more. Honesty, also makes me understand what I want.
Because I understand what I want, I can set goals to achieve it. For example, I was very bad at public speaking. With honesty comes awareness. So I became aware, and I tried to improve it. I started to talk to more people, and it gains me more confidence.
The day-to-day result isn't great. There are failures when I learn new things. But because I had a goal to achieve, I became persevere and never gave up. Failures and mistakes also become my provision so as not to fall into the same hole.
Care & Awareness
Because I'm being honest with myself and have goals, I became aware of those around me. I realized that many people also have difficulty in achieving their goals. And some of them were kind enough to share their failure story, and how they continued to persevere to achieve their goals. I learned so much from it.
Caring also makes me happy to share. It also humbles me. When some friends and colleagues need my help in coding or non-coding tasks, I'm happy to help and willing to share my knowledge.
Technical Skills (Hard-skills)
And now I'll go through it one by one. Back then, I was too focused on developing my coding skills. But, these non-coding skills below are what made me trusted to be a leader.
Exploration - The software engineering industry is growing rapidly, so I should be able to explore and learn new things fast. Especially if the upcoming tasks are something that unknown to me. Also with exploration, I could find new things that could make my work faster and more efficient.
Planning - I learned that skill to set little goals to achieve the bigger goal is important. The process of achieving the goals becomes more meaningful because there are small steps that make me understand where I've reached.
Communication & Collaboration - Being able to communicate and collaborate with the team is very crucial. The ability to communicate ideas, as well as suggestions and criticisms to the team is something that can improve collaboration, and eventually, it will improve the team performance.
Code Review - Being able to review my code is important. So I understand which ones can be made simpler, which ones I can improve on, and which ones are not in line with the best practices. After being to review my code, I can review code written by someone else. This ability allows me to frequently discuss with colleagues the effectiveness, the readability, and the best practices of the code.
Security, Performance, Accessibility & Usability Testing - In my opinion, these skillsets are categorized as advanced skillsets in software engineering. Because many engineers stop after writing solid code and tend to forget these factors. I realized that these things are no less important than writing great code. My code might be solid, but it is very prone to issues and loopholes if I neglect and forget these things.
Writing Documentation - I initially didn't like to write documentation. Because I prefer to teach someone directly about something that I did, or my work. However, my time is limited. I can't teach each person one by one, every single time. That's why I learn to write documentation, so people can learn from it by themself.
Mentoring - Accompaniment in a learning process is crucial. It makes me and my colleagues more aware of each other knowledge. It's also a chance to recognize each other views on how to solve problems. It helps us to grow together and make the collaborations even better.
Writing solid code is great. But from what I learned, those soft skills and hard skills combined are what made me entrusted to lead a team. But still, I'm far from perfect. I just try to learn it day-by-day. And the most important thing is, I don't need permissions to learn to do those things.
"If you act like a leader, people will see you as a leader"
That's what my engineering manager says when he promoted me. In the future, I will also promote people who not only great at writing code but also exceptional at those non-coding skills.
In final words, I'm grateful to have been trusted as a frontend engineering lead. I learned a lot and will continue to learn to be a better leader. Thanks for reading, stay safe, and have a nice day. 😁