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
AbstractGenerative 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.
SummaryDaniotti 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 FindingBy 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
NotesarXiv: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