Developers in my team always have conflict during code review. They always insist their code is good and refuse to change, as suggested by reviewers. As the CTO, how should I tackle this issue? I just finished my answer, then started reading some of the top answers on Quora. Almost all the top answers are better than mine. I need to come back to this and change my answer to make it more like the best of the answers I just read. Right now, I don't have time for it. I will be back, because this is an important question and I need my own good answer for it. -Dan Interesting, none of the top answers are from people identified as CTOs. I think that means as a rule, CTOs do not have good answers for this. My goal is to tell you straight out what you need to know to correct this very serious problem. This problem probably cannot be turned around without significant change in staff and it is very reasonable for that change to start with the CTO. Since you are the CTO, your job either is on the line or your company’s situation is terrible with regard to developers. Inability to handle code reviews objectively and without burnt feelings is near proof the crew of programmers is not doing a good job and they are doing it too slowly. The chances of you solving this problem without someone you do not now have are worse than low, closer to “forget-about-it.” If someone wanted to take my bet, I’d bet a year from now, that either your company will be out of business/reorged, you will be replaced, you will have found a scapegoat you can get away with blaming to buy yourself some time, or you will have left the company to go work somewhere else where your new employer either had no developers or they are having same problem you are having now. In other words. if you want to see the problem, look in the mirror. Think I am being a jerk? I think I am. I am a complete jerk. Excellent. It has been how long since you posted your question? How much has the situation improved? Do you want to pal around or do you want to address this problem? Finding someone to help you is difficult. That does not change the fact that without at least one game changing person getting involved, that game is not going to change. Fixing this problem is going to require a valid analysis of the arguments your developers are having. Are they all being idiots, or are some of them right enough to stake your future and you company’s future on their view of things? If at least some are aimed the right way, what is going on with the rest of them? You are going to need to know the code issues yourself and be able to evaluate them wisely. I bet you are smart. I bet you are not a good enough programmer to make that evaluation. I did not say, “you might want to try,” I said, “you are going to need.” I just said you don’t have the right background, orientation or aptitude. Either I am wrong or you are going to need to find someone to help you. I bet you are a lot smarter than I am. I bet you don’t understand software. When you are CTO, you are going to too many meeting, taking too many phone calls, being out of the office too long at lunch time, answering too many emails and dissembling too much to your boss and peers to learn what you need someone to know to fix your problem with developers. I bet you are not reading this anymore. I hope I am wrong about that. Executives get to be executives by doing things that are different from what you need done. The end. If you are still reading…. I don’t mean being intimate with every detail, but you need to know whether the defensiveness is based on good reasons. All programmers think we are great, because here and there we do some things that are cool. When it comes to the other 95% of our work, we are a mixed bag at best and you need to be able to sort the mix with your own knowledge. If you cannot do that, then you need to learn how. If you lack the knack for that, you need to get one immediately. Your programmers probably are wasting a big part of what you pay for their services. Once you have your own read on the software and the people writing it, then you need to find out why your crew cannot handle code reviews in a professional, objective manner. I can tell you right now, it takes two problems for atmosphere you described to become the norm. One problem is your programmers are in conflict in their professional views of what constitutes good software. The technical name for that in programming is Religious War. Those are so bad your job would be on the line if your boss isn't or being conned by yout. Declaring the company’s position on software religion is either your job of the job of someone working for you, which obviously you do not have. I bet your team is talented but they have not been nurtured enough. Nurture does not mean being nice to them. It means having a powerful systematic way of running your shop that everyone follows because it is the only way that is accepted. When everyone does it, the Religious War is over and work happens about five times faster. Everyone has heard a lot of the general guidelines and code reviews are the most important of them all, but it is only one guideline and you need a lot more than that. For example, someone needs to be resolving the conflict by explaining work needs to be done in your shop. Did I mention that already? Yes I did. It is essential. Do you know how work needs to be done in your shop? Ready for a test? Here is the first question: what do you need to do to "tackle" the problem you asked on Quora? Answer: You need to be able to answer that yourself. In case you did not get the question right, here is a retest: what do you need to do to "tackle" the problem you asked on Quora? What is the answer? I bet you cannot bring yourself to stating the answer I just gave you. That might be because you don't believe the answer I gave you is right. I bet the answer you are looking for is more along the lines of "If the world were different and this problem was not happening, what could I do then? Answer: Go to the golf course. Is that a better answer? You need to find a software person either already on your team or someone to help you as a consultant that you are certain you can trust to look at your programmers, tell you what is going on and provide you some serious recommendations about the actions you need to take to get this crew in line. Situations along these lines vary too much for details solutions to be known based only on what you asked. Someone good at this could change the direction of that crew in one day on scene, by asking a lot of questions and then laying out a bunch of steps that make sense to everyone and and start telling people about the new way things are going to be done in your shop. You cannot learn how to do this by asking about on Quora. The most you can do by asking on Quora is to get an idea of the direction you need to go. I know which way is north, but I am not going to try getting myself to the North Pole without people who have made the trip before me. You might be able to develop a knack but the kind of problem you have combined with the fact you are asking a general audience like Quora what indicates that as of now you do not yet have the knack in this area. There is a lot to the CTO job apart from programming so it is no criticism of you that this is not what you are ace at. Your software crew cannot improve without a strong software leader getting involved. Why isn’t your boss helping you with this? That is a bad sign for you. Your situation is going to go one of these three ways Not going to change and we are all wasting time writing about it. Chances are about 80% this is your future on this subject right here. You are going get things to change by leading that team directly. For that to work you need a coach or two who can provide you roadmaps, answer your quesitons, and provide you with private evaluation. This might work, which is a lot more than can be said for option 1. You are going to hire a software leader, to take over that team. Most CTOs view this direction as admission of failure. While you always are the boss, you need to be a leader that serves and does not rule when it comes to software. If you hire someone who can help you fix this problem, they are going to tell you certain things are necessary that you do not agree with. You are going to have to let that person tell you what you need to do and you will need to do it or you both will fail. Unfortunately, CTO’s bosses often are prone to look at this direction as failure as well. Usually, doing a good job at finding a fulltime leader can happen only after you have had help improving your abilities to lead your programmers. Is there another possibility besides those three? Even though I might be able to help you, depending on the personalities of the people and economic pressures involved, forget about me, because I want you to know I could not accept this assignment even if we both wanted it that way. It would create a conflict of interest between what I am telling you and and what my interests are. By disqualifying myself from working for you or anyone else reading this answer, I cannot gain anything by what I am telling you. You probably think you know why I am saying this. If you think the answer is anything but my desire for peace of mind between my ears, and my natural impulse to help where I can, then you are wrong. Truth is, my economic and business interests most likely would be served best by not answering this question, or by limiting my answer to something I could have been done with an hour ago. Why would I undermine my business and economic interests? I will tell you why. Did I say I am a business expert? I suck at business. I don’t like sucking at business and I need to correct that problem but as of this moment I waste time answering questions like this one, telling you the truth and facts about what most likely is your situation and future, and you blow me off because it is not the answer you want. I know you have done a great job to get where you are, but with regard to this situation, your situation is near hopeless. Prove me wrong, I will send you $50 cash, update this answer to correct my errors, admit publicly, here, I was wrong, and thank you for helping me learn. Want to know what most CTOs do? Look for scape goats. Psychologically bully people to coerce them to support the disinformation spread as a result of not wanting people to know you don’t know everything. CTOs use their budget authority to reward their pals with upgraded systems, their political savvy to tear down and get rid of people they fear will expose their ignorance, and use rage to frighten people to stop them from communicating freely. I interpret your non response as your interests not being served by engaging in a way of looking at your situation that you cannot manipulate or discuss honestly. There are plenty of great CTOs on Quora. They don’t ask questions like the one you asked to start this thread. Interesting, none of the top answers are from people identified as CTOs. I think that means as a rule, CTOs do not have good answers for this. My goal is to tell you straight out what you need to know to correct this very serious problem. This problem probably cannot be turned around without significant change in staff and it is very reasonable for that change to start with the CTO. Since you are the CTO, your job either is on the line or your company’s situation is terrible with regard to developers. Inability to handle code reviews objectively and without burnt feelings is near proof the crew of programmers is not doing a good job and they are doing it too slowly. The chances of you solving this problem without someone you do not now have are worse than low, closer to “forget-about-it.” If someone wanted to take my bet, I’d bet a year from now, that either your company will be out of business/reorged, you will be replaced, you will have found a scapegoat you can get away with blaming to buy yourself some time, or you will have left the company to go work somewhere else where your new employer either had no developers or they are having same problem you are having now. In other words. if you want to see the problem, look in the mirror. Think I am being a jerk? I think I am. I am a complete jerk. Excellent. It has been how long since you posted your question? How much has the situation improved? Do you want to pal around or do you want to address this problem? Finding someone to help you is difficult. That does not change the fact that without at least one game changing person getting involved, that game is not going to change. Fixing this problem is going to require a valid analysis of the arguments your developers are having. Are they all being idiots, or are some of them right enough to stake your future and you company’s future on their view of things? If at least some are aimed the right way, what is going on with the rest of them? You are going to need to know the code issues yourself and be able to evaluate them wisely. I bet you are smart. I bet you are not a good enough programmer to make that evaluation. I did not say, “you might want to try,” I said, “you are going to need.” I just said you don’t have the right background, orientation or aptitude. Either I am wrong or you are going to need to find someone to help you. I bet you are a lot smarter than I am. I bet you don’t understand software. When you are CTO, you are going to too many meeting, taking too many phone calls, being out of the office too long at lunch time, answering too many emails and dissembling too much to your boss and peers to learn what you need someone to know to fix your problem with developers. I bet you are not reading this anymore. I hope I am wrong about that. Executives get to be executives by doing things that are different from what you need done. The end. If you are still reading…. I don’t mean being intimate with every detail, but you need to know whether the defensiveness is based on good reasons. All programmers think we are great, because here and there we do some things that are cool. When it comes to the other 95% of our work, we are a mixed bag at best and you need to be able to sort the mix with your own knowledge. If you cannot do that, then you need to learn how. If you lack the knack for that, you need to get one immediately. Your programmers probably are wasting a big part of what you pay for their services. Once you have your own read on the software and the people writing it, then you need to find out why your crew cannot handle code reviews in a professional, objective manner. I can tell you right now, it takes two problems for atmosphere you described to become the norm. One problem is your programmers are in conflict in their professional views of what constitutes good software. The technical name for that in programming is Religious War. Those are so bad your job would be on the line if your boss isn't or being conned by yout. Declaring the company’s position on software religion is either your job of the job of someone working for you, which obviously you do not have. I bet your team is talented but they have not been nurtured enough. Nurture does not mean being nice to them. It means having a powerful systematic way of running your shop that everyone follows because it is the only way that is accepted. When everyone does it, the Religious War is over and work happens about five times faster. Everyone has heard a lot of the general guidelines and code reviews are the most important of them all, but it is only one guideline and you need a lot more than that. For example, someone needs to be resolving the conflict by explaining work needs to be done in your shop. Did I mention that already? Yes I did. It is essential. Do you know how work needs to be done in your shop? Ready for a test? Here is the first question: what do you need to do to "tackle" the problem you asked on Quora? Answer: You need to be able to answer that yourself. In case you did not get the question right, here is a retest: what do you need to do to "tackle" the problem you asked on Quora? What is the answer? I bet you cannot bring yourself to stating the answer I just gave you. That might be because you don't believe the answer I gave you is right. I bet the answer you are looking for is more along the lines of "If the world were different and this problem was not happening, what could I do then? Answer: Go to the golf course. Is that a better answer? You need to find a software person either already on your team or someone to help you as a consultant that you are certain you can trust to look at your programmers, tell you what is going on and provide you some serious recommendations about the actions you need to take to get this crew in line. Situations along these lines vary too much for details solutions to be known based only on what you asked. Someone good at this could change the direction of that crew in one day on scene, by asking a lot of questions and then laying out a bunch of steps that make sense to everyone and and start telling people about the new way things are going to be done in your shop. You cannot learn how to do this by asking about on Quora. The most you can do by asking on Quora is to get an idea of the direction you need to go. I know which way is north, but I am not going to try getting myself to the North Pole without people who have made the trip before me. You might be able to develop a knack but the kind of problem you have combined with the fact you are asking a general audience like Quora what indicates that as of now you do not yet have the knack in this area. There is a lot to the CTO job apart from programming so it is no criticism of you that this is not what you are ace at. Your software crew cannot improve without a strong software leader getting involved. Why isn’t your boss helping you with this? That is a bad sign for you. Your situation is going to go one of these three ways Not going to change and we are all wasting time writing about it. Chances are about 80% this is your future on this subject right here. You are going get things to change by leading that team directly. For that to work you need a coach or two who can provide you roadmaps, answer your quesitons, and provide you with private evaluation. This might work, which is a lot more than can be said for option 1. You are going to hire a software leader, to take over that team. Most CTOs view this direction as admission of failure. While you always are the boss, you need to be a leader that serves and does not rule when it comes to software. If you hire someone who can help you fix this problem, they are going to tell you certain things are necessary that you do not agree with. You are going to have to let that person tell you what you need to do and you will need to do it or you both will fail. Unfortunately, CTO’s bosses often are prone to look at this direction as failure as well. Usually, doing a good job at finding a fulltime leader can happen only after you have had help improving your abilities to lead your programmers. Is there another possibility besides those three? Even though I might be able to help you, depending on the personalities of the people and economic pressures involved, forget about me, because I want you to know I could not accept this assignment even if we both wanted it that way. It would create a conflict of interest between what I am telling you and and what my interests are. By disqualifying myself from working for you or anyone else reading this answer, I cannot gain anything by what I am telling you. You probably think you know why I am saying this. If you think the answer is anything but my desire for peace of mind between my ears, and my natural impulse to help where I can, then you are wrong. Truth is, my economic and business interests most likely would be served best by not answering this question, or by limiting my answer to something I could have been done with an hour ago. Why would I undermine my business and economic interests? I will tell you why. Did I say I am a business expert? I suck at business. I don’t like sucking at business and I need to correct that problem but as of this moment I waste time answering questions like this one, telling you the truth and facts about what most likely is your situation and future, and you blow me off because it is not the answer you want. I know you have done a great job to get where you are, but with regard to this situation, your situation is near hopeless. Prove me wrong, I will send you $50 cash, update this answer to correct my errors, admit publicly, here, I was wrong, and thank you for helping me learn. Want to know what most CTOs do? Look for scape goats. Psychologically bully people to coerce them to support the disinformation spread as a result of not wanting people to know you don’t know everything. CTOs use their budget authority to reward their pals with upgraded systems, their political savvy to tear down and get rid of people they fear will expose their ignorance, and use rage to frighten people to stop them from communicating freely. I interpret your non response as your interests not being served by engaging in a way of looking at your situation that you cannot manipulate or discuss honestly. There are plenty of great CTOs on Quora. They don’t ask questions like the one you asked to start this thread.
Oh, wow, there are a lot of answers on this topic over at Quora, and many of them are well thought out and detailed. Since I've never been subjected to a code review, I can't weigh in on this topic there. But, a few thoughts I had were: Code review sounds like it could be enlightening and positive, but could, if administered poorly, be a horrendous experience. I sometimes wondered why some developers say they hate their jobs, when coding seems to me so far to be a great way to make a living. Now I have an idea why. Having a contentious code review looming at intervals would be a miserable place to find oneself. If there are tensions between staff members already, facing down over each other's work seems like it would only make them worse, and I think your assessment that the company in question is in serious trouble is correct. In reading through the replies, I noticed a lot of parallels between reviewing code and critiquing fiction. Things like discussing the work itself and not directing criticism to the creator of the code, and not obsessing over minutiae of style are similar in both situations. I have followed such advice when critiquing fiction, pointing out the positives that are working properly--very important not only because it protects a fragile ego, also necessary to avoid tossing out the guts of a story--but also asking questions about things I see might not make sense, drawing out answers and solutions, instead of crushing the writer into despair. Code review seems like it would require similar techniques. In fact, one example I can give from personal experience is the front page design I made for Holly. I had gotten to the point where I could no longer judge whether changes I was making were improvements or not so Holly suggested I share what I had with the moderators. The moderators are of course really good at giving constructive feedback or they wouldn't be moderators. I was still nervous about sharing what I had. I mean, you know, Rez, right? Turns out sharing my work in progress was the best thing I could have done, because not only did I get the thumbs up from the whole bunch, even Rez, but their suggestions gave me some new and even better ideas on ways to make the page easier to read, and I added another signup button that Holly just loved. Since I've never been through a real life code review, I am quite curious what is involved. How many people are in this meeting? How do they pick apart each other's work? It sounds nerve wracking, although I can see where if standards were already in place, and programmers had a pretty good idea that their work would conform to them it wouldn't be so bad, and could actually be inspiring like my experience with Holly's moderators. I agree. Handling this properly seems fundamental to the operations of a company, and sets the tone for everything else that follows.