Learning On: Making Time for New Software Skills
Software development is a fast-paced profession. Technologies you work with and the skills you need are constantly changing. Ongoing learning will help you remain relevant as the industry evolves, as well as be more productive at your job. However, it can be hard to find time for education.
It can be tempting to try establishing “expertise” in new areas quickly. If you are not careful, you may reach a plateau where you think you are an expert. Erik Dietrich describes how developers end up as “expert beginners” rather than moving on to being true experts. His claim is that, while the normal progression is from novice to advanced beginner to competent to proficient and, finally, to expert, some people take a detour after they become competent to what he calls expert beginner.
As he describes it: “The Expert Beginner has nowhere to go because progression requires an understanding that he has a lot of work to do, and that is not a readily available conclusion.” One symptom of this is not interacting with the broader community, thus establishing a route for sanity-checking your true level of expertise.
A cure to the problem can be as simple as starting to have those interactions. The hard part is knowing that you are not actually an expert yet.
Knowing what you don't know can distinguish experienced engineers from less experienced ones. Phillip G. Armour describes this as “the five orders of ignorance.” Knowing that you don’t know everything— and admitting it—also can be powerful.
Misapplying experience and falling back too easily on what worked in the past is another trap. From the perspective of an experienced developer, Gary Wisniewski shares five things that helped him balance what his experience added to his success, and what risks it contributed. Wisniewski explains that while his experience lent him some perspective, he needed to be careful to be open to new ideas and not thoughtlessly cling to things that worked before.
On a more pragmatic side, Will Hughes mentions some things that can help you be more productive, thus allowing for more time to learn. In addition to advice about how to avoid distractions, he points out that one way to learn is to help others. By participating in code reviews, for example, you can force yourself to understand what others are doing, help the team, and help yourself, because your willingness to help others will tend to encourage others to help you.
Among the ways you can continue to learn are reading (about new topics and some classics); participating in communities, both professional and at work, such as by mentoring peers; and organizing technical sharing opportunities.
As software developers, we are in a profession where continuous learning is essential to success. While it can be challenging to fit learning into otherwise hectic days, it is also very rewarding, both professionally and personally.