In the last article, we talked about how to build a strong foundation for your career through knowledge. You’ve probably taught yourself new skills with the help of a book or a video course. Do you remember when you learned your first programming language? You had to understand why the compiler doesn’t like syntax errors, why the values in variables are gone again after the process is finished, and maybe you almost jumped up to the ceiling before you realized that an infinite loop is to blame for the fact that nothing works anymore. With your second programming language, you already knew all this, could draw on your experience, and could immediately turn to the aspects that were new to you.
Experience is the knowledge you gain in practice. No medium in the world can map your learning path 100% in theory. There are always unexpected challenges like a stubborn syntax checker or an inexplicable error message that costs time and slows you down. The more you understand a subject area, the more experience you gain and the fewer hurdles you will have to overcome in that area in the future. In addition to saving time, your experience will make development easier and allow you to devote more capacity to other challenges such as technical processes or user experience, which will improve the overall end product of your development. This will not only make your work more enjoyable but will also benefit your work and your clients. Last but not least, this experience will also pay off, because experienced professionals naturally enjoy a higher reputation in the job market. Experience is an important success factor for your professional career. So how do you gain more experience? Do, do, do, hoping that experience will come to you over time? Yes sure, you will gain some experience along the way, but with the right approach you can speed it up significantly while intensifying your successes. To do that, we’re going to look at a few ways now.
Use your free time as a source of experience
Software development is probably not just your bread and butter, but a passion that you like to pursue at home. This is the perfect environment to try out new things that you don’t deal with in your daily work. This way, you can gain experience that can enrich your daily work. For example, anyone who works primarily with high-level languages such as C# or Java for a living can gain valuable new insights by studying the machine-oriented language C, which can help you understand how memory management and code execution occur on the processor. This knowledge can then be used in the future to develop more resource-efficient software since the principles are transferable but do not need to be questioned in high-level languages thanks to powerful features. In online magazines, technical journals, and social networks, many new impulses are spread daily, which you can use to think outside the box. Whether it’s an updated framework, the new design language of a major technology company, or a Raspberry Pi tutorial, the important thing is to pick something that interests you and get started!
Exchange with the team
Some developers tend to prefer working out solutions on their own and always want to achieve goals with their own power. This is not a weakness, but an expression of ambition. On the other hand, it is a barrier to benefit from the experience of others, because it is a great lever that can enormously accelerate your learning. By sharing with the team, bugs, architecture issues, data model anomalies, user experience inconsistencies, and many other difficulties can be identified early and worked around before they become real problems. This exchange should take place twice: before and after implementation. Before implementation, at least a rudimentary concept regarding data model and software architecture should always be developed and discussed in the team. This way, gross errors can be avoided, which would have to be corrected again at greater expense later on. Nevertheless, consultation is absolutely necessary even after implementation, during which, as we all know, not everything always goes according to plan. In many teams, this is done as part of the obligatory code review, in which solution approaches are questioned and improved. During team exchanges, you should never hesitate to ask questions. Only those who understand the context and background of a solution can derive profound knowledge from it and transfer it to future situations. Therefore, it is particularly important to always justify why something should be solved in a certain way. Answers to the “Why?” question are precisely the impulses that allow your wealth of experience to grow bit by bit.
Reflect and document
We do not consciously perceive many of our learning experiences in daily life. Some of them, for example an annoying error message, are disruptive to progress and we are glad when it is off the table. But unless the solution was the top-ranking answer on Google, then we invested resources into this experience, and it would be a pity if it was immediately forgotten again. In other cases, lack of experience even leads to quality defects in software. An incorrectly chosen data type can lead to unnecessary memory consumption and an inadequate unit test can lead to error behavior in the logic. Often such errors are corrected and considered done, but if this moment is passed over too quickly then you the risk that it will be repeated in the future. In many cases, it would be worthwhile to preserve this knowledge by documenting it, in order to benefit from it in the future. With documentation, (written by the whole team or you alone) learning experiences are consciously perceived, reflected, and thanks to this process, permanently stored, or at least retrievable. This way, you distill valuable moments from your daily work and will benefit from them in the future by proactively incorporating this knowledge into your solutions. Admittedly, it isn’t easy and takes some practice to find the right moments for documentation. As a rule of thumb, you should generally think about documenting challenges that have to be solved differently than planned, have unexpectedly taken up a lot of time, or will be repeated in the future.
In our profession, we want to experience success. At the same time, however, our subconscious tends to want to protect us from too much effort and unpleasant situations. As a result, we often seek success in areas in which we already know and feel comfortable. But in precisely these areas, we already have a wealth of experience that we can only expand on a small scale. Growth is only possible if we venture out of this comfort zone into unknown territory. And that’s exactly what you should do on a regular basis. Only by renewing the status quo will your experience be able to grow, along with the quality of your solutions. Have you been developing frontends with jQuery for years now? Are you really fast and do you rarely make mistakes? That’s good, but still you shouldn’t miss the opportunity to take a look at one of the newer single-page application frameworks like Vue.js, AngularJS, or React. With these, you could likely develop even faster, more stable, and user-friendly applications after sufficient training. This is just one example of many possible new challenges. They are an engine for the expansion of your wealth of experience and you should consciously face them again and again, even if you have to leave your comfort zone.
How much experience you gain in a given period of time is largely up to you. By thinking outside the box, benefiting from the experience of other developers, and documenting regularly, you can control and accelerate this process, giving your software development career a new thrill every time.
Gain practical experience in software development faster and better
- Develop interesting projects in your spare time
- Learn from your team and encourage exchange
- Regularly reflect on experiences and document essential learning experiences
- Regularly face new challenges and think outside the box