This site is a work in progress and has not been widely shared. Content may contain errors. Feedback is welcome.
This site is undergoing review. Some annotations were human-generated, some AI-generated — all are being verified.
Back to papers

Who Is Using AI to Code? Global Diffusion and Impact of Generative AI

Daniotti, Wachs, Feng, Neffke

2026Science1 citations
Adoption / usageInterdisciplinaryCausal
LLM / Generative AISoftware / codingJunior / entry-levelSenior / older workersHuman-AI collaborationAugmentation vs. substitution
Abstract

Generative coding tools promise big productivity gains, but uneven uptake could widen skill and income gaps. We train a neural classifier to spot artificial intelligence (AI)–generated Python functions in more than 30 million GitHub commits by 160,097 software developers, tracking how fast, and where, these tools take hold. Currently, AI writes an estimated 29% of Python functions in the US—a shrinking lead over other countries. We estimate that quarterly output, measured in online code contributions, consequently increased by 3.6%. AI seems to benefit experienced, senior-level developers: They increased productivity and more readily expanded into new domains of software development. By contrast, early-career developers showed no significant benefits from AI adoption. This may widen skill gaps and reshape future career ladders in software development.

Summary

Daniotti et al. train a GraphCodeBERT neural classifier to detect AI-generated Python functions in over 30 million GitHub commits by 170,000 developers across six countries to study adoption patterns and productivity effects of generative AI coding tools.

Main Finding

By late 2024, AI generates an estimated 29% of Python functions in the US, with adoption increasing quarterly output by 3.6%, but productivity and exploration gains concentrate almost exclusively among experienced programmers, widening the skill gap.

Primary Datasets

GitHub commits (2019-2024) for ~100k US developers and 2,000 sampled developers per year in China, France, Germany, India, Russia; HumanEval and HumanEval-X benchmark datasets; WildChat real-world LLM conversations

Secondary Datasets

O*NET Task Ratings 29.2; BLS Occupational Employment and Wage Statistics (OEWS); American Community Survey (ACS) 2023; GitHub Innovation Graph

Key Methods
Machine learning classifier (GraphCodeBERT) to detect AI-generated Python code; user-level panel regression with fixed effects; cross-country adoption rate comparison
Sample Period
2019-2024
Geographic Coverage
International
Sample Size
31 million commits; 5 million Python functions; 170,000 developers (100,097 US users, 2,000 sampled per year in 5 other countries)
Level of Analysis
Individual, Country
Occupation Classification
O*NET SOC codes
Industry Classification
None
Replication Package
Yes
Notes
arXiv:2506.08945 [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations [Claude classification]: arXiv:2506.08945; Uses GraphCodeBERT neural classifier trained on synthetic AI-generated code to detect genAI usage; analyzes 30M+ GitHub commits; classifier achieves 0.96 ROC AUC; compares adoption across 6 countries; also uses LLM prompting (Llama 3.3) to estimate programming intensity of O*NET tasks for wage calculations