What is a "good" software developer?

rogerwe

Senior Member
Joined
Oct 20, 2008
Messages
639
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.
 

oldhat

Expert Member
Joined
Jun 27, 2007
Messages
4,958
IMHO, the reason developers want to redo EVERYTHING from scratch, is simple.....EGO!
 

TelkomUseless

Honorary Master
Joined
Mar 13, 2006
Messages
11,949
IMHO, the reason developers want to redo EVERYTHING from scratch, is simple.....EGO!

Yip.. one reason.

I have worked with many different types of devs (I'm a dev myself). Some egos are bigger than the building they work in. It's all about being "better"/cooler than anything

And some of the "elite" devs wants to take 6 month to write an app that should take 1 month to do.. because they want to do it the "proper" way even though business asked for the app ASAP. Business pays.. you can't say no.. take 6 months to write a small app... because I want to use 10 patterns etc.

Weird enough, my previous manager asked me to do most of the work, because our "team lead" was that type. If he didn't get his way.. he'll throw his toys and be sour for weeks on end (I kid you not).

Agree on some of the points mentioned by rogerwe. There is some off the shelf products etc you can buy (but most of the time they don't meet full requirements).

Doing support on a php/java app in a MS house is where the problem comes in with different types of products.

Edit: A good dev is someone who can work in a team. I have seen many problems and projects fail because some people wants to be the "main" dev... and sink the team!
 
Last edited:

Raithlin

Executive Member
Joined
Jan 4, 2005
Messages
5,034
Bingo. I think you hit the nail on the head. I'm currently undergoing interviews, and stupid questions like "what command-line argument does the compiler need to generate xml documentation" really gets me grated. (It's /doc)

The same goes for patterns. I know of the patterns, but in my 10 years of development I've not been given the time to implement them, much less the go-ahead to do so. I've been in a team that managed to do so, but we forced that in, and it was a large enough project that it was warranted.

All that theory is not always necessary to make a good developer.
 

TelkomUseless

Honorary Master
Joined
Mar 13, 2006
Messages
11,949
Bingo. I think you hit the nail on the head. I'm currently undergoing interviews, and stupid questions like "what command-line argument does the compiler need to generate xml documentation" really gets me grated. (It's /doc)

The same goes for patterns. I know of the patterns, but in my 10 years of development I've not been given the time to implement them, much less the go-ahead to do so. I've been in a team that managed to do so, but we forced that in, and it was a large enough project that it was warranted.

All that theory is not always necessary to make a good developer.

Ugghh.. I feel your pain.

I also went for interviews. Now they ask a crapload of patterns questions. I do know of it but not guru... and everyone wants a guru in THEIR design/process/coding ways.

I got the feeling the "IT Shortage " is a myth.. Example : They work with .net remoting, asp.net, jscript, ajax, sql 2008 etc. You might not know .net remoting... so sorry for you (but you know the rest..).
 
Last edited:

jabezz

Well-Known Member
Joined
Feb 8, 2007
Messages
193
IMHO, the reason developers want to redo EVERYTHING from scratch, is simple.....EGO!

I don't fully agree. I think a big problem we have in the industry is that some developers are afraid to touch anything.

So you ask them to make a change and look at the way similar things was done some place else. They would then be to afraid to break something else and rather use the copy-paste methodology to just duplicate functionality for their needs. There is nothing more annoying to me.
Thus without proper code reviews this doesn't get realised until the person leaves the company. So if the next person that takes over the code is not afraid to dig in deep, he will probably refactor the code to the point where it looks like it was written from scratch.

I do however agree that it is stupid to re-write everything.

Using a proper agile methodology forces you to reach milestones quicker, and see visible results. This way you can refactor the code in the long run, but still push out shorts bursts of completed work.
 

Raithlin

