Job Market Analytics: AI/ML vs General IT Trends - Final Report¶

Analysis Period: 2023-2024


Executive Summary¶

This comprehensive analysis examines the evolution of job postings in the technology sector, specifically comparing AI/Machine Learning roles against traditional General IT positions. Using data collected from multiple sources (Hacker News job boards and Adzuna API), analyzed over 4,000 technology job postings to understand market trends, growth patterns, and company positioning in the AI hiring landscape.

Key Findings:¶

Research Question: Is the job market for AI/ML roles growing faster than traditional IT roles?

Our analysis reveals important insights about the current state and trajectory of the tech job market.

1. Introduction & Hypothesis¶

1.1 Background¶

The rapid advancement of artificial intelligence and machine learning technologies has sparked significant interest in understanding how these developments are reshaping the technology job market. As AI capabilities expand, questions arise about:

  • Are companies increasingly hiring for AI/ML-specific roles?
  • How does AI/ML hiring compare to traditional IT hiring?
  • Which companies are leading AI/ML talent acquisition?
  • What does this trend mean for tech workforce planning?

1.2 Research Hypothesis¶

Primary Hypothesis:

The job market for AI/ML roles is experiencing faster growth compared to traditional General IT roles, indicating a structural shift in technology workforce demands.

Sub-Hypotheses:

  1. AI/ML job postings show a positive month-over-month growth trend
  2. The ratio of AI/ML to General IT roles is increasing over time
  3. Certain companies disproportionately hire for AI/ML roles (>50% of tech postings)
  4. Growth trends are statistically significant and not due to random variation

1.3 Research Questions¶

  1. What is the overall growth trajectory of AI/ML vs General IT job postings?
  2. When did significant divergence between AI and IT hiring trends occur (inflection points)?
  3. Which companies are driving AI/ML hiring demand?
  4. Are observed trends statistically significant?
  5. What percentage of the tech job market do AI/ML roles represent?

2. Methodology¶

2.1 Data Collection¶

Data Sources:

  • Hacker News "Who is hiring?" threads (Oct 2023, Mar 2024, May 2024, Jul 2024, Oct 2024)
  • Adzuna Job Search API (2023-2024 technology job postings)

Collection Method:

# Web scraping for Hacker News
from bs4 import BeautifulSoup
import requests

def scrape_hn_thread(thread_id):
    # Fetch and parse HTML
    # Extract job postings from comments
    # Structure: company, role, location, description
    pass

# API integration for Adzuna
import requests

def fetch_adzuna_jobs(params):
    endpoint = "https://api.adzuna.com/v1/api/jobs"
    # Query with tech-related keywords
    # Paginate through results
    # Checkpoint saves for reliability
    pass

Sample Size:

  • Total records collected: ~8,300+
  • After cleaning: 4,137 technology job postings
  • Date range: October 2023 - October 2024 (13 months)

2.2 Data Cleaning Pipeline¶

Key Steps:

  1. Deduplication: Remove duplicate postings based on company + role + location
  2. Date standardization: Convert various date formats to unified datetime
  3. Missing value handling: Drop records with missing critical fields (role, company)
  4. Category filtering: Focus on technology sector jobs
  5. Text preprocessing: Standardize company names, clean descriptions
# Example cleaning workflow
df = df.drop_duplicates(subset=['company', 'role', 'location'])
df['posting_date'] = pd.to_datetime(df['posting_date'])
df = df.dropna(subset=['role', 'company', 'description'])
df['company_clean'] = df['company'].apply(standardize_company_name)

2.3 Job Categorization¶

Categorization Algorithm:

Jobs were classified into four categories using a keyword-based scoring system:

  1. AI/ML Roles: Machine learning engineers, data scientists, AI researchers
  2. General IT Roles: Software engineers, DevOps, web developers, cloud engineers
  3. Hybrid Roles: MLOps engineers, AI platform engineers (both AI + IT skills)
  4. Non-Tech Roles: Healthcare, retail, administrative positions

Scoring Methodology:

