diff --git a/productivity.html b/productivity.html index 9422c4f..94a8bb5 100644 --- a/productivity.html +++ b/productivity.html @@ -34,7 +34,13 @@

That said, productivity is not just about individual developers. Because communication is a key part of team productivity, an individual's productivity is as much determined by their ability to collaborate and communicate with other developers. In a study spanning dozens of interviews with senior software engineers, Li et al. found that the majority of critical attributes for software engineering skill (productivity included) concerned their interpersonal skills, their communication skills, and their ability to be resourceful within their organization (Li et al. 2015). Similarly, LaToza et al. found that the primary bottleneck in productivity was communication with teammates, primarily because waiting for replies was slower than just looking something up (LaToza et al. 2006). Of course, looking something up has its own problems. While StackOverflow is an incredible resource for missing documentation (Mamykina et al. 2001), it also is full of all kinds of misleading and incorrect information contributed by developers without sufficient expertise to answer questions (Barua et la. 2014). Finally, because communication is such a critical part of retrieving information, adding more developers to a team has surprising effects. One study found that adding people to a team slowly enough to allow them to onboard effectively could reduce defects, but adding them too fast led to increases in defects (Meneely et al. 2011).

-

Another dimension of productivity is learning. Great engineers are resourceful, quick learners (Li et al. 2015); new engineers must be even more resourceful, even though their instincts are often to hide their lack of expertise from exactly the people they need help from (Begel & Simon 2008). Experienced developers know that learning is important and now rely heavily on social media such as Twitter to follow industry changes, build learning relationships, and discover new concepts and platforms to learn (Singer et al. 2012).

+

+ Another dimension of productivity is learning. + Great engineers are resourceful, quick learners (Li et al. 2015). + New engineers must be even more resourceful, even though their instincts are often to hide their lack of expertise from exactly the people they need help from (Begel & Simon 2008). + Experienced developers know that learning is important and now rely heavily on social media such as Twitter to follow industry changes, build learning relationships, and discover new concepts and platforms to learn (Singer et al. 2012). + And, of course, developers now rely heavily on web search to fill in inevitable gaps in their knowledge about APIs, error messages, and myriad other details about languages and platforms (Xia et al. 2017). +

Unfortunately, learning is no easy task. One of my earliest studies as a researcher investigated the barriers to learning new programming languages and systems, finding six distinct types of content that are challenging (Ko & Myers 2004). To use a programming platform successfully, people need to overcome design barriers, which are the abstract computational problems that must be solved, independent of the languages and APIs. People need to overcome selection barriers, which involve finding the right abstractions or APIs to achieve the design they have identified. People need to overcome use and coordination barriers, which involve operating and coordinating different parts of a language or API together to achieve novel functionality. People need to overcome comprehension barriers, which involve knowing what can go wrong when using part of a language or API. And finally, people need to overcome information barriers, which are posed by the limited ability of tools to inspect a program's behavior at runtime during debugging. Every single one of these barriers has its own challenges, and developers encounter them every time they are learning a new platform, regardless of how much expertise they have.

@@ -81,6 +87,7 @@

Leif Singer, Fernando Figueira Filho, and Margaret-Anne Storey. 2014. Software engineering at the speed of light: how developers stay current using twitter. In Proceedings of the 36th International Conference on Software Engineering (ICSE 2014). ACM, New York, NY, USA, 211-221.

Jeffrey Stylos and Brad A. Myers. 2008. The implications of method placement on API learnability. In Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering (SIGSOFT '08/FSE-16). ACM, New York, NY, USA, 105-112.

J. Vosburgh, B. Curtis, R. Wolverton, B. Albert, H. Malec, S. Hoben, and Y. Liu. 1984. Productivity factors and programming environments. In Proceedings of the 7th international conference on Software engineering (ICSE '84). IEEE Press, Piscataway, NJ, USA, 143-152.

+

Xia, X., Bao, L., Lo, D., Kochhar, P. S., Hassan, A. E., & Xing, Z. (2017). What do developers search for on the web? Empirical Software Engineering, 22(6), 3149-3185.