One thing I've learned over the years working in software development is that, no matter what one does, there will be criticism about your work. The more visible and high profile the work is, the more it will be criticized, no matter what. Not being target of criticism would mean very simply that it satisfies all people involved, which is almost never the case. The reason for that is that there are always different approaches to the problem, different approaches on how to document and/or present the problem and solution, among others. A person understanding your work could be highly logical and prefer a very logical/mathematical approach, another can prefer a higher-level approach, while still another person would have liked to see a more business oriented perspective, and a few more would have wanted more technical low level details than you presented. I personally haven't found a way to satisfy all type of audience - if it is at all possible, it will extremely hard and time-consuming and very hard to find this investment worth the time.
Given that, no wonder that criticism will rise among people that get in touch with your work. For very personal (and sometimes petty) reasons or for good business reasons, there will be criticism. In the software industry, in particular, this is bound to happen frequently as engineers are smart and opinionated individuals. The issue becomes more severe as we're in a highly creative field where there is typically no single solution to the problem at hand.
Being CriticalThere are many reasons to be critical, and for everyone interested in growing as a person and professional, this is an area that provides tremendous opportunity of growth if you have the right intent and learn how to provide feedback in the right way.
The most important lesson is: first, before being critical, try to think that there could have been reasons to make a decision in that why. Or if that's not the case, it just means that the person does not have your experience and knowledge, which is a great opportunity for your to influence that work.
Author does not have your experience or knowledgeOne thing is certain: no two people have the same experience or knowledge. On a particular topic, it's possible that one has more expertise or knowledge, but overall there is always something to be learned from other.
In the case the author of a work does not have your experience on that topic, this is a tremendous opportunity for you to teach and help a fellow coworker. The goal is not to make your coworker feel bad, but actually walk him/her through what you've learned and see the problem through his/her own eyes. It's not about forcing your suggestion on how to do things, but being patient to get the person to see the potential problem you see and potential consequences. If the final solution addresses the problems or consequences, that is what matters.
For the inexperienced author, if your experience indeed applies to the problem, either the person will see or will take the risk of running into the same problem. If the latter, there are two courses of action. First, if it has a great potential to impact the business and the person refuses to see, it may be worth involving others to see if through consensus the argument becomes more compelling . In some other cases, though, the best course of action is to let the person move ahead and take the risk. Either he/she will learn from it in the future, or something is or will be different than your own past experience and it may not be that bad or impactful to the business as you had pictured. Either way, both will learn from the experience and the organization can benefit from this as it will mature.
There was a reason for the decisionAnother possibility - often not considered - is that you could be criticizing something without understanding the reason a decision was made that way. Actually, not only the reason, but you may not the entire thought process or context in mind. With that, the author may have considered your point and, among other options and pros/cons, it could have been still the best alternative. This is where you distinguish mature engineers (and very often great engineers from the merely good ones): you are willing to be humble at first and potentially learn from others. As times goes by, these engineers are increasingly right most of the time, but still there are points that these engineers can learn from and fill the gaps in their knowledge and experience - and all of that by just trying to understand others' thought process.
Biases when evaluating someone else's workAs mentioned above, you can have two biases when taking a look at someone else's work: to think that the author might be more intelligent or more knowledgeable than you or that the author is stupid and did not see all of your points. Any of these extremes can be a problem on how you will criticize someone's work.
Thinking that the author is always more experienced, more knowledgeable or more intelligent can hold you back - you may have good suggestions or good criticisms, but this belief makes you not express yourself and be vocal. On the plus side, though, it may make you learn from every single experience if you know to ask the right questions and understand how the author got to that conclusion.
On the other hand, though, thinking that someone is always less knowledgeable, less experienced, or less intelligent can be a trap. This is very common in companies where people are more aggressive to get things done. In this case, you can end up pushing your view on others, even though they may have valid points and alternatives. Also, it can make you less open to the different perspectives, reducing your possibilities of learning something. Long term, the consequences are that you tend to keep doing things in the same way, less likely to adapt to changes or improve processes.
Ideally, you can hit a sweep spot in the middle of these extremes. First and foremost, always consider the possibility that there was a good reason for someone to be done in a given way. And consider your own experience and concerns as potentially valid.
Find what concerns you, not how you'd do itProblems may have a number of different solutions - in the software industry, this is even truer as there can be so many potential combinations of solutions when dig into the solutions. When tackling a problem, you will probably have a different approach than someone else. It may be similar, but it won't probably exactly the same.
Given that there are multiple solutions, the first thing is to respect the creative process that someone else went through. The solution may not be the same as yours, but it can have merits and can take into account more than you're able to see. So do not focus on HOW you would do it, but rather on what IS your concern and what are the undesirable consequences.
Be respectful of other's time and effortsIf you have too many concerns and disagreements, in order to be mindful of your time and your colleague's, and also that this is a business environment where you must be efficient, have FOCUS and priorities. If you have many points to get across, prioritize and pick your battles. Put yourself in the other's shoes and make his/her life easier - while still raising what is important to you.
Get your point acrossThese are good actions that can be done to perform criticism in practice:
- Before criticizing, inquiry the author why a decision was made in a certain way
- This can prove to be very revealing and may allow you to understand the context. Your criticism may not make sense anymore after that.
- If previous step did not help, first check if the author considered certain scenarios or concerns
- At that point the author may recall and address your concerns
- If your concern was not considered, walk the author through
- A "this is crap" phrase is not the best way to achieve the desired result, but rather try to make the author see what you're seeing. If required, walk him/her through each step of the thought process, how to get that scenario or how that can have an undesirable consequence
At times not even following these steps will actually help you get your point across as not everybody is open or will follow your arguments. In such cases, it may require more data and other measures to be taken offline. In other situations, it can take a long period of time to change the situation as people need to see a pattern of concerns that become reality before starting to give enough attention to you. In general, though, the steps above can help you get your point across in a respectful way, contributing to a healthier work environment.
Learning How to Deal with CriticismThe flip side of the coin is how to deal with criticism. This can be very tough, as not necessarily all critics will be acting out of good intentions. Even if they do, they may not have spent the amount of time you did thinking about a problem. And to make it worse, even if they do, they could simply not have seen all the issues and problems. Finally, there are those who are very loud and can make you look bad, which requires some damage control to be exercised.
Know why you're doing what you're doingBefore your work is shown to a wider audience, make sure that you have it reviewed in smaller circles to get the most important questions answered. These small circles must composed of people that you provide valuable feedback, but are also easy to work with.
Moreover, to make the entire process more efficient, make sure you know why you're doing that work, so you don't have questions later that will throw you off track. For this, go beyond your role and understand business requirements, technical requirements, try to understand how it fits in the overall bit picture. That can simplify your life down the road when questions that are related (although not directly applicable) to your work are raised.
Assume good intentionCriticism may arise for a number of reasons, but the healthiest thing to do is to assume all of them have the best of the intentions. If you assume they are not out of good intentions, you may not get it right (how can you say for sure the reason for the criticism?) and rather than focusing on the problem at hand, you will detract your thought process to think on the reasons, and why this is happening, why this is happening to you, etc. Forget the reasons and make the healthy assumption that there's a good intent behind the criticism - that will allow you to focus on the criticism.
Accept the fact: there will be criticsI'd say that accepting that there will be critics is one of the most important things in dealing with criticism. The likelihood just increases as you're doing things that impact more people or are more visible. It's unlikely that you will have criticism if you are doing something very local that nobody cares much, but it's very likely that you will do if you are changing how the Windows or Mac interfaces look like. No matter what, there will be critics, it is a matter of life no matter what you do. Not accepting this fact means that, with every criticism, you will reiterate the debate in your mind that there should be no critics of your work and your work environment (or world) is not fair.
Pick which ones to addressAnother point is what criticisms to address - depending on the project and impact, it is completely unfeasible to try to convince all critics of your decisions. It is a necessity to be able to pick which critics to focus on and spend your time on these critics and their points. This shows another sign of maturity and something one learns as time goes by. In some cases, there will be valid criticisms that can and should be addressed. If many people are involved and they all have different opinions, it can be just unfeasible to address all of them, so decide the criteria to follow, like: technical/business expertise or hierarchy with the company.
Depending on when the criticisms take place in the process, my suggestion is to make sure to pay some attention to those who disagree with you, as they may either point valid concerns or will help you prepare better for further justifications down the line if these criticisms come up again.
Know how to defend your pointsOver time, all of us forget the reasons decisions were made. We may not even remember the decision later on, and if we do, we tend to forget what led us to that. From that point on, it is very hard to be able to defend your decision as either you will need to go through the entire thought process or simply will not remember.
For future questioning and also for you to organize your thoughts, write down the reason decisions were made, from all possible perspectives. Make these answers public, if you like, or write them in a private document you can go back to if you need in the future.
In addition to that, communicate them in an intelligible and organized way, adapting the answers to each audience. Writing down your decisions and reasons is one way to help you organize your thoughts beforehand, but if you have a different technique, make use of it. Know how to communicate them to the right level of detail and focus depending on the audience: for instance, a business audience has a different focus than a technical audience and isn't commonly interested in low level details.
There will be other ways to do the sameMany critics don't think what bothers, but focus on how they would do it and that is what is thrown at you as a criticism. This is a trap, so don't fall for it. If you do, you will end up trying to point out what is the problem with how they would do it, rather than focusing on your solution (and its problems). Make sure to ask for the clear concerns on your solution and if the critic can't state that, follow up at some other time, but don't fall for the "why don't you do it like this?" question.
Be mindful of your own timeMake sure to get your critics to focus on the important concerns, especially if you have many critics or many points to address. In many occasions it's impractical to answer all questions from all people, so it's your job to know how to request feedback and not prolong discussions that don't offer much value. Sometimes the best thing is to capture these critics in emails or documents and be transparent upfront that they will be addressed if time allows - this gives you the opportunity to do in the future, but not to hold your work until every single discussion on why you used this notation vs. that notation is sorted out.
Finally, another suggestion is to know what the agenda for emails or meetings are and know how to get back on track when discussions are sidetracked due to unfounded criticisms.
I hope these tips can help you deal with this vital and sometimes painful process of criticizing or being criticized. It is definitely more an art than a science and there are not hard rules here.
Additional tips on how to deal with criticism are very welcome. Please share if you had different experiences with critics.