Strong in basics
If you ever want to become a great software developer, you would want to be absolutely strong in your basics. So what do I mean by basics here. Operating system fundamentals, Architecture differences, Difference between compiler and interpreter, how a program gets compiled, Difference between early and late binding, how internet works, how databases work, etc. Trust me, if you want to become great, you need to start from the basics.
Technical thinking
Technical thinking is the ability to think the details inside a complex black box. For example, how a mobile application that you use daily, actually works inside. It may not be always right, but you need to think that way in order to improve your technical thinking.
Problem solving skills
This is one of the most important skills to become a software developer, forget about becoming great. As a developer, you will be solving problems all the time. Be it simple ones or highly complex ones, a developer needs to be good at problem solving. One small tip here would be to break bigger problems into smaller and easily solvable ones. It feels so good if you can attack the smaller problems and then connect them together to see how you have solved a complex problem.
Algorithms and Data Structures
One definite thing that can make a difference between an average developer and a great developer is his/her knowledge on Data Structures and Algorithms and how it gets applied. Since you will be solving the simple and complicated of the problems, you need to be aware, how to efficiently solve each and every problem. That is where the knowledge of data structures and algorithms really helps.
Design Patterns
This one can drastically reduce the code’s maintenance effort. Design patterns are solutions to common coding problems. They ease the pressure of maintenance by following a standardized approach, allowing flexibility yet modification of code. Thus it is imperative that a developer gets good at using appropriate Design Patterns in the right places
Team workA great developer is almost always a great team player. He/she is willing to help others learn the art of programming and also willing to work as a team.
Attention to detail
This comes as part of the technical thinking. A developer gives a lot of attention to details, as details are very important to the overall fine tuning of the application.
Long term thinking
A great developer doesn ’t go for Quick Fixes or Hot Fixes. He might occasionally do it, but his main intent is to provide a long term solution to any problem.
Communication skills
A great developer needs to have good communication skills. His/her role is not just to program but to grasp the problems from the customers, discuss & brainstorm with the team, come up with the best solution, convince the management about the efforts, talk to the customers, present the solution, accommodating changes from customers, etc. Hence it is imperative that the developer needs to improve on the communication skills.
Customer Focus
Every project starts with a customer requirement. A great developer starts with the customer requirements/pain points and works towards a solution that will solve the problem for the customer. By doing so, not only that he is developing good code, but he is developing something that the customers actually enjoy.
Continuous Learning
A great developer always loves to learn something new in his/her art. It is either through peers, websites, blogs, by contributing to open source projects, attending conferences, etc. He is always in touch with the latest trends