On my coding journey, I have encountered many strange opponents and strange teammates. I have come across at least five different "code warriors." Some of these talented comrades helped move development work forward, while others seemed to obstruct every plan I made.

However, they all have a place in the "pantheon" of software development. If you can't coordinate these different styles of programmers, you'll find that your project takes too much time, is not stable enough, or has code that is hard to read.

The Quick-Fix Type

Damn it, the code isn't perfect, but as long as it works, that's all that matters!

This kind of person is the foundation of your company. When something goes wrong, he quickly patches it up, and to some extent, ensures it won't go wrong again. Of course, he won't worry about how it works, how usable it is, or other trivial issues, but he will fix the problem instead of talking a bunch of nonsense and wasting time. The best way to use this kind of employee is: give them a problem to solve, then walk away.b110

Fixed it!

The Perfectionist OCD Type

What do you want to do to my code?!

This kind of programmer doesn't care about your deadlines or budget; these are trivial compared to the elegance of the code. When you finally receive the finished result, you don't need to do anything except commit this perfect code that shines with the glory of honor. This is extremely efficient, because everything you do would only ruin the perfection of the code. They are the only ones qualified to modify it.

b23

I am not worthy.

The Anti-Programming Type

I'm a programmer, but I don't write code, dammit!

In their world, there is only one truth: writing code is bad. If you have to write it, then you've already taken the wrong path. Someone else has already done the work, so just use their code. They will tell you how fast this development actually is, even though sometimes they spend the same or even more time than other programmers, but when you finally get the result, you'll find it's only 20 lines of code, concise and readable. It may not be fast enough, efficient enough, or forward-compatible, but it's the minimum amount of work.

b31

What on earth are you doing!

The Dabbler Type

What more do you want? It already works, doesn't it?

This kind of person doesn't care about code quality at all; they think that's someone else's job. He quickly completes the assigned task. You may not like the way he works, and other programmers hate this kind of person, but managers and clients like him. He will bring you great pain in your future work. Yet he always manages to finish on time, and you can't scold him (no matter how much you want to).

b41

This side is already done!

The Theoretical Type

Okay, that would work, but actually there is a better option.

This guy is more interested in options than in what should be done. He will spend 80% of his time staring at the computer thinking about ways to accomplish a task, 15% of his time complaining about unreasonable deadlines, 4% of his time choosing between different approaches, and only 1% of his time writing code. When you receive the final result, you often get this complaint as well — "If I had time, I could definitely do better."

b51

And that's the difference between 0 and 1!

Which one are you?

Personally, I think I'm the perfectionist type. So, which one are you? Or do you think there are other types of programmers that this article didn't mention? Feel free to leave a comment below, and I'll update the article.

This article wasLai Xintaotranslated fromSteven Benner's Blog