Close Menu

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    Man on Fire Review (Netflix)

    April 30, 2026

    Elche adelanta a Madrid en inversión de startups, gracias a la operación de PLD Space

    April 30, 2026

    Rohit Sharma’s return timeline revealed as Hardik Pandya gives key fitness update amid MI struggles in IPL 2026

    April 30, 2026
    Facebook X (Twitter) Instagram
    Select Language
    Facebook X (Twitter) Instagram
    NEWS ON CLICK
    Subscribe
    Thursday, April 30
    • Home
      • United States
      • Canada
      • Spain
      • Mexico
    • Top Countries
      • Canada
      • Mexico
      • Spain
      • United States
    • Politics
    • Business
    • Entertainment
    • Fashion
    • Health
    • Science
    • Sports
    • Travel
    NEWS ON CLICK
    Home»Business & Economy»US Business & Economy»Salesforce Hiring 1,000 New Grads Months After Laying Off 1,000
    US Business & Economy

    Salesforce Hiring 1,000 New Grads Months After Laying Off 1,000

    News DeskBy News DeskApril 30, 2026No Comments10 Mins Read
    Share Facebook Twitter Pinterest Copy Link LinkedIn Tumblr Email VKontakte Telegram
    Salesforce Hiring 1,000 New Grads Months After Laying Off 1,000
    Share
    Facebook Twitter Pinterest Email Copy Link




    Salesforce Hiring 1,000 New Grads Months After Laying Off 1,000

























    Skip to main content

    The CEO says new hires will work on AI projects like Agentforce — sparking debate over whether it’s a fire-and-rehire tactic.

    By

    Jonathan Small


    |


    edited by
    Dan Bova


    |


    Apr 29, 2026

    There’s nothing to see here. Salesforce has laid off employees twice in the past year — around 1,000 in February 2025 and fewer than 1,000 in early February 2026. Now CEO Marc Benioff says he wants to hire 1,000 new grads to prove AI isn’t killing entry-level jobs.

    Benioff took to X to announce that Salesforce is hiring 1,000 new graduates and interns to work on AI projects, including Agentforce and Headless 360.

    I’m locked on, @DavidSacks! We’re hiring 1,000 new grads & interns right now to ride the AI exponential. You are right they said AI would kill entry-level jobs. Meanwhile these grads & interns are building it — powering Agentforce & Headless360 at Salesforce. 🚀 New grads: Drop… https://t.co/La6iTWGFYT

    — Marc Benioff (@Benioff) April 25, 2026

    The move came after a Wall Street Journal article showed college graduate hiring is up 5.6% this year, despite warnings that AI could cut up to 50% of entry-level jobs. Benioff has been bullish on AI for months, writing that AI is making Salesforce more valuable, not destroying it

    But the timing sparked debate. Some called it a classic fire-and-rehire tactic. You cut seasoned talent in favor of cheaper new graduates. Others praised the move, saying companies have a duty to provide opportunities for graduates in the AI-driven job market.

    There’s nothing to see here. Salesforce has laid off employees twice in the past year — around 1,000 in February 2025 and fewer than 1,000 in early February 2026. Now CEO Marc Benioff says he wants to hire 1,000 new grads to prove AI isn’t killing entry-level jobs.

    Benioff took to X to announce that Salesforce is hiring 1,000 new graduates and interns to work on AI projects, including Agentforce and Headless 360.

    I’m locked on, @DavidSacks! We’re hiring 1,000 new grads & interns right now to ride the AI exponential. You are right they said AI would kill entry-level jobs. Meanwhile these grads & interns are building it — powering Agentforce & Headless360 at Salesforce. 🚀 New grads: Drop… https://t.co/La6iTWGFYT

    — Marc Benioff (@Benioff) April 25, 2026

    The move came after a Wall Street Journal article showed college graduate hiring is up 5.6% this year, despite warnings that AI could cut up to 50% of entry-level jobs. Benioff has been bullish on AI for months, writing that AI is making Salesforce more valuable, not destroying it

    But the timing sparked debate. Some called it a classic fire-and-rehire tactic. You cut seasoned talent in favor of cheaper new graduates. Others praised the move, saying companies have a duty to provide opportunities for graduates in the AI-driven job market.

    Jonathan Small is a bestselling author, journalist, producer, and podcast host. For 25 years, he… Read more

    ${reply?.comment_author}${reply?.eln_tier_label ? `${reply.eln_tier_label}` : ”}

    •
    ${reply?.comment_relative_time}

    ${reply?.comment_content?.trim()}

    `;
    }

    function createComment(comment, replies, isLastComment) {
    const commentListDiv = document.getElementById(PublicCommentSelectors.LIST);

    if (!commentListDiv) {
    return;
    }

    const borderClasses = isLastComment ? ” : ‘tw:border-b tw:border-slate-200’;

    const currentUser = window?.tp?.pianoId?.getUser() ?? null;
    const currentUserInitials = currentUser
    ? getInitials(`${currentUser?.firstName ?? ”} ${currentUser?.lastName ?? ”}`)
    : ”;

    const repliesHTML = replies.length ? `

    ${replies.map(buildReplyHTML).join(”)}

    ` : ”;

    const replyButtonHTML = allowsComments ? `

    ` : ”;

    const replyFormHTML = allowsComments ? `

    ` : ”;

    const commentDiv = `

    ${comment?.comment_author}${comment?.eln_tier_label ? “ : ”}

    •
    ${comment?.comment_relative_time}

    ${comment?.comment_content?.trim()}

    ${replyButtonHTML}

    ${repliesHTML}
    ${replyFormHTML}

    `;

    commentListDiv.innerHTML += commentDiv;
    }

    function displayComments() {
    // Empty out the comment list container before refreshing comments.
    const commentListDiv = document.getElementById(PublicCommentSelectors.LIST);
    commentListDiv.innerHTML = ”;

    const comments = state?.comments ?? [];

    if (!comments.length) {
    return;
    }

    // Build a threaded structure: separate top-level from replies.
    const repliesByParent = {};
    const topLevelComments = [];

    comments.forEach(comment => {
    if (comment.comment_parent === 0) {
    topLevelComments.push(comment);
    } else {
    const parentId = comment.comment_parent;
    if (!repliesByParent[parentId]) {
    repliesByParent[parentId] = [];
    }
    repliesByParent[parentId].push(comment);
    }
    });

    // Apply top-level sort order. Server returns DESC; reverse for oldest-first.
    if (state.sortOrder === ‘oldest’) {
    topLevelComments.reverse();
    }

    // Replies always show oldest first within a thread (server returns DESC, so reverse).
    Object.keys(repliesByParent).forEach(parentId => {
    repliesByParent[parentId].reverse();
    });

    topLevelComments.forEach((comment, index) => {
    const isLastComment = index === topLevelComments.length – 1;
    const replies = repliesByParent[comment.comment_ID] ?? [];
    createComment(comment, replies, isLastComment);
    });

    createCommentAvatars();
    }

    function updateCommentCount() {
    const countDiv = document.getElementById(PublicCommentSelectors.COMMENT_COUNT);
    const sortControls = document.getElementById(PublicCommentSelectors.SORT_CONTROLS);

    if (!countDiv) {
    return;
    }

    const count = state?.comments?.length ?? 0;

    // Do not display if there are no comments.
    if (count === 0) {
    return;
    }

    countDiv.innerHTML = `${count} Comment${count > 1 ? ‘s’ : ”}`;

    if (sortControls) {
    sortControls.classList.remove(‘tw:hidden’);
    sortControls.classList.add(‘tw:flex’);
    }
    }

    function displayLoader(show) {
    const loader = document.getElementById(PublicCommentSelectors.BUTTON_LOADER);
    const text = document.getElementById(PublicCommentSelectors.BUTTON_TEXT);

    if (!loader || !text) {
    return;
    }

    // Show or hide the loader.
    if (show) {
    loader.classList.remove(‘tw:hidden’);
    text.classList.add(‘tw:hidden’);
    } else {
    loader.classList.add(‘tw:hidden’);
    text.classList.remove(‘tw:hidden’);
    }
    }

    function displayError(error) {
    const errorDiv = document.getElementById(PublicCommentSelectors.ERROR);

    if (!errorDiv) {
    return;
    }

    if (error) {
    errorDiv.classList.add(‘tw:block’);
    errorDiv.classList.remove(‘tw:hidden’);
    errorDiv.textContent = `Comment submission error: ${error}`;
    } else {
    errorDiv.classList.remove(‘tw:block’);
    errorDiv.classList.add(‘tw:hidden’);
    errorDiv.textContent=””;
    }
    }

    function clearCommentInput() {
    const commentField = document.getElementById(PublicCommentSelectors.INPUT);

    if (!commentField) {
    return;
    }

    commentField.value=””;
    }

    function updateComments(comments = []) {
    state.comments = comments;
    displayComments();
    updateCommentCount();
    }

    function runCommentProcess(type) {
    if (type === ‘postComment’) {
    const comment = document.getElementById(PublicCommentSelectors.INPUT);

    if (!comment || !comment?.value) {
    return;
    }

    // Hide errors, show loader.
    displayError();
    displayLoader(true);
    }

    const data = {
    type,
    postId: 426440,
    };

    // Get a fresh nonce and either fetch comments or post comment.
    fetch(`${adminAjaxUrl}?action=ep_get_public_comment_nonce`, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    },
    body: JSON.stringify(data),
    })
    .then((r) => r.json())
    .then((response) => {
    // Handle errors.
    if (!response.success) {
    displayLoader(false);
    console.error(‘Error getting nonce: ‘, response?.data?.message);
    return;
    }

    const nonce = response?.data?.nonce;

    // Get comments.
    if (type === ‘getComments’) {
    getComments(nonce);
    return;
    }

    // Post comment.
    if (type === ‘postComment’) {
    postComment(nonce);
    }
    })
    .catch((e) => {
    displayLoader(false);
    console.error(`Error running comment process ${type}: `, e);
    });
    }

    function getComments(nonce) {
    const data = {
    nonce,
    postId: 426440,
    };

    // Fetch comments.
    fetch(`${adminAjaxUrl}?action=ep_get_public_comments`, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    },
    body: JSON.stringify(data),
    })
    .then((r) => r.json())
    .then((response) => {
    // Handle errors.
    if (!response.success) {
    displayLoader(false);
    console.error(‘Error getting comments: ‘, response?.data?.message);
    return;
    }

    updateComments(response?.data?.comments);
    displayLoader(false);
    })
    .catch((e) => {
    displayLoader(false);
    console.error(‘Error getting comments: ‘, e);
    });
    }

    function postComment(nonce) {
    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user || !user?.uid) {
    console.error(‘Error posting comment: Unauthorized. Submission aborted.’);
    return;
    }

    const comment = document.getElementById(PublicCommentSelectors.INPUT);

    if (!comment || !comment?.value) {
    return;
    }

    const data = {
    nonce,
    comment: comment.value,
    commentParent: 0,
    postId: 426440,
    uid: user?.uid,
    };

    // Post the comment.
    fetch(`${adminAjaxUrl}?action=ep_create_public_comment`, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    },
    credentials: ‘include’,
    body: JSON.stringify(data),
    })
    .then((r) => r.json())
    .then((response) => {
    // Handle errors.
    if (!response.success) {
    displayLoader(false);
    displayError(response?.data?.message, true);
    console.error(‘Error posting comment: ‘, response?.data?.message);
    return;
    }

    // Handle success.
    clearCommentInput();
    runCommentProcess(‘getComments’);
    })
    .catch((e) => {
    displayLoader(false);
    displayError(e);
    console.error(‘Error posting comment: ‘, e);
    });
    }

    function toggleReplyForm(commentId) {
    // Close any other open reply forms.
    document.querySelectorAll(‘.ep-reply-form’).forEach(function(form) {
    if (form.dataset.parentId !== String(commentId)) {
    form.classList.add(‘tw:hidden’);
    }
    });

    // Toggle the targeted reply form.
    const targetForm = document.querySelector(‘.ep-reply-form[data-parent-id=”‘ + commentId + ‘”]’);

    if (targetForm) {
    targetForm.classList.toggle(‘tw:hidden’);

    if (!targetForm.classList.contains(‘tw:hidden’)) {
    targetForm.querySelector(‘.ep-reply-input’)?.focus();
    }
    }
    }

    function setReplyLoading(formEl, isLoading) {
    const btn = formEl.querySelector(‘.ep-reply-submit’);
    const btnText = formEl.querySelector(‘.ep-reply-button-text’);

    if (!btn || !btnText) {
    return;
    }

    if (isLoading) {
    btnText.textContent=”Posting…”;
    btn.disabled = true;
    } else {
    btnText.textContent=”Post Reply”;
    btn.disabled = false;
    }
    }

    function displayReplyError(formEl, error) {
    const errorDiv = formEl.querySelector(‘.ep-reply-error’);

    if (!errorDiv || !error) {
    return;
    }

    errorDiv.textContent=”Reply error: ” + error;
    errorDiv.classList.remove(‘tw:hidden’);
    errorDiv.classList.add(‘tw:block’);
    }

    function clearReplyError(formEl) {
    const errorDiv = formEl.querySelector(‘.ep-reply-error’);

    if (!errorDiv) {
    return;
    }

    errorDiv.textContent=””;
    errorDiv.classList.add(‘tw:hidden’);
    errorDiv.classList.remove(‘tw:block’);
    }

    function postReply(nonce, parentId, replyText, formEl) {
    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user || !user?.uid) {
    setReplyLoading(formEl, false);
    return;
    }

    const data = {
    nonce,
    comment: replyText,
    commentParent: parentId,
    postId: 426440,
    uid: user?.uid,
    };

    fetch(`${adminAjaxUrl}?action=ep_create_public_comment`, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    },
    credentials: ‘include’,
    body: JSON.stringify(data),
    })
    .then((r) => r.json())
    .then((response) => {
    setReplyLoading(formEl, false);

    if (!response.success) {
    displayReplyError(formEl, response?.data?.message);
    console.error(‘Error posting reply: ‘, response?.data?.message);
    return;
    }

    formEl.querySelector(‘.ep-reply-input’).value=””;
    formEl.classList.add(‘tw:hidden’);
    runCommentProcess(‘getComments’);
    })
    .catch((e) => {
    setReplyLoading(formEl, false);
    displayReplyError(formEl, ‘Network error. Please try again.’);
    console.error(‘Error posting reply: ‘, e);
    });
    }

    function submitReply(parentId, formEl) {
    const input = formEl.querySelector(‘.ep-reply-input’);

    if (!input || !input.value.trim()) {
    return;
    }

    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user || !user?.uid) {
    openLoginModal();
    return;
    }

    setReplyLoading(formEl, true);
    clearReplyError(formEl);

    const data = {
    type: ‘postComment’,
    postId: 426440,
    };

    fetch(`${adminAjaxUrl}?action=ep_get_public_comment_nonce`, {
    method: ‘POST’,
    headers: {
    ‘Content-Type’: ‘application/json’,
    },
    body: JSON.stringify(data),
    })
    .then((r) => r.json())
    .then((response) => {
    if (!response.success) {
    setReplyLoading(formEl, false);
    displayReplyError(formEl, response?.data?.message);
    return;
    }

    postReply(response?.data?.nonce, parseInt(parentId, 10), input.value.trim(), formEl);
    })
    .catch((e) => {
    setReplyLoading(formEl, false);
    displayReplyError(formEl, ‘Network error. Please try again.’);
    console.error(‘Error getting nonce for reply: ‘, e);
    });
    }

    function setupCommentListDelegation() {
    const commentListDiv = document.getElementById(PublicCommentSelectors.LIST);

    if (!commentListDiv) {
    return;
    }

    commentListDiv.addEventListener(‘click’, function(e) {
    // Reply button: toggle the inline reply form.
    const replyButton = e.target.closest(‘.’ + PublicCommentSelectors.REPLY_BUTTON);
    if (replyButton) {
    const commentId = replyButton.dataset.commentId;
    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user) {
    openLoginModal();
    return;
    }

    toggleReplyForm(commentId);
    return;
    }

    // Reply cancel: hide the reply form.
    const replyCancel = e.target.closest(‘.ep-reply-cancel’);
    if (replyCancel) {
    const parentId = replyCancel.dataset.parentId;
    const form = document.querySelector(‘.ep-reply-form[data-parent-id=”‘ + parentId + ‘”]’);
    if (form) {
    form.classList.add(‘tw:hidden’);
    }
    return;
    }

    // Reply submit: post the reply.
    const replySubmit = e.target.closest(‘.ep-reply-submit’);
    if (replySubmit) {
    const parentId = replySubmit.dataset.parentId;
    const form = document.querySelector(‘.ep-reply-form[data-parent-id=”‘ + parentId + ‘”]’);
    if (form) {
    submitReply(parentId, form);
    }
    }
    });
    }

    function setupUserAvatar() {
    const usernameDiv = document.getElementById(PublicCommentSelectors.USERNAME);
    const userAvatar = document.getElementById(PublicCommentSelectors.USER_AVATAR);

    if (!usernameDiv || !userAvatar) {
    return;
    }

    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user) {
    return;
    }

    const fullName = `${user?.firstName ?? ”} ${user?.lastName ?? ”}`;

    usernameDiv.innerHTML = fullName;
    userAvatar.innerHTML = getInitials(fullName);
    }

    function openLoginModal() {
    window?.tp?.pianoId?.show({ displayMode: ‘modal’, screen: ‘login’ });
    }

    function setupCommentSubmitButton() {
    const submitButton = document.getElementById(PublicCommentSelectors.SUBMIT);

    if (!submitButton || state.submitCommentButtonRegistered) {
    return;
    }

    // Register a single click handler that checks auth state at click time.
    submitButton.addEventListener(‘click’, function() {
    const user = window?.tp?.pianoId?.getUser() ?? null;

    if (!user) {
    openLoginModal();
    return;
    }

    runCommentProcess(‘postComment’);
    });

    state.submitCommentButtonRegistered = true;
    }

    function setSortOrder(order) {
    state.sortOrder = order;

    const newestBtn = document.getElementById(PublicCommentSelectors.SORT_NEWEST);
    const oldestBtn = document.getElementById(PublicCommentSelectors.SORT_OLDEST);

    if (newestBtn && oldestBtn) {
    const activeClasses = [‘tw:font-bold’, ‘tw:text-blue-800’];
    const inactiveClasses = [‘tw:font-normal’, ‘tw:text-slate-500’];

    if (order === ‘newest’) {
    newestBtn.classList.add(…activeClasses);
    newestBtn.classList.remove(…inactiveClasses);
    oldestBtn.classList.add(…inactiveClasses);
    oldestBtn.classList.remove(…activeClasses);
    } else {
    oldestBtn.classList.add(…activeClasses);
    oldestBtn.classList.remove(…inactiveClasses);
    newestBtn.classList.add(…inactiveClasses);
    newestBtn.classList.remove(…activeClasses);
    }
    }

    displayComments();
    }

    function setupSortControls() {
    const newestBtn = document.getElementById(PublicCommentSelectors.SORT_NEWEST);
    const oldestBtn = document.getElementById(PublicCommentSelectors.SORT_OLDEST);

    if (newestBtn) {
    newestBtn.addEventListener(‘click’, function() {
    setSortOrder(‘newest’);
    });
    }

    if (oldestBtn) {
    oldestBtn.addEventListener(‘click’, function() {
    setSortOrder(‘oldest’);
    });
    }
    }

    runCommentProcess(‘getComments’);
    listenForPianoLogin();
    setupCommentSubmitButton();
    setupCommentListDelegation();
    setupSortControls();
    });


    3 Marketing Tactics That Cut Through the Noise in an AI-Saturated World


    Nvidia VP Says AI Costs ‘Far’ More Than Human Employees


    Upgrade Your Dev Stack to Visual Studio Pro 2026 for Just $35


    Bethenny Frankel Hit $1 Billion In Sales. She Credits Her Success to This Tactic


    ‘I’m Doing Everything That I Possibly Can’: New College Graduates Face One of the Toughest Job Markets in Years


    This $14 Billion Business Is Officially the First Company to Be Completely Wiped Out By AI



    entry level jobs Hiring Employees Marc Benioff News and Trends Salesforce
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email Telegram Copy Link
    News Desk
    • Website

    News Desk is the dedicated editorial force behind News On Click. Comprised of experienced journalists, writers, and editors, our team is united by a shared passion for delivering high-quality, credible news to a global audience.

    Related Posts

    US Business & Economy

    How to figure out if AI is making you more productive

    April 30, 2026
    US Business & Economy

    Alphabet’s Q1 profit beats expectations with Google’s big AI bets paying off

    April 29, 2026
    US Business & Economy

    Nvidia CEO Jensen Huang says the ‘most noble’ career is this

    April 29, 2026
    US Business & Economy

    ‘Is San Francisco okay?’: A tech bro’s viral visit to New York City has the internet dunking on Silicon Valley

    April 29, 2026
    US Business & Economy

    This common travel habit is now banned on American Airlines flights

    April 29, 2026
    US Business & Economy

    3 Marketing Tactics That Stand Out When AI Is Everywhere

    April 29, 2026
    Add A Comment
    Leave A Reply Cancel Reply

    Don't Miss

    Man on Fire Review (Netflix)

    News DeskApril 30, 20260

    If you were to ask people about Man on Fire, most people would immediately jump…

    Elche adelanta a Madrid en inversión de startups, gracias a la operación de PLD Space

    April 30, 2026

    Rohit Sharma’s return timeline revealed as Hardik Pandya gives key fitness update amid MI struggles in IPL 2026

    April 30, 2026

    Far right remain in power in Spain’s Aragón region

    April 30, 2026
    Tech news by Newsonclick.com
    Top Posts

    Orioles contact-less lineup tries for better results vs. Guardians

    April 19, 2026

    More Americans doubt vaccine safety than trust it, POLITICO Poll finds

    April 14, 2026

    Missouri town fires half its city council over data center deal

    April 13, 2026

    Avatar de Cerati recrea el espíritu de Soda Stereo

    April 14, 2026
    Stay In Touch
    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • Vimeo

    Subscribe to Updates

    Get the latest creative news from SmartMag about art & design.

    Editors Picks

    Man on Fire Review (Netflix)

    April 30, 2026

    Elche adelanta a Madrid en inversión de startups, gracias a la operación de PLD Space

    April 30, 2026

    Rohit Sharma’s return timeline revealed as Hardik Pandya gives key fitness update amid MI struggles in IPL 2026

    April 30, 2026

    Far right remain in power in Spain’s Aragón region

    April 30, 2026
    About Us

    NewsOnClick.com is your reliable source for timely and accurate news. We are committed to delivering unbiased reporting across politics, sports, entertainment, technology, and more. Our mission is to keep you informed with credible, fact-checked content you can trust.

    We're social. Connect with us:

    Facebook X (Twitter) Instagram Pinterest YouTube
    Latest Posts

    Man on Fire Review (Netflix)

    April 30, 2026

    Elche adelanta a Madrid en inversión de startups, gracias a la operación de PLD Space

    April 30, 2026

    Rohit Sharma’s return timeline revealed as Hardik Pandya gives key fitness update amid MI struggles in IPL 2026

    April 30, 2026

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    Facebook X (Twitter) Instagram Pinterest
    • About Us
    • Editorial Policy
    • Privacy Policy
    • Terms and Conditions
    • Disclaimer
    • Advertise
    • Contact Us
    © 2026 Newsonclick.com || Designed & Powered by ❤️ Trustmomentum.com.

    Type above and press Enter to search. Press Esc to cancel.