What makes a good software developer?



To be honest, I myself is not a software developer, but I've been working with a lot of those. And I know one thing that is it's hard to find good developers for any programming language. And there are differences between software developers and software programmers. I think a good software developer should cover below pointers:

  • Develop readable code. The code that you write must be the living document of what it does. Think that, you will be the person who will be maintaining it in production environment for the next 10 years.
  • Your experience must be N years and not N times years. Let me explain this more. Let’s say you are 5 years experienced, you must be 5 years experienced in the field. Not, 5 times one year experienced. When you get comfortable with what you are doing, you tend to do same thing and stay there. This leads to your same experience getting multiplied over time and not actually grow. This is the biggest problem among most developers.
  • DO NOT reinvent the wheel. When you are thinking for a solution for a common problem during your development, check if someone has already solved it. Most of the common problems are already solved and are available as open source add on library for use. You can just leverage it instead of writing your own.
  • Data structures and Algorithms. consider in google search implementation (just for example. I don't know how it is implemented) the developer, by mistake, decided to use a slower data structure leading to delay in search results, figure out the impact it will have on the end users. While we don't write code to search functionality, we should use best possible data structure and a good algorithm.
  • Must learn atleast two programming languages. A good developer must learn at least two programming languages. This is to better understand how much high level languages are similar. It develops better understanding on the syntax and usage.
  • Assume ownership, but not be the owner. You have to be responsible for the code you develop. Do not defend when some one finds issues on your code.
  • Write Tests. Even if you don't follow Test Driven Development. Softwares grow over time. They end up having lot of unwanted code and also complex functions. the only way to prevent on new changes impact the working old functions is by writing tests. So, when a new function or routine impacts existing, it will break the test and fail it.
  • Be nice. Be nice to someone joining your team. As they are starting in your project, they will have lot of questions. Treat them with respect as someone treated you when you joined a new project team.
  • You are not important. Sometimes people think that they have a lot of dependency in the project as they knew in and out of the project. They act arrogant. But, please bear in mind, you are replaceable. The new person, right replacement, might initially struggle. But they will eventually get it. So, understand that - you are needed now, but not forever.

Nhận xét