Does Writing Code Matter?

by improving said skill at the expense of some other skill.

Improved communication skills can only amplify your other skills. It doesn’t harm them.

I absolutely agree. Consider that Jimi Hendrix, Stevie Ray Vaughan, and Eddie Van Halen are 3 great examples of guitar players who were excellent players. Whether you agree or disagree with this statement is really not important. But, stop to consider that you probably would never have heard of any of them if they had never written any songs to showcase their talents. The music world is full of great instrumentalists, and I could name many more talented guitar players than these 3, but these 3 guys wrote somgs that got popular and people noticed them as guitar players because of the songs.

Great analogy Chuck!

“I gotta remember that one …”, I mumbled as impending senility sliced another five memories from my mind.

Tim, I don’t disagree with you about communication, which makes me feel like we’re talking right past each other.

I don’t believe writing a technical book on C++ is going to make you more skilled at creating readable flow charts, UML Diagrams, etc, nor do I believe that blogging about the subject will be any better.

You obviously do, so I’m going to drop it.

I fully agree with Jeff Atwood in what he says. My perception of what Mr.Atwood has referred to is this: A programmer can be a better and “important” human being (which includes him being a better and important
programmer) by exercising skills other than coding. I remember my first few days of learning Java. Classes, Objects, polymorphism, what not. It did not occur to me how to start coding a simple class with the main method. I was blank. All hopes vanished and I knowingly quit the idea of coding in Java. That was 7 years ago. Now I have got over 6 years of experience in Java with a Sun certification. All I need to tell is that although I quit Java, I continued communicating with and understanding people and objects around me. The next day I found myself trying to think whether the person I talked to the last day was an object. Yes it was. An object named Shantanu. Did it have properties which matched mine? Disappointingly yes, but yes. That made a class out of us, Human.
The rest is history. When a programmer or an aspirant talks to people, socializes, he learns and makes people learn and the growth he attains is 360degree. He not only acquires knowledge but creates knowledge. This forum has seen people denying Jeff’s suggestion that “we spend less time coding and more time developing skills in other areas that complement our coding skills”. He never asked us to forget coding. Come on, that’s our bread and butter, at least for me it is. I perceive that he is pointing towards a Paradigm Shift. A thinking which would enable us to be smart developers, being smart would help us cut on our development times, times that we could spend in closer-to-life activities, times which our parents, wives, children would love to spend with us, times which would help us to socialize and be a better and important human.
The cycle goes on buddy, the cycle goes on.

You got my point Don. But then, even if I wanted to learn from textbooks, am sure learning from people around me would have still been much more wonderful. Coz I feel people offer you a lot more scope to learn than textbooks do. A person is a textbook which replies you back, argues you. Anyways, coming on to what you say about programmer being a programmer and a designer a designer, it is the best as you suggest. They have to, infact I say they HAVE to do what they are sent into this world for. Except for those multi-talented Da Vincis who can adopt two or more professions at a time. But cannot a programmer be a better social human being in a way which not only is better for himself, as well as for the whole society? Cannot he learn tap-dance in the evenings and learn the value of the timely tap which may teach him how every second counts when he is doing multi-threaded programming? That might sound a bit far-fetched but what I wanted to say is just that one of the ways to learn programming or be better in programming lies in the world outside. To quote myself again - “When a programmer or an aspirant talks to people, socializes, he learns and makes people learn and the growth he attains is 360degree. He not only acquires knowledge but creates knowledge.”

Question for the general community here. Jeff opens up the conversation about a programmer. I think of a programmer as some one who codes and does some design and development.

When I think in terms of what Jeff talks about, it implies someone who is looking to be more than the backroom coder.

Jeff and all, is that your definition of programmer and is that all that you want or are you looking to be more than that?

This is People Networking. Just like Rajesh Setty talks about in http://www.lifebeyondcode.com. Code the greatest app in the world, if knows about it or you then it was a great adventure and puzzle but there is no pay off.

You don’t have to be the greatest sales person, nor the most charming and engaging person out there, but getting involved in the community and talking to people other than your fellow techies will bring you and your work to a higher level.

I think that Jeff’s underlying point is that programmers need to have good communication skills. It’s the same point that Joel Spolsky makes, and Alex P (TDWTF), and basically every other programmer who’s taken seriously by the community. And that’s kind of the point - if you want to be taken seriously by the community, you have to be able to communicate with it, and said individuals ipso facto recognize the necessity of communication and will advocate it as a skill.

Nobody said anything about bench pressing or marketing or sex (although I hope for your own sake that the last one isn’t a problem). But business sense and communication skills are different. You need business sense because software is largely about tradeoffs, and you need communication skills because software development is also largely about understanding the requirements.

It’s not just about the development process either. Not everyone’s got a marketing department. Sometimes you’re an internal developer and you have to justify your employment - nobody’s going to help you there. Or maybe you’re a consultant or entrepeneur, in which case you ARE the marketing department and need to be able to establish a reputation. Unless you’re the lowest-level wage-slave, there’s probably going to be some point where you have to “sell” your work, even if it’s not in the literal sense. It helps to know how.

Coders code, managers manage. If a good coder is forgotten, then the coder forgets the project.

I code, therefore I am.

Selling yourself in order to get a better position is just disgusting.

Like in Star Trek, for example: There is a star ship operator that obeys an admiral. Admiral: “Take the ship to Alpha 58 section. Make it so!” Ship operator: "Route to Alpha 58 section set. Engines start! Aaaand, by the way, I am the BEST ship operator around in fifty space sections, if you didn’t know!"
Admiral and everybody else in the room looks the operator and wonders is everything ok…
Then later in the evening when the admiral and the operator are alone in a corridor, the operator whispers: “By the way, did I mention that I also manage ONE HUNDRED other kinds of travelling modes!!!1!11”. The admiral looks the operator and thinks is everything ok…

You could have learned objects and classes from a textbook, too. Somehow you needed people around to understand it, but it is not necessary. Of course you can learn a lot from other people. But in the end, some code must be done. If there is a company where there are programmers and designers, then they do their works separately. Surely if these two communicate with each other, they will share their points of views. If the programmer also designs, he knows designing besides programming. If the programmer also runs tests, then he knows testing too. If the programmer creates ads, then he knows some marketing too. But I think that there are great programmers and great sales person, and there is no point in that a programmer does marketing. The programmer will never be a great sales person, and meanwhile there is some programming to do. Also this goes with great designer and great tester. Life is short.

There are different kinds of programmers. There are those, who can do really tricky algorithms, that solve some hard mathematical calculations. Then there are programmers who program easier and more general-like software.

If a programmer wants to be a good algorithm programmer, then he studies math, code optimization, and time consumption stuff. If a programmer wants to be a general software programmer, then he studies object oriented languages, graphical user interfaces, and maybe usability.

If a programmer does not know, what he wants to become, then he might just drift around and do whatever he is told to do. A difter might not be interested in any programming issues, he just tries to cope with any task he is given. But some drifters might be interested in some issues, or a drifter might specialize in something just randomly, because of the situation at hand.

Then a programmer should know how to interpret design documents. And a designer should know how to design programmable and good designs. Usually a good designer is also at least a fair programmer.

If a programmer is some one in a corner of an office and that programmer’s task is to maintain some code, how that programmer can ever be like super popular guy above the code? There is no way, I think. Unless this programmer comes out of the corner and wants to be in some difficult pioneering project with good team, and then having lots of communication with the team and other people.

But, we need also the programmers who just do their jobs instead of running after fame and name. Still this “I am just working here -programmer” can be a good programmer. I think that more important than being above the code is to be really good in what ever you do.