def categorize_job_role(role, description):
    # Calculate AI/ML score (0-100)
    ai_score = calculate_ai_ml_score(role, description)
    # Role title keywords: 30 points each
    # Technology keywords: up to 20 points
    # Task keywords: up to 20 points

    # Calculate IT score (0-100)
    it_score = calculate_it_score(role, description)
    # Role title keywords: 25 points each
    # Technology stack: up to 45 points total

    # Classification thresholds
    AI_THRESHOLD = 30
    IT_THRESHOLD = 25

    # Return category based on scores
    if ai_score >= AI_THRESHOLD and it_score >= IT_THRESHOLD:
        return 'Hybrid'
    elif ai_score >= AI_THRESHOLD:
        return 'AI/ML'
    elif it_score >= IT_THRESHOLD:
        return 'General IT'
    else:
        return 'Non-Tech'

Keyword Sets:

  • AI/ML: TensorFlow, PyTorch, machine learning, neural network, LLM, computer vision (60+ patterns)
  • General IT: React, Node.js, Kubernetes, Docker, AWS, microservices (70+ patterns)
  • Hybrid indicators: MLOps, AI infrastructure, model serving (7 patterns)

2.4 Time Series Analysis¶

Statistical Methods Applied:

  1. Linear Regression: Trend line fitting to determine growth slopes
  2. Mann-Kendall Test: Non-parametric test for monotonic trends
  3. Pearson Correlation: Relationship between time and job posting counts
  4. T-Tests: Comparing first half vs second half of time period
  5. Growth Rate Calculations: Month-over-month percentage changes

Analysis Framework:

# Monthly aggregation
monthly_data = df.groupby(['year_month', 'role_category']).size()

# Growth rate calculation
mom_growth = monthly_data.pct_change() * 100

# Statistical significance
from scipy import stats
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)

3. Key Findings¶

3.1 Load Analysis Results¶

In [ ]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import Image, display
import warnings
warnings.filterwarnings('ignore')

plt.style.use('seaborn-v0_8-darkgrid')
pd.set_option('display.max_columns', None)

monthly_summary = pd.read_csv('data/processed/monthly_time_series_summary.csv', index_col=0)
monthly_summary.index = pd.to_datetime(monthly_summary.index)

print(" Analysis results loaded")
print(f"   Months of data: {len(monthly_summary)}")
print(f"\n Summary Statistics:")
print(monthly_summary[['AI/ML', 'General IT', 'Hybrid', 'Total']].describe())

3.2 Market Composition¶

Overall Distribution:

In [ ]:
total_ai = monthly_summary['AI/ML'].sum()
total_it = monthly_summary['General IT'].sum()
total_hybrid = monthly_summary['Hybrid'].sum()
total_tech = total_ai + total_it + total_hybrid

print(" MARKET SHARE ANALYSIS")
print("="*60)
print(f"\nTotal Technology Job Postings: {total_tech:,}")
print(f"\nBreakdown:")
print(f"  • AI/ML:       {total_ai:>5,} jobs ({(total_ai/total_tech)*100:>5.1f}%)")
print(f"  • General IT:  {total_it:>5,} jobs ({(total_it/total_tech)*100:>5.1f}%)")
print(f"  • Hybrid:      {total_hybrid:>5,} jobs ({(total_hybrid/total_tech)*100:>5.1f}%)")

print(f"\nKey Metric:")
print(f"  AI:IT Ratio = {total_ai/total_it:.3f}:1")
print(f"  (For every {int(total_it/total_ai)} General IT jobs, there is 1 AI/ML job)")

3.3 Executive Dashboard¶

Comprehensive one-page summary of all findings:

In [ ]:
display(Image(filename='data/processed/executive_dashboard.png'))

3.4 Detailed Trend Analysis¶

Finding #1: Time Series Trends

In [ ]:
print(" TREND ANALYSIS\n" + "="*60)

display(Image(filename='data/processed/time_series_trends.png'))

print("\nObservations:")
print("  • Both AI/ML and General IT show temporal variation")
print("  • Hybrid roles represent emerging category")
print("  • Clear visualization of market composition over time")

Finding #2: Company Positioning

In [ ]:
print(" COMPANY ANALYSIS\n" + "="*60)

display(Image(filename='data/processed/top_ai_companies.png'))

print("\nTop AI/ML Hiring Companies:")
print("  • Identifies market leaders in AI talent acquisition")
print("  • Shows concentration of AI hiring among specific companies")
print("  • Useful for understanding industry AI adoption patterns")

Finding #3: Company AI Positioning Landscape

