Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I used to think that my ability to create clever algorithms or my comfort with the languages I work in would determine my success as a programmer, but after a dose of real world development, I realized that these skills aren't nearly as valuable as the ability to choose the right tools for the job, to communicate with a team effectively, to decide when to use something out of a box vs. write your own version, and to have patience when trying alternatives until your high level of excellence is met or exceeded.

I was wondering what other 'meta' skills people think are useful for a programmer/software engineer to have and how important they are relative to the technical skills. This is NOT the same as simply asking what soft skills will help make a good programmer. More importantly, when looking to hire someone, how can you test for these better indicators of success (most interview questions I see are still just testing technical ability). Also, does anyone know of any books or blogs which focus on these meta skills? Thanks.


migration rejected from stackoverflow.com Dec 27 '13 at 18:52

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as too broad by gnat, MichaelT, Bart van Ingen Schenau, Doc Brown, Jimmy Hoffa Dec 27 '13 at 18:52

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs. If this question can be reworded to fit the rules in the help center, please edit the question.

3 Answers 3

up vote 2 down vote accepted

Meta skills are really important, but it's very hard to know if an interview technique is really testing them or not, since adding the kind of real world variables you are interested in makes problems of objectively evaluating the answers more difficult. Even posing the questions can be difficult, since a real world situation involves a lot of technical and non-technical information specific to the situation, so it takes a long to just to communicate it.

You can maybe do a better-than-nothing job of it by talking about real world situations listed on their resume, asking why they chose the direction they did (How did your team decide to write that component themselves? What other ways could you have gone? Did you make that decision? Did you agree with it?) and get some sense if they think about "meta" kinds of issues. But you are liable to end with someone glib rather than someone with good "meta" skills. (Glibness may be a meta skill, but probably not really what you are looking for.)

Or you could just ask "Do you have patience when trying alternatives until your high level of excellence is met or exceeded?" and as they answer stare deeply into their eyes until you know whether you should hire them. A surprising number of people use more or less that method. Those that do swear by it, though there is no evidence it works.

As far as books exploring this stuff, if you go into the business section of any bookstore, close your eyes, and grab a book, you'll have a decent shot of finding something.

Of course if you want to find something useful - if you can't tell a useful book from one that only thinks it knows, how will you tell the same thing about a candidate? If you can, do you really need to?


One of the most important skills is an ability to abstract, and communicate the abstract.

Dev side: identifying, utilizing, and communicating high-level code and architectural abstractions.

Non-dev side: communicating abstractions in a way meaningful to users and other stakeholders.

The techniques used to identify and communicate abstractions vary between environments and audiences.


It looks like you're delving from the world of programming into professional software engineering. I could list a few things (some of which have already been mentioned), but I would advise you to read (as much as possible) into the area of software engineering. There are various books you could read in this topic (you can find other posts on this site which list great SE books), but one book I would recommend is Code Complete:


Hope this helps!

EDIT: Didn't read your post fully; Looks like you've already heard bits about SE practices, but I would still look for good books, these will probably answer your question almost definitively!


Not the answer you're looking for? Browse other questions tagged or ask your own question.