Hidden skills of a good developer
Programming is a skill like any other, it is easy to get something done but difficult to do it well. Everyone can learn to code, there are so many resources teaching anyone to write their mobile app or website. So what defines a good developer from the crowed? Here's what I believe.
Design focused (UX)
In meeting, developers often expects people to understand the technical side of things. For example, it is so frustrating when the person you are talking to doesn't get what seems so elementary to you. I have been in similar situation, I get that. I think everyone should try to learn technical knowledge, in a scrum team that includes the Analysts and Product Owner.
On the other hand, developer should not take anything granted either. Learn how to design a beautiful product, that has been thought from a UX point of view too. Sure technical side is important, but a good developer will suggest cool ways for the user to interact with the product since they know what is possible to achieve. I have been in teams where the art team will create all UI design and hand them over to the development team. To me, this sucks for the developers. Design is the soul of the product, it is where creativity shines. A good developer should be part of the design process, not copying design someone else made correct to the pixel.
Great powers comes with great responsibilities
Don't abuse your power as a developer. No body likes reading crappy code and fixing bugs. If you are not sure, then check before committing your work to Github (or other Source Code Version Control tools).
Don't choose the easy way out. People often write awful code due to time constraints. This leads to terrible and horrible code. Either rethink your logic and change the solution, or split up the logic into different methods/functions. So it is easier to understand and also makes it more reusable. Honestly, think about the poor guy picking up this code.
Digital and Technology are changing all the time, try not focus on a single field. It is bad enough when developer separate themselves from designers, but splitting again between Mobile, Front-end web, Back-end web and Dev-ops? This goes back to work style, but for me I think work should be split into features so a developer will have to design the database schema, create relevant APIs, design the UI then link everything together.
Spend time learning about a language. Getting familiar with what is the best way to implement something in the language you are using. Which is the best loop to use? How to effectively manage memory? What are the constrains of the language? A good developer will know how to get most of the language, because you are using the language for a reason right? Otherwise, it probably makes more sense to use another language.
Understand possible solutions and how to choose the best one. Developer often have 2 or more ways to implement something, they either uses different technology all together or just implementation logic within the code. Learn the different libraries, frameworks, tools or technologies. Know the difference between them, when is one of them is better than the rest, and the drawbacks as well.
Be the go to guy for your team. If people always come up to you asking questions (how to do something) even those unrelated to your work, don't get annoyed instead be happy. That can only mean one thing, that you are a great developer and knows more than a lot of the people you work with. This is awesome, embrace it!