Executive Member
Joined
Jan 4, 2005
Messages
5,034
Using a proper agile methodology forces you to reach milestones quicker, and see visible results. This way you can refactor the code in the long run, but still push out shorts bursts of completed work.
This only works when you have business behind you. We still use the Waterfall methodology despite our best efforts to change to the Agile methodology. You need to have Business buy-in when in a corporate environment, or you get nowhere.

I'm with you on the other bits though - copy-paste causes many problems in the long run. That can (and should) be picked up by decent and regular code management (i.e. code reviews).
 

rogerwe

Senior Member
Joined
Oct 20, 2008
Messages
639
I'm with you on the other bits though - copy-paste causes many problems in the long run. That can (and should) be picked up by decent and regular code management (i.e. code reviews).

Try using Simian for duplicate code detection
 

Beachless

Executive Member
Joined
Oct 6, 2010
Messages
6,003
To me simple is best.

I simply hate exesive code and coders that split a project into 200 different components.

Sure the solution should be well structured but some coders have assemblies with 3 lines of code.

My boss always says he doesnt like to watch me code cause I delete half the code add a few lines and expect it to still work as per spec.

A comment that often makes me cringe is a coder thats proud of how many lines hes coded.
"OH my app has 200000 lines of code already..."
 
Last edited:

Other Pineapple Smurf

Honorary Master
Joined
Jun 21, 2008
Messages
14,115
Nice thread. I agree with the EGO issue getting in the way. Sometimes companies also need to understand that paying for code is another option.

Currently I'm working on popular framework for a company project and we purchased a plugin. It would have taken me about 6 mths to develop the same plugin. Now I've been given time to implement the framework and plugin, test it and give feedback to those that care.

I'm more valuable now as I've spent my time understanding the entire application/framework instead of focusing on one small aspect that will only be used 30% of the time.
 

Other Pineapple Smurf

Honorary Master
Joined
Jun 21, 2008
Messages
14,115
T...
A comment that often makes me cringe is a coder thats proud of how many lines hes coded.
"OH my app has 200000 lines of code already..."

LOL

I rather boast that I've got 300 unit tests for my 150 lines of code. I love test-driven development as I find it drops the bloat and I'm quicker to adjust, not to mention the piece of mind when the spec introduces new variables.
 

Lounger

Expert Member
Joined
Sep 2, 2010
Messages
3,367
IMHO, the reason developers want to redo EVERYTHING from scratch, is simple.....EGO!

I reckon they do it because the original is either badly written or has poor documentation or both. Coders have their own style based on their prior training (or even self taught, which tends to complicate).
 

jabezz

Well-Known Member
Joined
Feb 8, 2007
Messages
193
Yeah ... sad but true. I find it a huge problem at various companies. People don't document, which is the source of everything going wrong.

You end up in scenarios of what is in scope? What is out of scope? How do I test this? How should it be working?

Hence back to why some people rather re-write ... cause then they'll do some sort of requirements analysis and give the people what they want.
 

mbeylis

Senior Member
Joined
Jun 8, 2006
Messages
558
For me a good programmer is one who can write code that is easy to understand and maintain by other developers. This is what I try to do. It might take a few more lines of code but at least then I know I won't have any comebacks or looks of confusion from my fellow developers

One should however not disregard new technologies and revisiting code every now and then to see if there are better, faster and more efficient ways of doing things is good practice

The aptly named "propeller heads" tend to make code more complex than need be
 

Fuma

Executive Member
Joined
Jul 9, 2007
Messages
5,098
Just because something works doesn't necessarily mean it was done properly.

To me simple is best.

I simply hate exesive code and coders that split a project into 200 different components.

Sure the solution should be well structured but some coders have assemblies with 3 lines of code.
I couldn't have said it better myself. I am working on a project that has billions components. Pain in the rear. The code has to travel the world to do a basic task.

Now the system is down and the guy who developed it has left - the company didn't renew his contract and now I have to fix the problem. What a horror of a system.

Just to give you an example - one of the main front ends has about 15 iframes. I wanna cry.
 
Top