In [ ]:
display(Image(filename='data/processed/company_positioning_scatter.png'))

print("\nKey Insights:")
print("  • Bubble size represents total hiring volume")
print("  • Y-axis shows % of AI roles (higher = more AI-focused)")
print("  • Companies above 50% line are AI-heavy")
print("  • Identifies strategic positioning: AI-first vs traditional IT")

4. Statistical Validation¶

4.1 Growth Rate Analysis¶

In [ ]:
from scipy import stats

print(" STATISTICAL ANALYSIS\n" + "="*60)

monthly_summary['month_numeric'] = range(len(monthly_summary))

ai_slope, ai_intercept, ai_r, ai_p, ai_stderr = stats.linregress(
    monthly_summary['month_numeric'], 
    monthly_summary['AI/ML']
)

it_slope, it_intercept, it_r, it_p, it_stderr = stats.linregress(
    monthly_summary['month_numeric'],
    monthly_summary['General IT']
)

print("\n1. Linear Regression Results:")
print(f"\n   AI/ML Trend:")
print(f"      Slope: {ai_slope:+.2f} jobs/month")
print(f"      R²: {ai_r**2:.4f}")
print(f"      P-value: {ai_p:.4f}")
print(f"      Significance: {' Significant' if ai_p < 0.05 else ' Not significant'} (α=0.05)")

print(f"\n   General IT Trend:")
print(f"      Slope: {it_slope:+.2f} jobs/month")
print(f"      R²: {it_r**2:.4f}")
print(f"      P-value: {it_p:.4f}")
print(f"      Significance: {' Significant' if it_p < 0.05 else ' Not significant'} (α=0.05)")

print(f"\n2. Comparative Growth:")
if ai_slope > it_slope:
    print(f"    AI/ML growing FASTER than General IT")
    print(f"    Difference: {ai_slope - it_slope:+.2f} jobs/month")
else:
    print(f"    General IT growing faster than AI/ML")
    print(f"    Difference: {it_slope - ai_slope:+.2f} jobs/month")

print(f"\n3. Average Month-over-Month Growth:")
avg_ai_mom = monthly_summary['AI_ML_MoM_%'].mean()
avg_it_mom = monthly_summary['General_IT_MoM_%'].mean()
print(f"   AI/ML: {avg_ai_mom:.1f}% per month")
print(f"   General IT: {avg_it_mom:.1f}% per month")

4.2 Hypothesis Testing Results¶

In [ ]:
print(" HYPOTHESIS TESTING RESULTS\n" + "="*60)

print("\n**Primary Hypothesis:**")
print("'AI/ML roles growing faster than General IT roles'")
if ai_slope > it_slope:
    print(" SUPPORTED by data")
    print(f"   Evidence: AI slope ({ai_slope:+.2f}) > IT slope ({it_slope:+.2f})")
else:
    print(" NOT SUPPORTED by data")
    print(f"   Evidence: IT slope ({it_slope:+.2f}) > AI slope ({ai_slope:+.2f})")

print("\n**Sub-Hypothesis 1:**")
print("'AI/ML shows positive growth trend'")
if ai_slope > 0:
    print(f" SUPPORTED (slope = {ai_slope:+.2f})")
else:
    print(f" NOT SUPPORTED (slope = {ai_slope:+.2f})")

print("\n**Sub-Hypothesis 2:**")
print("'AI:IT ratio increasing over time'")
ratio_first = monthly_summary['AI_IT_ratio'].iloc[0]
ratio_last = monthly_summary['AI_IT_ratio'].iloc[-1]
ratio_change = ratio_last - ratio_first
if ratio_change > 0:
    print(f" SUPPORTED ({ratio_first:.3f}  {ratio_last:.3f}, +{ratio_change:.3f})")
else:
    print(f" NOT SUPPORTED ({ratio_first:.3f}  {ratio_last:.3f}, {ratio_change:.3f})")

print("\n**Sub-Hypothesis 4:**")
print("'Trends are statistically significant'")
alpha = 0.05
if ai_p < alpha or it_p < alpha:
    print(f" PARTIALLY SUPPORTED")
    print(f"   AI p-value: {ai_p:.4f} ({'significant' if ai_p < alpha else 'not significant'})")
    print(f"   IT p-value: {it_p:.4f} ({'significant' if it_p < alpha else 'not significant'})")
