Any developer aspires to be good. Unfortunately, a lot of them fail or get stuck in a specific level of their careers. If you ask any developer, the likelihood of them having someone that inspires them in the field is high. Gaining experience or becoming a specialist in a certain area is always the dream and most developers want to continue to code as long as possible, but what are the right things to focus on?
Over the time of my career, I had the chance to work with many pros and experienced developers who preached the same ideas. While adopting these practices I became more efficient in the way I approach things and collaborate in general. I became brave and learned to enjoy what I do letting my curiosity drive me into environments and challenges that provided me with great value. Here is what these professionals taught me.
1 — Always have a plan
Any experienced developer will emphasize the importance of planning. Jumping on any problem without thinking or planning is often seen as a sign of inexperience. It is important to have a plan even if you throw it away minutes after starting to code. Planning requires learning about the problem, analysis, and careful thinking which are great strategies for solving any programming problem.
2 — Optimize only when needed
Most of the time we want to get things right at first and we often spend too much time on a problem or get disappointed quickly once we realize how elaborated something can get. Any experienced developer will stress the need to get things working rather than working or looking the best as possible. Any program can be optimized infinitely and the hunt for a better solution is often not worthy depending on the time or goal you might have.
When you get something to a working state, you can quickly allow others to use it and take for a test drive to further discover its limitations, collect feedback and improve on the solution over time. You should always stress about optimization later in the process not in the beginning.
3 — Improve your algorithms & problem-solving skills
That feeling when we or someone come up with an amazing solution is just breathtaking. A problem can be solved in many different ways and what makes programmers different is the way they think. Programmers are meticulous and experience plays a big role in it. The more you practice and get exposed to, the better you get. Any experienced developer has gone hours and hours of practice and careful thinking with significant years of experience that allows them to come up with breath-taking solutions.
Improving your problem-solving and algorithms skills is an important thing to do. What makes you a programmer is how you approach problems not the number of tools you use.
4 — Programming Fundamentals goes a long way
Any experienced developer will emphasize the idea that chasing trending technologies will never end. It is always great to be updated but you should always analyze things instead of jumping on everything. To gain experience is not about how many tools and technology you have under your belt but how you can adapt and be ready to jump into any environment or take on new challenges.
The fundamentals of programming can be used with any programming language or tool. It will help you not get stuck in a particular stack forever and be flexible and ready to help in any environment to advance your career. You should always pick your tools wisely and try to improve your skills exponentially.
5 — Use the right tool for the job
Many developers spend a lot of time dedicated to a tool or style then start to go around claiming such tools are better than others. This is evident when we hear conversations around OOP vs FP, React vs Angular, Python vs R, Java vs C++, etc. Any experienced developer will tell you that you should become familiar with different options and approaches and always use the right tool for the job.
The reason many of these tools came into existence was that someone was trying to solve a particular problem and not all of them. Always research the best tool instead of fighting a tool to work for your problem. With time, you will know well how to analyze these tools and make decisions so it is a good thing to experiment. Any tool may do the job but the right tool and approach will save you time and maintenance headaches.
6 — Failure is a friend
We all know that developer who is amazing. He or she is probably a YouTuber, a developer on Twitter, a conference speaker, a coworker, a CEO, etc. What we don’t realize is how much they failed to get where they are. In a sense, they are the biggest losers as they have failed more than others to get to where they are. Failure is just a reminder to do better, not to give up. Any experienced developer will emphasize the idea of failing and as often and fast as possible. Practice, fail, repeat!
7 — Test, Debug & Documentation are skills worth having
Nobody enjoys writing tests, debugging, reading, or writing documentation. If you stop to think about it, none of us would be doing good as developers if no one did these things. Tools can only do so much to help that’s why you should do your best to write your tests. Debugging is something to do before googling the answers. Writing and reading documentation often unveil details you can’t find in tutorials. Any experienced developer will confirm that these 3 make into the top 10 list of skills a developer should master.
8 — Mentoring is the best way to learn
If you can’t explain it, you don’t understand it. You learn a lot when you try to explain things. Great solutions often come to us when we try to explain our problem to ourselves or to others. You learn the point of view of others and can collect feedback and perspective you never thought of.
At work, when you provide support to a colleague you also gain a lot of experience cause it also makes you question how well you know something. It further enforces what you know with teaching experience and any experienced developer has mentorship skills, the ability to communicate knowledge and ideas. Perhaps, one of the most important skills to advance one's career.
9 — Communication/Collaboration is the key
It is often the perception that programmers are lone wolves. Any experienced developer is a team player and supporter. Any good developer is coachable and open to new ideas and suggestions. Knowing how to work and support others is an essential and humble skill to have. Being aware that you do not need to have all the answers and that anyone can contribute with something to make things better goes a long way.
Basically, any programmer should seek team experience or improve his or her collaboration experience.
10 — Progress over Perfection
Less experienced developers often stress over perfection because they want to appear better than they are. They want the answer and in the best way which can be overwhelming at first. If you wait until something is perfect it will take time to make progress.
Open-source projects teach us that you can release good ideas in a bad state and together we can make it better and bring it closer to perfection.
Never wait to feel ready, more skilled, or perfect to make a career or programming move. Seek progress, not perfection.
Any developer journey is unique to each and all of us. What worked for me may not work for you and that does not make something better than others. The journey to gain experience is never the final step, but a never-ending adventure you should enjoy and invest heavily in. The key here is to enjoy the process.
Start with a lot of practice and focus on fundamentals. Seek good practices and learn about many different ways people can go about it then choose one. Make failure your best friend and try to mentor others. Also, never worry about nights without sleeping. Gaining experience is about accepting others through their suggestions, effort, help, and collaboration.