Learn to defend your decisions
Justin Lam Jun 13
One thing I learned recently which really helped me grow as an engineer is to learn how to defend my decisions. When you make an choice on a framework to use, an architecture pattern, or the style of your code, it is very important that you can defend why you made that decision. I have noticed that unseasoned or junior developers can't really justify why they made their choice. Typical answers when grilled includes, "That's how it's been done in other places in the codebase", "It works", "We have always been doing this", or "That's what everyone else does".
How does being able to defend your action help you grow? For every decision you make while designing and developing, you should be asking yourself how would other people poke holes in my choice. If they do find a flaw, how would I be able to explain to them that it's okay or that I've thought about it and I've got a solution later. A good developer will mostly likely be able to defend their decision with some hesitation if grilled on the spot. An excellent developer would have already prototype the alternatives, vetted through any flaws well in advance and be able to defend their position when questioned. You will grow tremendously when you do this. You will become more confident in your choices. It's not easy and it takes a lot of time but it is rewarding. You might end up going down the rabbit hole that is full of tangential tracks but it will be worth it to your growth.
There is a good technique you can use to help achieve more confidence in defending your decisions. When you make a choice you can try to ask your self why. Ask yourself why you are doing this, why is this better than the alternatives, why is it important, and keep asking why to drill down to the fundamentals. Learn to be curious, learn to see alternatives, and learn to be humble. You may have put in countless hours to learn every bit of defense for your decision but always be prepared to acknowledge you may not know everything and someone may provide a better solution.
A note for those doing the grilling, be strict but be fair. There's no need to put others down if they can't completely defend their choice but use it as an opportunity for them to learn.