Review of Dale Carnegie’s “How to Win Friends and Influence People” for programmers

Programmers and IT people are often shunned for being shy, timid, fearful, or just in general – we are being thought of someone who have no social (soft) skills. If you can in any way identify with this sentiment – you definitely would be rewarded deeply for reading this book and implementing the suggested tips in your own life. But let us start at the beginning – who is the author, who is he known for, and so on, and then I will tell you why you should deliciously digest this book.

First of all, Dale Carnegie is an innovator of a new genre of books that are called “self-help” books these days. Such books feature short chapters with a life lesson at the end of them. This makes it very approachable for programmers who might have a short attention span or not have much energy, or time after programming for the whole day. It is worth mentioning that Carnegie was so popular and known that even Warren Buffett, a well known businessman, used to hang (or still does) on his wall a certificate that he finished his courses when Carnegie was still around. So if it appeals to people like Warren Buffett very much, it would help you a lot as well. Let me introduce to you a few chapters and tell you how they would help you.

Foremost, being proficient in negotiation tactics is a very useful and critical skill for everyone, not just salesmen and managers. We, as programmers, are sometimes shy, undervalue ourselves when looking for a job and do not ask for a proper wage. This work of art will help you get rid of that imposer’s feeling. I think that understanding the critical people skills presented in this publication and implementing them in your real life will deeply change your understanding of human interaction mechanics. Negotiation is essential when you are trying to make another person think like you. This is why Carnegie aptly named a chapter “Twelve Ways to Win People to Your Way of Thinking” which is dedicated to teaching you methods how to achieve this goal. For example, you probably never thought about the technique to “let the other person feel like that idea is his or hers”. Presenting an idea to someone like it was thought by themselves makes them more likely to accept it because that person feels like it is theirs. There are even 11 more ways presented in “How to Win Friends and Influence People”. This kind of advice is what makes this book great and they are all useful to you as a programmer. Hopefully, learning them will give a rise to having your wage substantially increased.

Furthermore, one thing for sure is that programmers are notorious for being egoistic. I feel that this book teaches how to be a humble, understanding, and a thoughtful person. It strongly encourages to be honest and always consider all problems or thoughts from the perspective of the other person. For example, in part 2, “how to make people like you”, Dale Carnegie specifically wrote a chapter which specifically inspires you to become a good listener and encourage others to talk. Author argues, I agree and you probably too with the assertion that people like talking about themselves, about their hobbies, about their days and so on. You cannot win a person’s mind to your way of thinking without listening to them and making them feel good. Or in other words, “don’t kick over the beehive if you want the honey” which is another quote from other chapter. Thus, this book will help you kick out the bad habits that we usually have as programmers.

Not to mention the very simple, understandable English used in the book. It appeals to the layman so it is especially approachable to anyone. In general, this piece of work is not philosophic, don’t need to think much – you ought to just apply the principles explained in the book. However, it might not be for you if you are looking for deep discussion about why people behave in one or other way and about topics such as sociology. The courses organized by Dale Carnegie himself were attended by all kinds of people – from salesmen to ordinary plumbers so it had to appeal to the lowest common denominator which is that they were all normal, hard-working people who are looking to improve their social skills to furthermore reach a bigger point in their careers or to become leaders in their respective fields. Personally, I think that this perfectly OK for books like these and reduces the list of reasons why you should not read this book by one more thing.

On the other hand, obviously not everything is rainbow and roses. This book has some downsides too. I thought that some examples were seriously out-dated and not applicable to the current world. For instance, in part one, “fundamental techniques of handling people”, an example is introduced of a “famous” quarrel between the two USA presidents Theodore Roosevelt and William Howard Taft. It really isn’t known at all anymore, especially it is not known for people who do not live in the USA and this just makes the reader feel like they are missing some details. Moreover, some reviews on other sites say that the examples are so bad that it is only worth reading the “in a nut-shell” sections at the end of each chapter. But I don’t think they are that bad – some of the examples are really great and illustrate the point that the author is making very well. Also, some advice seemed repetitive and just presented from the other perspective. Exempli gratia, in part three Dale Carnegie says to “Be sympathetic with the other person’s ideas and desires”. It is similar or almost identical to the advice given in part two: “Be a good listener. Encourage others to talk about themselves” . I think that being a good listener already involves sympathizing with the person that you are having a conversation with. You could find more examples of these issues. However, they are not very noticeable and do not distract from the main ideas of the book.

