Good Programmers Should Focus on Design

This blog was originally written in year 2010. I am rewriting it again.

Today, programming and the Web world has changed drastically and the popularity of user interfaces and simplicity have proved that just being a good coder isn't the only thing you need to become a good programmer. Those days are long gone when we used to have dedicated designers in development teams. This may still be true for large organizations and large teams but for small business, this isn't true at all.  There is a growing need of all-in-one programmers. That said, not only do you need to be a good coder, you should also be a good designer. If you can't be a good designer, at least try to be one and try to understand and learn basics of design elements.
Today, software is eating the world. Today, there is more software being built and consumed than ever before. That said. not only software developers are in demand but good developers with design skills are even more in demand. It is difficult to find coders who can understand design and creativity. I remember years ago, Mike Gold wrote a good article, Where did all the Designers Go! 
Coding and design skills aren't the only things a developer should possess. There are even more. Here are some good points from Glenn Block, author of Web API book, how to be a successful software engineer.
So what exactly am I trying to say?
When you build a software or write a piece of code. you need to think about the users, the customers, and the business owners. Building good software is like knitting a custom fit sweater. Not only should the sweater should fit the shape and size but the owner of the sweater should like the feel and look of it. It should also be in his budget. And to get this done, here are some key points.
Understand business and be the business.
If you don't understand and live the business, you will not be able to build a good software product. You must live the business. Now, I understand it's not that easy as it sounds but you must at least try.
Pay attention to minor details.  
At C# Corner annual conference 2016, one of the MVPs asked a question. What is the most important phase of a software development life cycle? It is coding, testing, or deployment. I would say, it is understanding user requirements. Understanding business and business requirements. To deliver a good user experience, you must understand who your users are and how they think and how they are going to use your software.
Here are some other points. 
  • Ask as many questions you may have. But be sure you have the requirements clear.
  • Be a smart coder. Don't just build a solution. Build an optimal solution.
  • Sharpen your code skills. Use latest features of a programming tool, language, and IDE.
  • Be a clean coder. Keep your code clean.
  • Be innovative. Come up with something new. Don't just follow the crowd.