Lessons learned from 7 years of being a dev (part 1)

Advice about personal development derived from experience

I love being a developer. I have been doing this for the last 7 years and it has been very rewarding and, of course, very demanding at times. The challenges I have faced have taught me some lessons that have helped me to grow and enjoy more what I do. And I want to share these lessons with you, in case they help you with your current issues.

The following sections are the lessons I practice and live by when I think about my personal development.

Always keep learning

It is commonly accepted that as software engineers we need to always learn and expand our skills. The tech landscape changes fast. On the microscale, every domain in tech experiences changes in tooling and techniques quite often. There are always new frameworks to learn and various versions of these frameworks. Moreover, you can always dig deeper into the tools and languages you already use to master them. All the above is a lot of learning to do!

You may think that, as you become senior, there is less need to learn. That could not be more wrong! (yes, I disagree with myself here). As you grow to the next level of your role, more challenges arise. You need to expand your knowledge in matters away from code. You have to become a better communicator and mentor to others. You need to understand how to lead a team and handle all the challenges that come with that. The learning never stops!

If I convinced you that the only way forward is to keep learning, then one very valid question you should have to answer is this: How can I be in a state of continuous growth while working 8-hour days and have no unlimited resources to do so?

Here is what has worked miracles for me:

  1. Study every day, even if it is for 15 minutes. Make it a habit.

I set aside about 30 minutes every day to study, most days study time is part of my working day. I communicate it with my managers upfront and try to study something that helps me in my day-to-day activities at work. It can be tech or trying to develop better communication skills. It can be anything, like a framework tutorial or a talk about leadership skills. I just set aside at least 15 minutes and do it.

Tip: make a list of resources and pull from there when free time arises.

  1. Adopt a growth mindset and learn from every challenge you meet.

Every challenge that comes your way is an opportunity to learn. Every mistake is feedback on what you need to improve. Seize the opportunity and teach yourself a lesson. This one is, by far, my favorite advice, as I truly believe that everyone can learn anything they apply themselves to. Video about growth mindset here https://www.youtube.com/watch?v=hiiEeMN7vbQ

Study the basics, not the tools

The title you just read is a hyperbole to help me get my message across. Of course, we need to know our tools well, but we need to know the basics even better. In the first years of my dev life, I focused on learning my favorite framework from top to bottom. Later, I realized that all the bugs I introduced were because I oversaw the details of the underlying technology.

As I collaborated with more and more developers, the differences between the superstars and me became clear. They knew how to code, not just PHP or Python or Django. For instance, I could not produce quality code when I stopped using Laravel, but for the seniors, it was no problem. Slowly, it became a passion of mine to understand what is under the hood. I started studying what is HTTP and what is SSH. Or any other technology I used indirectly in my day to day.

Covering all these gaps will take time, but it is amazingly rewarding. There is an "aha moment" every time you glue two pieces of knowledge together with the missing details. Everything starts to make sense on another level.

The advice is to follow what was stated in the first section, keep learning.

  1. Make sure you put (for example) in your list to study JS closures when you start using them in React, not just use the tool

  2. Write a list of concepts that are mentioned and fly over your head, and try to familiarize yourself with them so next time make.

Give time to yourself

Coding is hard. Leading a team is hard. Dealing with so much complexity daily is hard. There is a vast catalog of things that makes our jobs demanding. We need to remember that and be kind to ourselves. It takes time to familiarize yourself with the tens of features available in the framework. Some concepts do not sync in until you experience them multiple times first. Even how we name things makes our lives hard sometimes (I have heard the word "decorator" in 3 different contexts with different meanings, on the same day). Be patient and keep going until you get through the tough times of not understanding a lot until you dive into the next pool of unknown.

The lesson here is to understand that it takes time to be good. And that you will never stop feeling imposter syndrome as you grow. Everyone goes through this experience. But it will save you a ton of stress and energy if you are patient with yourself. Build a plan and follow it. Trust the process and do not judge your performance daily, results will come as long as you keep moving!

The practical advice here is to:

  1. Reach out for help when you need it. You are not supposed to know everything - make your life easier when possible.

  2. Do not compare yourself with others. Your abilities and path are unique.

  3. Remember that everyone struggles to improve