else:
    print(f" NOT SUPPORTED (need more data)")
    print(f"   Both p-values > {alpha}")

5. Limitations & Considerations¶

5.1 Data Collection Limitations¶

1. Sample Size & Duration

  • Limited timeframe: 13 months (Oct 2023 - Oct 2024) may not capture long-term trends
  • Sample size: 4,137 tech jobs is representative but not comprehensive of entire market
  • Seasonal effects: Hiring patterns may vary by season (not fully captured)
  • Recommendation: Extend study to 24+ months for stronger trend detection

2. Data Source Bias

  • Hacker News: Skews toward startups and tech-forward companies
  • Adzuna API: May not include all job boards (LinkedIn, Indeed, company sites)
  • Geographic bias: Primarily US-based postings
  • Missing: Enterprise jobs often not publicly listed
  • Impact: Results may over-represent certain company types or regions

3. Date Accuracy

  • Scraping date vs posting date: Some records use collection date not original post date
  • Retroactive listings: Jobs may have been posted earlier than captured
  • Mitigation: Used posting_date field when available, otherwise scraped_date

5.2 Categorization Limitations¶

1. Keyword-Based Approach

  • False positives: "Software Engineer" at AI company ≠ AI role
  • False negatives: AI roles with generic titles may be miscategorized
  • Context limitations: Job descriptions vary in detail and clarity
  • Alternative: Manual labeling would be more accurate but not scalable

2. Category Boundaries

  • Hybrid category: Subjective threshold for mixed roles
  • Evolving roles: New role types (e.g., "Prompt Engineer") may not fit cleanly
  • Technology overlap: Many IT roles now involve some ML/AI tools

3. Validation

  • No ground truth: No external validation dataset available
  • Consistency check: Used has_ai_keywords flag for cross-validation
  • Future work: Expert review of random sample for accuracy assessment

5.3 Statistical Limitations¶

1. Small Sample Size Effects

  • Monthly counts: Some months have <100 jobs per category
  • Statistical power: Limited power to detect small effects
  • P-values: May be inflated due to small n
  • Confidence: Results should be interpreted with appropriate caution

2. Confounding Variables

  • Economic conditions: Job market influenced by economy, not just AI trends
  • Company lifecycle: Startup vs established company hiring patterns differ
  • Industry sectors: Tech, healthcare, finance have different AI adoption rates
  • Uncontrolled: Cannot isolate AI trend from broader market forces

3. Time Series Assumptions

  • Stationarity: Assumed but not formally tested
  • Autocorrelation: Monthly data points may not be independent
  • Trend changes: Linear model may oversimplify complex dynamics

5.4 External Validity¶

1. Generalizability

  • Job boards ≠ all hiring: Many roles filled through referrals, recruiters
  • Public vs private: This captures public job listings only
  • Tech sector focus: Not generalizable to non-tech industries
  • Geographic scope: Results specific to US/English-speaking markets

2. Temporal Validity

  • Snapshot in time: Tech landscape changes rapidly
  • AI hype cycle: Current results may reflect temporary AI enthusiasm
  • Future uncertainty: Past trends don't guarantee future patterns

5.5 Recommendations for Future Research¶

Methodological Improvements:

  1. Extend data collection to 24-36 months for stronger trends
  2. Add data sources (LinkedIn, Indeed, Glassdoor, company career pages)
  3. Implement ML classification using pre-trained language models (BERT, GPT)
  4. Manual validation of random sample (n=500) by domain experts
  5. Geographic analysis by region, country, city
  6. Salary analysis to understand compensation trends
  7. Skills analysis to identify most in-demand technologies
  8. Company lifecycle analysis (startup vs established correlation with AI hiring)

Analysis Enhancements:

  1. Causal inference methods to isolate AI adoption effects
  2. Sentiment analysis of job descriptions for urgency/requirements
  3. Network analysis of company hiring ecosystems
  4. Predictive modeling for future hiring trends
  5. Comparative analysis across industries (tech vs healthcare vs finance)

6. Conclusions¶

6.1 Summary of Findings¶

This analysis examined technology job market trends comparing AI/ML roles to General IT positions using 4,137 job postings collected over 13 months (October 2023 - October 2024).

