Non-programming skills every programmer should have
singhrahul.com
singhrahul.com
> 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.
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.
2) What about "can"? It's not a drop-in replacement for "should", but it has a lot of what you're going for. "Non-programming skills every programmer _can_ have" is about aspiration not judgement, possibilities not failures.
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.
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.
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.
This is just social pressure to conform to certain kinds of ideas. The fact that the word "spiritual" allows me to self-label as religious even if I don't belong to a large institution like the Catholic church is not very helpful if I am just not religious. And why should I have to be?
Spirituality appears to require at least some belief in something beyond the material world. There are certainly things that can be taken from spiritual practises that can be useful but in most cases there is an explanation for this value that does not require any belief in the supernatural.
Just replace spirituality with custom, culture, emotion, and its not so anti-intellectual.
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.
Are non-programming skills helpful? Of course. Do one man bands exist? Sure. Should "every" programmer be one? I don't think so.
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.
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.
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...
Cool-sounding advice, I suppose. What sort of mind is yours?
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.
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.
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?
And no, I suppose I don't have a specific example. I just notice that the programmers I know who are more than just coders are considerably more efficient, and come up with better, cleaner solutions.
This is, of course, only speaking from personal experience. And in regards to your "extreme underwater basket weaving club" example, well, maybe it does. I learnt Latin for a while and as useless as it may seem on a day-to-day basis, it did wonders to my logical thinking.
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.
and it actually makes the coding easier. some of the most frustrating parts of development come from not being in control - you are very much dependent on the person above whose talking to the client. and it helps the client too, because with less buffer they can get faster feedback. which again helps you, because you can do faster iterations and understand more closely what the customer wants...
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...
your thesis gets: "denied"