Cultivating Continuous Learning for Software Engineers

2023, Aug 16    

Introduction

In the rapidly evolving landscape of technology, the days of engineers being universally passionate and treating tech as a hobby are behind us. After finishing university, nearly every software engineer I encountered in the industry had numerous side projects outside of work hours, driven by a thirst for knowledge. Unfortunately, the dynamics have shifted, and today a significant portion of professionals view software engineering merely as a job, seeking it for its financial rewards rather than intrinsic motivation. This shift has led to a decline in the number of individuals engaging in extra side projects, contributing to open source projects, or participating in tech events.

With the escalating demand for software engineers, companies can no longer rely on cherry-picking those who are proactively upskilling themselves. In the present milieu, it’s imperative to establish a culture of continuous learning within the organization to ensure engineers stay abreast of the latest developments and best practices in the field.

This blog post breaks away from my usual technical content to explore strategies that may foster a culture of learning within your company.

Cultivating Engineering Excellence

While a robust skill set is a desirable trait when hiring engineers, the dynamic nature of the tech industry demands ongoing skill enhancement. Simply hiring a fully qualified engineer doesn’t guarantee their ongoing qualification, as the industry rapidly evolves. Engineers must continually update their skills to align with industry trends.

Strategic Direction

To guide engineers effectively, companies should delineate the forthcoming techniques, tools, platforms, libraries, and frameworks that engineers are expected to master. Furthermore, it’s advantageous to highlight emerging technologies to help engineers prioritize their learning efforts. Offering clear guidance prevents aimless upskilling and ensures that all learning directly contributes to the company’s progress.

Many companies adopt an internal ThoughtWorks tech radar to communicate technologies the company is adopting, testing, or evaluating. This radar aids engineers in pinpointing areas for upskilling that align with the company’s objectives, thus maximizing productivity.

Diverse Learning Approaches

Encouraging a variety of learning techniques tailored to individual preferences is pivotal. Every engineer possesses distinct learning styles, such as a preference for reading books versus learning from videos.

Pair and Mob Programming

Team collaboration is essential to blend diverse engineering skills and elevate the overall proficiency of the team. Consistent pairing and mobbing foster a deeper grasp of various approaches and techniques through continuous collaboration.

In pair or mob programming, it’s crucial to ensure that the driver possesses less expertise in the domain than the navigator. This practice keeps discussions focused on current changes and their rationale.

Sharing Knowledge Across Teams

While pair and mob programming excel at intra-team learning, it’s beneficial to extend this approach throughout the organization. Not every member can participate in joint programming sessions due to resource constraints. Nonetheless, when a team tackles a specific challenge, adopts a more efficient library, or develops new practices, sharing the experience with a broader audience is invaluable.

These presentations often take place in tech town halls, either in person or remotely. Some companies arrange dedicated engineering gatherings, where teams assemble to share insights and conduct workshops. While budget constraints may limit in-person events, remote sessions remain effective, though they lack the post-presentation hallway conversations that deepen understanding.

Hackathons and Innovation Challenges

Devoting time away from regular project work for hackathons can nurture learning and collaboration within engineering teams. Hackathons offer a conducive environment for exploring new technologies and practices unhindered by typical project constraints. Structured hackathons with predefined goals and gamified elements create an exciting atmosphere that encourages learning.

Teams participating in hackathons should present their achievements and the challenges they encountered. This aids the broader organization in comprehending the nuances of applied practices and technologies.

Diverse team compositions within hackathons encourage cross-functional interactions, allowing individuals to connect with colleagues from different areas of the organization.

Meetups and User Groups

Tech meetup groups provide a rich avenue for learning and networking. Encouraging employee participation in these groups promotes communication between developers. The value lies not only in formal presentations but also in casual conversations before or after the events.

Companies can support meetup attendance by covering travel expenses or classifying participation as working hours for later reimbursement.

I personally run 2 in the north of England dotnetsheff and dotnetYork. There are meetups for every variety of tech, the groups also normally get sponsored with free drinks and pizza so it’s a relaxed and inclusive environment.

Conferences

Conferences offer an extended version of the meetup experience, requiring more commitment due to their duration. They provide substantial content and unparalleled networking opportunities. While the cost can be a deterrent, there are budget-friendly single-day conferences with valuable content and networking opportunities.

DDD Events, held in various UK cities, exemplify developer-focused conferences that facilitate learning and networking.

Conferences also serve as team-building opportunities, allowing team members to explore diverse tracks and engage in insightful discussions during breaks.

Dedicated Learning Time (10% time)

Having dedicated learning time is ideal for engineers, that way you can remove the stress of getting features shipped which always pushes back time for learning. Google was known for its “20% time” policy, where employees were allowed to spend 20% of their work time pursuing projects of their own interest, even if those projects were not directly tied to their job roles. This policy led to the development of several successful Google products, including Gmail and Google News.

However, it’s always good to have structured learning time. where I’ve seen this work before is to start the day with a daily standup where everyone talks about what they’re going to try to achieve, people then sometimes pair together to help each other achieve the goals of the dedicated learning time. Then at the end of the day, you report back 5 to 10 mins of how it went. It might not always be a positive result, maybe the technology which you were looking into to improve the testability of the system just wasn’t feasible, then this is still beneficial learning.

Learning Resources

Recognizing diverse learning preferences, providing a range of resources is essential. Engineers have different inclinations, with some favoring technical books, while others prefer online videos. Offering various learning materials ensures inclusivity and caters to individual learning styles.

Possible resources include free books or a book library, subscriptions to platforms like Pluralsight or Udemy, university courses, and access to paywalled blogs and online publications.

Conclusion

In a landscape where software engineering has transitioned from a passion-driven endeavor to a job pursuit, fostering a culture of continuous learning becomes paramount. As the demand for software engineers rises, it is incumbent upon companies to cultivate an environment where engineers can thrive through ongoing skill enhancement. By implementing a blend of strategies tailored to diverse learning styles, companies can create an ecosystem that not only empowers engineers but also propels the business forward in the ever-evolving tech industry.