I want to know what people think are the most important soft skills (e.g patience, tenacity, competitiveness) for programmers.
I’m not really interested in communication skills, but more the skills you use when you’re hunched over the keyboard.
I want to know what people think are the most important soft skills (e.g patience, tenacity, competitiveness) for programmers.
I’m not really interested in communication skills, but more the skills you use when you’re hunched over the keyboard.
Laziness of course. Less is more.
I've seen and reviewed so much code that should have been much less code.
Curiosity. You just have to be driven to figure out how things work (or how to make them work) for the sheer pleasure of it.
The ability to ask the correct question in the correct place. Hint: this is not it.
Perfectionism and Curiosity, and thinking "outside the box" (overall picture). And planning.
The ability to pull back from a particularly difficult problem. Most insights to these types of problems occur when you are doing something totally unrelated to the task at hand. If you are getting nowhere after 2-3 hours and feel as if your spinning your wheels, it is absolutely critical for you to be able to leave it aside and go do somethong else
Not being able to sleep until you figured out a solution to that day's problem.
The absolute intrinsic need to learn something new, every time and forever.
Never stop learning.
I believe conscientiousness is one of the greatest assets to a programmer. It doesn't matter how technically good a programmer you are, if you are sloppy, don't comment code, don't adhere to conventions and don't test your work. Caring about your work is important.
Clear, logical and objective thinking (even when those around you are losing thier heads), patience, being able to ask the right questions, a dash of empathy, and the ability to avoid procrastinating [too much!].
I'd also say a desire and willingness to learn. You'll be doing it a lot.
Being able to honestly assess how long something is going to take, and honestly assess how you're proceeding so far. This is a skill I fervently wish I had.
And deferring gratification: spending a few minutes searching the project or library for code that already does what you're trying to do rather than jumping in and having fun coding up a new version immediately.
The ability to take criticism from anyone (Seniors, juniors, interns), analyze it and be able to apply it when necessary.
The ability to communicate ideas clearly and concisely to other people.
Larry Wall said it best: Laziness, Impatience and Hubris
I know that they are mostly tongue-in-cheek (you wouldn't go into a job interview and say "I think that my best skill is laziness") but deep down, they do lead to self-motivation. You want someone who will figure out what needs to be done and just do it (and WANT to do it), because it will make their own jobs easier, and if it makes their own jobs easier, it will probably make everyone else's jobs easier too.
Problem solving - Given something that doesn't work, figure out why it doesn't work and what possible solutions exist and why any of them may be the best solution to the problem.
Answering questions on Stack Overflow can be considered a soft skill? Giving back to community and helping others.
An unwillingness to let an unsolvable problem stay that way.
That, and making a new pot of coffee when you take the last cup.
For everyone in any type of profession, to become great it only takes dedication to the subject. Being passionate and obsessive with laughable working hours. Specially for programming, no social exercise is required.
Mathematical aesthetic sensibility. A God's gift that makes wonders.
Ability to learn by yourself. This way I learned crystal reports, SQL and .Net. At my work they love that.
Being able to LISTEN. How many times have I seen a client talking to a programmer, the guy paying attention the first few minutes and then his eyes glaze over, already forming his own ideas in his head.
P.S. I admit I used to do this too, but thankfully the I learned (and am still learning off course) how to do this better now.
Be compelled to engage in the act of programming
Keep your eye on the ball.
This is more valuable than laziness, impatience, or hubris as I see it. Knowing what you need to accomplish, envisioning what 'done' needs to look like, and not allowing that idea to get buried in inaccessible depths of your brain through inevitable yak shaving.
This is especially poignant when working on code, as you set out to solve one problem and inevitably run into others along the way. Most people get lost somewhere along that road, tunnel vision into some tangential issue, and miss out on possible opportunities to solve the original problem.
I've found this single skill to have the most measurable impact (out of any other hunched-over-your-computer programming soft skills) in someone's ability to get things done efficiently.
Being able to adapt to coding practices/standards in the workplace when you don't agree with them.
Be willing to learn new development methods and also being able communicate when you think your right :)
Having the courage to sometimes scrap an entire project and start again (and again if needed)
Passion. I would say the biggest difference between great programmers and mediocre programmers in my opinion is passion.
I'll take the following any day of the week:
:)
Have an orientation of thinking in terms of solving anything on computer (writing a program). When I was first learning programming on my pocket computer (CASIO PB 100) in 1985 my daughter was pressing me "Come on dad. Let's play cards." I took it as a problem and wrote a simple program for playing cards.
Respect to parent & appreciation - inheritance & encapsulation
Able to reuse current technologies(existing classes & packages) - re usability