top | item 4674867

Non-programming skills every programmer should have

57 points| rahul_rstudio | 13 years ago |singhrahul.com | reply

47 comments

order
[+] klodolph|13 years ago|reply
I'm not fond of these "should" articles. I'd like to acknowledge the programming specialists out there and the 9-5 programmers. The "should" means that if you're not doing these things, then you're doing something wrong. (That's not even the connotation of "should", that's the literal meaning.)

> Also, it's good to have some management and leadership skills.

It's good, but not everyone wants to be a leader, and if everyone led it would be chaos. You're not a failure for not getting promoted into management.

> A programmers aim shouldn't be to simply write good programs, rather it should be developing really great products.

Yes, but programmers can work on teams with great designers. They don't need to do all the jobs.

Every skill on this list is a skill that takes the place of something else in your life. There's simply a finite amount of time in each week, and if I want to get better at design does it mean that -- maybe I give up on guitar or baseball or something?

I encourage programmers to think about what they really want -- not just at work but in their life -- and remember that the loudest folk are also the strangest.

[+] pjscott|13 years ago|reply
> I'm not fond of these "should" articles. I'd like to acknowledge the programming specialists out there and the 9-5 programmers. The "should" means that if you're not doing these things, then you're doing something wrong. (That's not even the connotation of "should", that's the literal meaning.)

I would like a word -- and perhaps it exists already and it just eludes me at the moment -- which is a milder version of should. A word that means "Your life would probably be improved by doing these things, even though what you're doing now may also be good."

If we had such a word, it would make it easier to have "You should" conversations without people becoming offended. Our world may be great, but I think that a world with a word like that would be a little bit better.

[+] twelve45|13 years ago|reply
Not a big fan of the article either, but I think there is some benefit to at least trying to develop some skills outside of your core skill set. This is not necessarily to get good at those skills, but to develop empathy for others who've decided to specialize in those skills.

For example, I've personally realized that management is not really my thing, but having done it for a while I understand better now where my ex-managers were coming from and feel that I'm now a better employee because of that. Same for design work, etc.

And frankly I wish other people did that too. Wouldn't it be great if your manager understood your explanation of why that "tiny" feature will actually take weeks, or the designer keeps potential code complexity in mind when designing something? I think this advice applies to everyone, not just programmers.

[+] jacalata|13 years ago|reply
Every programmer should have the skill of ...startup? What fluff. I think what he's trying to say in this section is (a) - it is more satisfying to work on a project you care about than to be well paid (b) - you will be exposed to the entire product lifecycle at a startup and not at a big business, which is useful if you are planning to build products at your own startup later.

Aside from the semantic quibble that neither of these are 'skills' that a programmer should have, I think (a) is proposing a false dilemma, and (b) is not necessarily true, and even if true, is not shown to be useful to 'all programmers' (per the title) but just 'programmers who want to be entrepeneurs', a much smaller group.

[+] btilly|13 years ago|reply
Hey, he had to work Hacker News in somewhere.
[+] mikeash|13 years ago|reply
"Spiritual - I am still not sure whether I should have included this one or not."

And I can see why! There might be a point in this section, but it's tough to find among all the fluff.

If you're trying to say that meditation is helpful, that's great, but I don't see why that would be labeled "spiritual". If it's something else, I can't find it.

[+] R_Edward|13 years ago|reply
I'd suggest that "spiritual skills" encompass an understanding that there are connections between ourselves and our surroundings that defy precise, scientific description. Whether that's a feeling of camaraderie with your teammates, or a sense that one's office is warm and inviting or cold and unpleasant, or an immediate response upon meeting someone for the first time that you can trust them implicitly--or that you absolutely cannot--these are skills that can be developed and improved over time, and the effective use of which can enhance an individual's overall health, productivity, and success.
[+] victorhn|13 years ago|reply
The "spiritual" word is often used in non-religious contexts to mean the mastery of the inner world.

Meditation is often used as a way to take control of your thought processes (which are sometimes negative), so that's why it's often classified as a spiritual practice.