Key Results:

  1. Market Composition

    • AI/ML roles represent a meaningful but minority share of tech job market
    • General IT roles continue to dominate overall tech hiring
    • Hybrid roles (MLOps, AI Platform) emerging as distinct category
  2. Growth Patterns

    • Analysis revealed comparative growth patterns between categories
    • Month-over-month volatility indicates dynamic market conditions
    • Trends show the evolution of tech workforce demands
  3. Company Landscape

    • Clear stratification between AI-heavy and traditional IT companies
    • Top companies demonstrate varying strategic AI priorities
    • Market leaders in AI hiring identified and characterized
  4. Statistical Evidence

    • Statistical tests provide quantitative support for observations
    • Trend significance varies by category and timeframe
    • Results contextualized within limitations of sample size

6.2 Implications¶

For Job Seekers:

  • Skills investment: Consider hybrid skillset (IT infrastructure + ML knowledge)
  • Career positioning: Understand which companies prioritize AI hiring
  • Market awareness: Track evolving job title trends and requirements

For Employers:

  • Talent competition: AI/ML hiring is competitive - differentiation required
  • Role definitions: Clear distinction between AI/ML and IT-with-AI-tools roles
  • Strategic planning: Workforce composition signals organizational AI maturity

For Educators:

  • Curriculum development: Balance traditional IT skills with AI/ML fundamentals
  • Program design: Consider hybrid programs that bridge domains
  • Industry alignment: Track market demands to inform course offerings

6.3 Future Work¶

Immediate Next Steps:

  1. Extend data collection to 24+ months
  2. Add LinkedIn and Indeed data sources
  3. Implement advanced NLP classification
  4. Conduct expert validation study

Long-term Research Directions:

  1. Predictive modeling of future hiring trends
  2. Salary and compensation analysis
  3. Required skills extraction and trend analysis
  4. Geographic and industry-specific deep dives
  5. Impact of AI tools (ChatGPT, Copilot) on job requirements

6.4 Final Thoughts¶

The technology job market is undergoing significant transformation as AI/ML capabilities advance. While it's premature to declare a wholesale shift from traditional IT to AI roles, clear patterns emerge:

AI/ML roles are establishing themselves as a distinct, growing segment
Companies are stratifying into AI-heavy vs traditional IT approaches
Hybrid roles bridging IT and AI are emerging
Market dynamics remain fluid with significant month-to-month variation

Understanding these trends helps stakeholders—whether job seekers, employers, or educators—make informed decisions in a rapidly evolving technology landscape.

The data suggests we are in the midst of a gradual evolution rather than a sudden revolution in tech workforce composition.


6.5 Acknowledgments¶

Data Sources:

  • Hacker News "Who is hiring?" community
  • Adzuna Job Search API
  • Open-source Python libraries (Pandas, NumPy, Matplotlib, Scipy)

Tools & Technologies:

  • Python 3.11
  • Jupyter Notebooks
  • BeautifulSoup for web scraping
  • Pandas for data manipulation
  • Matplotlib for visualization
  • Scipy for statistical analysis

Appendix: Reproducibility¶

A. Repository Structure¶

Job-Market-Analytics/
 notebooks/
    01_scraping_hackernews.ipynb
    02_api_data_collection.ipynb
    03_data_cleaning.ipynb
    04_company_standardization.ipynb
    05_job_role_categorization.ipynb
    06_time_series_analysis.ipynb
    07_final_report.ipynb
 data/
    raw/
    processed/
 requirements.txt
 README.md

B. Execution Instructions¶

Step 1: Install dependencies

pip install -r requirements.txt

Step 2: Run notebooks in sequence

jupyter notebook notebooks/01_scraping_hackernews.ipynb
# ... continue through 07_final_report.ipynb

Step 3: Review outputs

  • Processed data: data/processed/
  • Visualizations: data/processed/*.png
  • Summary statistics: data/processed/*.csv

C. Key Files¶

Data Files:

  • categorized_jobs.csv - Main dataset with role categories
  • monthly_time_series_summary.csv - Aggregated monthly statistics

Visualizations:

  • executive_dashboard.png - Comprehensive one-page summary
  • time_series_trends.png - AI vs IT over time
  • top_ai_companies.png - Top 10 AI hiring companies
  • company_positioning_scatter.png - Company AI positioning landscape

Report End