If specific user role then sticky post

It looks like it is possible.

Sticky posts are stored as array of IDs in an option called ‘sticky_posts`, and you can modify options using hooks, so… There is a chance that something like this would work:

function fake_sticky_posts_for_author() {
    $user = wp_get_current_user();

    if ( get_current_user_id() && in_array('author', $user->roles) ) {
        // Return the IDs of posts that you want to see as sticky
        // For example this gets posts of currently logged in user
        return get_posts( array(
            'author' => get_current_user_id(),
            'fields' => 'ids',
            'posts_per_page' => -1
        ) );
    }

    return false;
}
add_filter( 'pre_option_sticky_posts', 'fake_sticky_posts_for_author' );
// we use pre_option_sticky_posts in here, since we want to ignore value of this option, so there is no point to load it

On the other hand, if you want to set all posts that are written by any author as sticky, then there’s another approach that might be better (more efficient). You can check during save_post if author has given role and set it as sticky if so:

function stick_authors_posts_automatically($post_id) {
    // If this is just a revision, don't do anything
    if ( wp_is_post_revision( $post_id ) )
        return;

    $user = new WP_User( get_post_field ('post_author', $post_id) );

    if ( in_array('author', $user->roles) ) {    
        // stick the post
        stick_post( $post_id );    
    }
}
add_action( 'save_post', 'stick_authors_posts_automatically' );

Disclaimer: This code isn’t tested, so there may be some typos, etc. But idea is clear, I hope 🙂