[+] RollAHardSix|13 years ago|reply
Clarity? Calmness of Mind.
[+] zalew|13 years ago|reply
While I'm a generalist myself, and I can relate a bit to his advice, I really don't get this recent trend of patronizing everybody to become one man shows. There is a saying that shallow knowledge can be worse than no knowledge at all. For every generalist you need many specialists, and IMO the most important gain of acquiring side skills is being able to share a deeper understanding of other people's work. As an effect - you can surround yourself with the right people and more easily assess their qualifications.

Are non-programming skills helpful? Of course. Do one man bands exist? Sure. Should "every" programmer be one? I don't think so.

[+] mercuryrising|13 years ago|reply
I don't think it's good for the long run, but having a bit of knowledge about everything is really handy. I'm a non-working recent grad. I'm taking a few months off (graduated in May) to try my hand at making some software stuff. I'm working on a website now, and having even a little bit of exposure to web frameworks, databases, UI, UX, etc. is nice (these are things I never had before, as I'm an EE).

I can see things I never saw before because of it. I would never ever wish this upon someone (I spend hours trying to make the stupidest things work, but then realize I was going in the completely incorrect direction). It's a pain in the ass when I can't make something look exactly how I want it, but for a little bit it's fun. It's nice being able to hack at the backend for a while, get bored, switch to design, get bored, switch to new features I could implement. I'll be ready for the big challenges when they come. It'll be cool when I show some people one day and say "I made this, all by myself, everything that happened I thought of superficially (as I'm using bootstrap, and tons of back end libraries)". We always stand on the shoulders of giants.

[+] viseztrance|13 years ago|reply
Replace programmer with cook and then comes the shocker - these still apply.
[+] andrewcooke|13 years ago|reply
while i don't have a problem with anything here, particularly, these kinds of post (and we seem to get a lot) usually strike me as "a list of good things about me" or "why everyone should be like me".

i'm not sure how you avoid that. perhaps it is up to the reader to piece together a more balanced view by reading several.

[+] mangler|13 years ago|reply
> these kinds of post (and we seem to get a lot) usually strike me as "a list of good things about me" or "why everyone should be like me".

Yep... That's why the mysteriously named skill, "spiritual" may actually be quite important and why the OP should work on it a bit more. Beginners' minds don't go around dispensing advice. I think that touches lightly on the "social" as well...

[+] seanmcdirmid|13 years ago|reply
Yes, we programmers should learn how to sketch! Not to produce beautiful art but to communicate ideas visually. I really regret not developing this skill, as I find myself blocked when trying to draw something on a whiteboard. My girlfriend (an interaction designer/visual communications graduate) really kicks my butt here, but then there is pressure in her field for her to learn programming :)

Writing (and perhaps presentation) is another skill we should develop. Writing is not just about communication, but it also aids in idea refinement.

On the other hand, even though I'm all for zen and all, I think spirtual skills are deeply personal and not necessary. Social skills are also very relative, and if you struggle with these your career as a programmer is not over! Same for biz skills, no one has to be a jack of all trades, but you'll probably absorb these skills at your own pace as you advance in your career.

[+] adamgb|13 years ago|reply
If someone had all these skills, why would they be a programmer? :)
[+] seanmcdirmid|13 years ago|reply
Most of us program because we want to, not because we lost some contest and would rather be doctors, lawyers, business leaders.
[+] grownseed|13 years ago|reply
A lot of people seem to be offended by this article when I think all the author was trying to say is that opening yourself to other, non-programming related stuff simply helps you become a better programmer as a whole. I honestly don't think he's suggesting you should be a pro at all those other points, just have a fairly good knowledge of them.

I personally find that, on top of the points mentioned in the article, a large number of programmers I've met or have had the chance to interview have a crucial lack of extra-curricular activities. While it's true most can code, a lot less are able to come up with creative solutions on the spot, and I do think this is a skill that stems from looking "beyond the code".

And yes, as some people have mentioned, I also think it applies to other jobs. In fact I think a lot of jobs require very similar skills, it's just the different application of a given mindset.

