Daniel Pinho

§ 16 It Takes A Village

Context

Just like with any other type of software, one must learn how to use a development tool and make use of its features, processes and capabilities, acquiring the Adequate Skills necessary for effective use.

Problem

A developer can develop their skills through various means, whether through Practice Makes Perfect, Written Knowledge, or even Learning From A Master. However, regardless of their chosen learning method, an issue arrives when it comes to seeking out the ideal sources of knowledge.

How can we find pertinent knowledge to develop our skills?

Forces

  • Prior knowledge can help developers recognise the right resources for learning, but existing mental models can bring bias into the mix, making developers filter out potentially useful resources.
  • Popular tools often have a diverse ecosystem of information from both their makers and tools, but niche or fast-evolving tools require a greater effort to find relevant information.
  • Depending on our resources, we may want to make use of free, community-driven materials, but official or structured resources can provide deeper insights while their quality is better ensured.

Solution

Consider joining and being part of the developer community associated with the tools in use, interacting and sharing knowledge with other developers.

Community resources are a cornerstone of knowledge sharing in modern software development. Developers come together organically around tools, frameworks, and programming languages to exchange experiences and ideas. This collected knowledge is valuable due to it not only capturing best practices but also including information that stems from lived experience that comes from real-world use. Learning from these resources enables developers to tap in to this collective experience and find practical solutions to real-world problems.

Software communities create materials that come in many forms, such as discussion forums, blogs, social media channels, and video tutorials. The variety of forms these resources can take supports different types of learners, with some preferring detailed explanations and examples, while others prefer shorter, more interactive exchanges. This variety also accommodates different learning styles and degrees of experience[1][2].

Community spaces can also be more responsive than official documentation regarding emerging issues, with community members providing immediate feedback and bringing novel perspectives into the table.

We can also look at a developer’s team as a local micro-community within the larger one; an atmosphere of Team Players encourages open discussion, includes peer reviews, and can include mentoring. A team where these practices are strongly ingrained fosters knowledge sharing and collaborative problem solving, in turn enhancing individual learning.

Developers can also develop a sense of belonging and agency by participating in a community, as they not only receive information but also generate knowledge. This knowledge can be shared with others (at a team level, but also with the wider community) to help shape a collective understanding of the tools in use. Developers can participate in the community by sharing their experiences, reporting bugs and issues, or publishing their insights. These activities reinforce the developer’s knowledge while potentially being helpful to others.

Examples

  • Forums and question boards, such as Stack Overflow, can provide developers with a personalised access to the community’s knowledge[3].
  • Tutorials and how-to guides provide developers with learning paths towards a specific outcome. These are often text or video-based, providing flexibility to the developers and their preferred learning methods[4].
  • Workshops and other community-led events give developers a way to be in contact with the community, sharing ideas[5].

Consequences

  • Being a part of the community can empower a developer, helping them be more invested in the tool they are using. This can, in turn, assist with improving their Intrinsic Motivation.
  • Community resources are often easily accessible and free, being accessible even to developers with less resources available to them.
  • Developers should be careful about not taking guidance from information that is potentially outdated, as can be the case, for example, for video tutorials. Taking elements such as the date of publication or the version of the tool that is mentioned can help with triaging information.
  • If the tool in question does not have widespread use, the community may not be big enough to sustain a healthy ecosystem of information sharing. In any case, developers can turn to Makers' Guidance for more information about the tool.

Compare and contrast with §17 Makers' Guidance, where knowledge comes from the tool makers. The patterns §13 Practice Makes Perfect, §14 Learning From A Master and §15 Written Knowledge showcase the forms community knowledge can take.


References

  1. J. Brandt, P. J. Guo, J. Lewenstein, M. Dontcheva, and S. R. Klemmer, “Two studies of opportunistic programming: Interleaving web foraging, learning, and writing code,” in Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, in CHI ’09. New York, NY, USA: Association for Computing Machinery, Apr. 2009, pp. 1589–1598. doi: 10.1145/1518701.1518944.
  2. S. Meldrum, S. A. Licorish, and B. T. R. Savarimuthu, “Crowdsourced Knowledge on Stack Overflow: A Systematic Mapping Study,” in Proceedings of the 21st International Conference on Evaluation and Assessment in Software Engineering, in EASE ’17. New York, NY, USA: Association for Computing Machinery, June 2017, pp. 180–185. doi: 10.1145/3084226.3084267.
  3. A. Barua, S. W. Thomas, and A. E. Hassan, “What are developers talking about? An analysis of topics and trends in Stack Overflow,” Empir Software Eng, vol. 19, no. 3, pp. 619–654, June 2014, doi: 10.1007/s10664-012-9231-y.
  4. V. Käfer, D. Kulesz, and S. Wagner, “What Is the Best Way For Developers to Learn New Software Tools? An Empirical Comparison Between a Text and a Video Tutorial,” Programming, vol. 1, no. 2, p. 17, Apr. 2017, doi: 10.22152/programming-journal.org/2017/1/17.
  5. C. Weir, I. Becker, and L. Blair, “Incorporating software security: Using developer workshops to engage product managers,” Empir Software Eng, vol. 28, no. 2, p. 21, Mar. 2023, doi: 10.1007/s10664-022-10252-0.

Last updated: December 18, 2025