Many books have been written around patterns and practices and writing code that is geared to outlast you, the company and the very OS that its written on.
To me good code is code that the next developer can understand and extend without rewriting it. By the same token a good developer is a developer that can understand old code and optimise it with clever shifting reorganising of code (called refactoring).
Too many times I've seen super bright developers spend inordinate amount of time rewriting code to the latest patterns and practices and following the latest framework at huge expense to the business. The main driver is that the code is so bad it HAS to be rewritten. Most developers today think that the the previous developer must have been smoking mushrooms. This judgement is passed without bothering to gain context and an understanding of the history behind the code.
Most business hire developers to deliver business functonality. The business depends on it to evolve their business and keep their offering cutting edge. They don't care about whether you're code is uses all of the GOF patterns and whether you've used F# or C# or VB.
In most cases, all they want is for the order to be save to the database and printed. Maybe a good looking page to capture the data too. This simple requirement is taken to the extremes of software design.
Sure, there are times when you're working on an enterprise application that needs to be well written so that many developers can code to it and it must still be maintainable for years to come and remain performant.
The question that begs asking is, why are companies writing mission critical sytems when 90% of most functionality exists out there.
Why spend 5 years perfecting a message queue, when you can get an industrial strength queue for free from The Apache Group?
Why write your own workflow system that cost the company millions to develop when you can buy one from somebody who has perfected the art already?
Why spend years understanding the theory of CRM and limiting your service because you've decided to write your own CRM over period of 5 years. Only to find out that in 5 years time the next generation of developers curse the current implementation because it was written in the flavor of month framework.
Yes, we need bright developers who can code against patterns and practices, but what we need more is developers that can harness best-of-breed frameworks and integrate them with minimal effort and use any language to do so.
Just because its not .NET doesn't mean that its a bad system or needs to be rewritten in .NET. Some of the most performant systems in the world are run on Java and PHP.
So to me, I would given preference to hiring a developer that wants to write the least amount of code and is able to integrate the best of breed solutions without writing their own.
I think I could write a thesis on this and I think I've just hit the tip of the iceberg here, but hopefully I've been to share a bit about my understanding of a good developer.
My opinions expressed in this post come from my 16 years of software development experience in 7 different companies. The last 6 years I've been responsible for hiring developers and I've interviewed MANY different types.
To me good code is code that the next developer can understand and extend without rewriting it. By the same token a good developer is a developer that can understand old code and optimise it with clever shifting reorganising of code (called refactoring).
Too many times I've seen super bright developers spend inordinate amount of time rewriting code to the latest patterns and practices and following the latest framework at huge expense to the business. The main driver is that the code is so bad it HAS to be rewritten. Most developers today think that the the previous developer must have been smoking mushrooms. This judgement is passed without bothering to gain context and an understanding of the history behind the code.
Most business hire developers to deliver business functonality. The business depends on it to evolve their business and keep their offering cutting edge. They don't care about whether you're code is uses all of the GOF patterns and whether you've used F# or C# or VB.
In most cases, all they want is for the order to be save to the database and printed. Maybe a good looking page to capture the data too. This simple requirement is taken to the extremes of software design.
Sure, there are times when you're working on an enterprise application that needs to be well written so that many developers can code to it and it must still be maintainable for years to come and remain performant.
The question that begs asking is, why are companies writing mission critical sytems when 90% of most functionality exists out there.
Why spend 5 years perfecting a message queue, when you can get an industrial strength queue for free from The Apache Group?
Why write your own workflow system that cost the company millions to develop when you can buy one from somebody who has perfected the art already?
Why spend years understanding the theory of CRM and limiting your service because you've decided to write your own CRM over period of 5 years. Only to find out that in 5 years time the next generation of developers curse the current implementation because it was written in the flavor of month framework.
Yes, we need bright developers who can code against patterns and practices, but what we need more is developers that can harness best-of-breed frameworks and integrate them with minimal effort and use any language to do so.
Just because its not .NET doesn't mean that its a bad system or needs to be rewritten in .NET. Some of the most performant systems in the world are run on Java and PHP.
So to me, I would given preference to hiring a developer that wants to write the least amount of code and is able to integrate the best of breed solutions without writing their own.
I think I could write a thesis on this and I think I've just hit the tip of the iceberg here, but hopefully I've been to share a bit about my understanding of a good developer.
My opinions expressed in this post come from my 16 years of software development experience in 7 different companies. The last 6 years I've been responsible for hiring developers and I've interviewed MANY different types.