[+] alanctgardner2|13 years ago|reply
It's one thing to say that programmers (and everyone, really) should have a hobby outside of work. This is a laundry list of vague ideas - 'Startup' is not a skill - that the author insists every person who programs for a living should be interested in.

What exactly is 'looking beyond the code'? Can you give an example of a problem where two equally skilled programmers were faced with a problem, and one had an epiphany based on their experience last night at the extreme underwater basket weaving club?

[+] mstefanko|13 years ago|reply
May just be the way it is worded, but the spiritual section ruins this post for me. "...skills every programmer should have" being able to meditate can mean a lot of non-spiritual things. People are able to clear their head via hundreds of methods that have nothing to do with being spiritual. Even meditation I would not personally consider to having to be spiritual. But listening to music, taking walks, doing something to clear your mind from everything that is currently holding it back. This in itself is not spiritual. I agree, what it is, is an essential skill, one needed in life, not just in programming. We all have periods of losing focus. And being able to recover during these times, it's a valuable skill to have with any task. But I think using the title "every programmer" than attributing the way you personally get by is misleading.
[+] grannyg00se|13 years ago|reply
I haven't read the article because I read comments first and the comments are confirming my suspicion that it is mostly nonsense. But I wonder, how does something like this make it to the front page? Are people upvoting it and not leaving comments? Perhaps downvoting of articles should be allowed.
[+] ahmicro|13 years ago|reply
Yes, and I realized this when I start to work for a company and found myself have a lack of explaining the project with my manager and not founding new ideas to implement, and explaining this feature and why we shoud add. A programmer shoud be able to communicate with other people and explain their ideas very well, so I should stat reading one book for each thing that will affect the way i think in programming or in life. I also found that presentation skills are very important and to understand the business side. We are not going to be a business or sketches guys but theses things will help us in programming very well and the way we think.
[+] baddox|13 years ago|reply
I'm curious what the author's definition of "spirituality" is if it has nothing to do with religion or a belief in the supernatural. The author mentions meditation, but I don't see any inherent link between meditation and spirituality.
[+] dangrover|13 years ago|reply
It's funny how many programming jobs are designed explicitly to insulate you and not require any of these skills. Just code and let the adults do all the talking.

In many organizations, it's easy to get caught in a catch-22 where to advance, you need nontechnical skills, and to develop nontechnical skills, you need to advance.

For some, this means they get to do what they love without much hassle (see "do you still want to be doing this when you're fifty?"), and for others it feels like being stuck in the mud.

I'd bet a lot of people contemplate doing startups just to get out of the "technical" tarpit more than actual desire to start a business.

[+] MattGrommes|13 years ago|reply
I've found that even sitting at the kids' table you can make sure people in the rest of the business know that you're not just a code monkey. I try to ask questions, make suggestions, make sure people know me and that I contribute more than just lines of code to the business. Even though I have little desire to move up to the adult table I think it's good for your long-term career to be known as more well-rounded. Plus if the list of layoffs comes around I don't want to be just a name and title to the people above me.
[+] peekyou|13 years ago|reply
I think it is not appropriate to say that every programmer should have all of this skills. First, sociability depends from one person to another. Secondly, designing is a full job. It is ok to have some knowledge but don't ask too many things to somebody.

In this case, why not asking marketing people (for example) to have programming skills ?

This kind of thread reminds me this : http://blog.jitbit.com/2011/05/what-if-drivers-were-hired-li...

[+] goldenchrome|13 years ago|reply
I'm not really sold on these kind of self-help articles that tell you how to live, as if there is one way of being happy and fulfilled. Yes, a sense of fulfillment comes from those listed categories but it kind of cheapens the idea when you can point to a bunch of thin pop books on Amazon as the answer to life.
[+] abdelmaalik|13 years ago|reply
what is up with this ambiguous skill set that you have mentioned? believe me, if your good at what you do... and you are on a team of incompetent dorks, then telling me to develop "social" skills is a lose-lose situation.

your thesis gets: "denied"

[+] gnarlyjoe|13 years ago|reply
he started programming with 18. what a loser.
[+] acuozzo|13 years ago|reply
Isn't that cute? User ``gnarlyjoe'' trolls HN. (What a loser!)