No doubt, User Interfaces (UI) design is an independent topic; there are professional designers whose job is to make outstanding and perfect looking interfaces considering client requirements, target audience and many other important factors of good interfaces.
However, learning the basic UI fundamentals is very handy for every programmer. For the following reasons, I think every programmer should learn UI design.
There is no wasted skill. Every skill you learn give you a new experience and helps you develop your main career. Especially if you are someone like me who likes to learn new skills and go into new experiments. In my opinion, there is no reason to stop learning any secondary skill as long as you are not going to spend a huge amount of time on it and it's not going to take you away from your primary skill.
I have heard many programmers saying the phrase "Well, I'm Not a Designer…". It's true if it used in the correct context, but a lot of programmers use it to justify their poor user interfaces.
Well, if you are not a designer, stop making bad user interfaces and putting them into production 😁.
Some programmers developed a fear from user interfaces designing. This primarily because they tried to make interfaces without understanding the fundamentals of UI design. It's very hard to get a "good-looking" interface without understanding what makes a good design. With some basic UI design fundamentals, you would be able to easily make a usable and good-looking design.
Furthermore, learning a skill that you couldn't do gives you self-confidence and boost your energy to program.
Since I learned UI design, I have felt that I am more organized; after learning UI design you are like making everything neat, organized and good-looking. This is because some UI design fundamentals apply to any design in general (for example colours matching)
Users see the interface; they don't see the code. Let's say you are a programmer who made a small application that users will interact with using a graphical user interface. As the application is a small project, you decided to design the interface yourself without help from a specialist designer. Even if the app is well coded, performance-optimized and supports a lot of futures, users might avoid it because of the poor UI design.
Moreover, if the interface includes a design mistake which affects the usability or accessibility of the website (such as poor colour contrast), your app might be completely unusable and therefore pointless.
That was my opinion about why every programmer should learn UI design fundamentals. Please share your opinion in the discussion section 😀.