All in all, it is a great book for programmers. But just because of the negatives that I have listed, I would rate it a shining 9 out of 10. You would not waste time by picking it up as your next read and it would greatly influence your person character development to the positive side. With programmers becoming more and more equal in skill, the people skills are what makes someone shine. This may sound like an advertisement but you should not hesitate and pick this book up whenever you can in the future. It is one of those must-reads. If there is one thing that you will definitely take away from this book is that you will learn how to emphasize with your conversation partner and generally improve your manners.

On Trustworthiness of Sources While Gathering Information About Software

Read the fine manual

Time and time I see people who follow all these random online tutorials and then when something does not work they become dazed and confused. “Why this does not work? But this tutorial shows that it should work” – I see similar questions occasionally in various forms on forums and IRC. I think people do not realize that there is some kind of hierarchy of trustworthiness of information sources. We should be conscious of that hierarchy when looking for information and remember it when we notice that something is not correct or up-to-date.

In my opinion, the field of studying history has already nailed this down. They have what is called the primary and secondary sources of information.  Primary sources provide direct evidence about an event, object, person, or work of art. The latter thing is similar but they talk and analyze the primary sources [1]. It seems to me that we can draw a parallel between this and the information sources that we use to study programming. However, instead of having a simple distinction between primary and secondary sources, a hierarchy is more suitable because we are talking about researching a thing that we have in front of us at present and we can experiment with it. The only question that remains is: how does the hierarchy look like?

At first, let’s think about what kind of sources we have when we are talking about programming before making it. Personally, I can list these items:

Zeros and ones representing byte code

  • The actual machine code in the executable or the file that you are examining. This can be considered the primary source in programming. What is inside there is actually executed on your machine so you know that it cannot lie. However, it is very hard to decipher and not very informative. Thus, even though it is the most trustworthy, it is very unfriendly to the person that is trying to learn.
  • The source code that was compiled to make the executable or a file. In terms of trustworthiness it is almost as good as machine code and it is a very good source from which to learn because source code is written for humans and lets you understand everything relatively easily. The only downside is that you have to know that the executable/file that you have been actually made from that source code. Projects such as the reproducible builds [2] help with that but still that is not available everywhere and you have to be sure that the source code corresponds to that executable.
  • Empirical observation of what system calls the executable is executing, what kind of options are available, what is the output of various commands and so on. This source of information tells you what is apparently available to you as a user but you cannot be sure about what is exactly happening in all cases thus it is not so trustworthy. Also, by using this source information you cannot know what options and commands are exactly available. What if there is a hidden feature or something that is not documented in the output?
  • Standards. Now we are entering into the zone where we are not even talking about the actual file/program on your computer. Standards are much more trustworthy than the next item because they are usually governed and released by a rigorous organization such as ISO [3] or ANSI [4]. Also, a lot of deliberation and work goes into making sure everything is correct, orderly, understandable, and that there are no contradictions. On the contrary, they are not so easy to use like the next items because most of the time you have to pay to get the standard. Also, usually they use more technical parlance than the next item.
  • Documentation released by the manufacturer, vendor. Quality of information released by the original makers tend to vary a lot. However, it is usually well structured, easily understandable so it is not hard to skim and find the relevant information that you are searching for.A book with flowers
  • Books. This source of information tends to be researched more than the item that goes after this one in the list. This is due to the fact that after the book is released, you cannot change it. Also, most of assertions in books need to be backed up by quotes or citations. However, because it is not made by the original company or a group of people that made the executable/file, it is less trustworthy than the previous item. What is more, the topics of books’ chapters have a tendency to be more abstract than the manuals so sometimes it might be not so easy to find information that you are looking for when compared to official manuals.
  • Community tutorials, forums, wiki pages, articles. These are the least trustworthy because of the anonymous nature of the Internet. Anyone could write anything and you are never sure if what is written was researched well. There is a reason why no one uses web pages as serious sources of information in the academia. On the other hand, it is very accessible because almost everyone has a mobile phone or a laptop with an internet connection on it nowadays.

We can produce this picture after listing the items:

Hierarchy of Information

My point is that everyone should always keep this in mind. Also, now if someone is doing the same mistake I mentioned at the beginning, you should refer them to this article or this hierarchy. I hope this was useful. Please comment if you do not agree with anything mentioned in this post or if you want to discuss.