Steven Benner’s Blog

Random articles about programming, computing, and the internet.

The 5 types of programmers

Awesome code

In my code journeys and programming adventures I’ve encountered many strange foes, and even stranger allies. I’ve identified at least five different kinds of code warriors, some make for wonderful comrades in arms, while others seem to foil my every plan.

However they all have their place in the pantheon of software development. Without a healthy mix of these different programming styles you’ll probably find your projects either take too long to complete, are not stable enough or are too perfect for humans to look upon.

The duct tape programmer

Duct Tape

The code may not be pretty, but dammit, it works!

This guy is the foundation of your company. When something goes wrong he will fix it fast and in a way that won’t break again. Of course he doesn’t care about how it looks, ease of use, or any of those other trivial concerns, but he will make it happen, without a bunch of talk or time-wasting nonsense. The best way to use this person is to point at a problem and walk away.

The OCD perfectionist programmer

Perfection

You want to do what to my code?

This guy doesn’t care about your deadlines or budgets, those are insignificant when compared to the art form that is programming. When you do finally receive the finished product you will have no option but submit to the stunning glory and radiant beauty of perfectly formatted, no, perfectly beautiful code, that is so efficient that anything you would want to do to it would do nothing but defame a masterpiece. He is the only one qualified to work on his code.

The anti-programming programmer

Perfection

I’m a programmer, dammit. I don’t write code.

His world has one simple truth; writing code is bad. If you have to write something then you’re doing it wrong. Someone else has already done the work so just use their code. He will tell you how much faster this development practice is, even though he takes as long or longer than the other programmers. But when you get the project it will only be 20 lines of actual code and will be very easy to read. It may not be very fast, efficient, or forward-compatible, but it will be done with the least effort required.

The half-assed programmer

Perfection

What do you want? It works doesn’t it?

The guy who couldn’t care less about quality, that’s someone else’s job. He accomplishes the tasks that he’s asked to do, quickly. You may not like his work, the other programmers hate it, but management and the clients love it. As much pain as he will cause you in the future, he is single-handedly keeping your deadlines so you can’t scoff at it (no matter how much you want to).

The theoretical programmer

Perfection

Well, that’s a possibility, but in practice this might be a better alternative.

This guy is more interested the options than what should be done. He will spend 80% of his time staring blankly at his computer thinking up ways to accomplish a task, 15% of his time complaining about unreasonable deadlines, 4% of his time refining the options, and 1% of his time writing code. When you receive the final work it will always be accompanied by the phrase “if I had more time I could have done this the right way”.

Where do you fit?

Personally, I’d have to classify myself as the perfectionist. So, which type of programmer are you? Or perhaps you know another programming archetype that is missing from my list? Post a comment below and I’ll add it to a new updated list.

Comments

kunderez’s avatar kunderez

…perfectionist :D I am just constantly refactoring my code… but when it is finished, it is easy to read, extend, understand and maintain ( this actually has happened few times believe it or not ) … and when I am not refactoring the code I am just staring at the darkness… redesigning it in my head… over and over again :D

gadget00’s avatar gadget00

…duct tape! hehehe, in my experience I’ve been working on projects that needed this total duct tape-ness to be finished on time, and remain working without hassle. I’ve never had a full-developer position, so maybe because of lack of habits I haven’t been able to ‘improve’ the way I code

Ben Alabaster’s avatar Ben Alabaster

I have to say, I’m a hybrid between a few of these, depending upon the situation. I strive to be the perfectionist.. However, many times, restrictions don’t allow for that – i.e. time, resources, politics etc, consequently I have to drop into Duct-Tape programmer mode, coming back to perfectionist mode after initial release and refactoring to replace the duct-tape fix/change with a more formal and well factored update.

I do like to spend time as a theoretical programmer mode to experiment with new techniques that will make life easier going forward, but all too frequently though there’s not enough time for this.

Robert’s avatar Robert

I wish I could say I was duct-tape. I mean, who DOESN’T want to be that ninja who’s code is always effective?

It really depends on what I’m working with. HTML/CSS that I’m getting paid for? Perfectionist. HTML/CSS for myself? Half-assed. Same with Python. Hell, I’d argue that writing python as anything BUT half-assed means you’re doing it wrong.

I’d throw in a suggestion for “The Newbie”. You know, the fresh-outta-college kid with no real dev experience who won’t just take up his own time learning how to code, but somebody else’s, too? And it’ll take him MONTHS to acquire any practical knowledge?

That guy.

Robert’s avatar Robert

I think Duct Tape and Half-Ass are often two sides of the same coin. Same thing for Perfectionist and Theoretical.

And I get what you mean by ‘anti-programming’ but that’s becoming less and less a character trait and more just a reflection of doing work with a lot of useful frameworks that value DRY.

Alex Turner’s avatar Alex Turner

I think there is one missing. There is the mechanic programmer. The programmer who is in it to build the program and watch it work. The mechanic might enjoy programming but it is the end result which counts. These are the people who 20 years earlier would be fixing old cars and building radio transmitters in the garden shed.

Just IMHO :)

J’s avatar J

I’m a perfectionist:
-I heavily try to follow best practices
-I want to do it the way it should
-I want to understand/read/learn before using something
-I’m open to alternatives: I don’t stick to some language simply because I know the language

I agree with Robert2 that some types are on the same side of the coin. But maybe that’s because I haven’t seen some of those types yet.

@Robert1
I wouldn’t say that the code of a duct-taper is effective. It’s probably more spaghetti code, but it works. But he is effective in time, a high productivity.

Some types maybe also coincide with the learning model of David Kolb: http://www.infed.org/biblio/b-explrn.htm : The different types of styles used by people to learn new skills.

Muneeswaran’s avatar Muneeswaran

I am so enjoy this article.Its something interesting.I expect a lot from you.Finally i am may be a duct tape programmer.

farouk’s avatar farouk

I am the ‘anti-programming’ perfectionist. Wont re-invent the wheel. No way! and when I have the tool, damn, the code is beautiful,consice and works without any hustle or complicated trivia. Just the business logic we need. project delivered on time. How about that?

Michael Burke’s avatar Michael Burke

I would have to say I’m somewhere between the Duct Tape and The Half Assed programmer! I do things to the bare minimum, and if something fancy doesn’t work, rip it out and right something completely simple. Simple things usually work the best!

Jose Fernandez’s avatar Jose Fernandez

I’m a cross between perfectionist and duct tape. I love clean and well organized code and I’m always striving to improve my designs. But when stuff breaks or something needs to be done ASAP, I’ll “ruin” my designs with duct tape code in a heartbeat. The business always takes precedence.

The Doctor’s avatar The Doctor

I’m a duct tape programmer, I’ll admit it. This is why I didn’t go into application development – I know I’m a duct tape programmer. As a sysadmin if I have to code to get something done, I’ll do it, but I have no illusions about it being code that won’t make someone else’s eyes bleed. That doesn’t mean that I don’t try to do it cleanly, though – treat people the way you want to be treated, and all that.

Satya Narayan’s avatar Satya Narayan

Well.. Somewhere between Duct tape and half-assed.. in a good way :)

Marek Blotny’s avatar Marek Blotny

I’m in 75% perfectionist but I actually think that this is the best way to be efficient in long run. Code which is easy to maintain and change is invaluable! :)
Other 25% goes to duct tape type … sometimes all that really matters is if the product works.

Crias’s avatar Crias

Just based on a couple answers here, you’re probably missing “Swiss-Army Coder”.

Honestly, I’m like a couple of people here in that it really depends on the situation. I prefer, whenever possible, to be a Perfectionist, refactoring and simplifying as much as possible, and I like to balance it with Theoretical because if you haven’t evaluated at least a few options you never know if you have the right one.

However, every now and then business breaths down my neck, and I’m forced to shift into a Duct-Tape mindset – “simplest fastest way to make this limp along now, refactor/fix later”.

As for the anti-programmer, I really think that part of being a perfectionist is writing as little code as reasonably possible. The only code I’m ever willing to guarantee bug-free is the code I chose not to write. This sounds like just responsible DRY programming and framework use.

Gord’s avatar Gord

Duct-taper, definitely. Though I aspire to be the perfectionist, if I ever find the time.

Thomas’s avatar Thomas

I could suggest another type: “the follow-the-procedure programmer”

This is the guy who will not do anything unless they have been assigned a detailed description and requirements through the task management system.

They will not work unless there are details programming conventions in the company, or they will contribute to writing them into a1000+ pages document.

They will not do anything unless there is a procedure written for it.

When working, they will be very effective, efficient, fast, and clean. Their code will be neat, it will match exactly the company standards, and it will do exactly what the requirements want; exactly, and ONLY that, especially if the requirements are not very clear or precise enough (regardless of how obvious their actual meaning or context may be) on which case they may decide to choose the “wrong” interpretation just to make a point and “teach a lesson” to the requirement-writer.

They will spend 50% of their time programming, and 50% of their time in procedural and administrative overheads.

This guy is a fantastic worker when specs and requirements are established somewhere else, but they multiply by 10 the amount of work required by management/systems analysts/co-workers/any other contributor when they are done in house.

Very good for precise and highly defined tasks, though, and they do contribute to the company procedures being exhaustive and applied.

rodbotic’s avatar rodbotic

Duct tape, for the beta,
Perfectionist for the alpha.

I am a just get it to work, then make it pretty later.

Animesh’s avatar Animesh

Somewhere in the middle of perfectionist and theoritical… that’s possible, isnt it?

Mediocre-Ninja.blogSpot.com’s avatar Mediocre-Ninja.blogSpot.com

Nice post!
It reminds me of “10things” of TechRepublic about programmers:
http://blogs.techrepublic.com.com/10things/?p=262

Those classifications is really funny to developers :-)

BDKR’s avatar BDKR

For Thomas: I do not like the “follow-the-procedure programmer”. Especially when he is your boss!

For Animesh: “Somewhere in the middle of perfectionist and theoritical… that’s possible, isnt it?” I think it’s possible and I know I’ve been on both sides at times as a result of the jobs I’ve had. As it turns out, those were the best jobs ever had!

laurence’s avatar laurence

then there are the bastard programmers.

when given extra stuff to do, they give all sorts of reasons such as that the value add by adding a new feature isn’t worth the extra effort, yet they consistently attack other people’s work, and insist that the other guy needs to get these small features up and stuff.

Odin.Zeno’s avatar Odin.Zeno

I must say that there are some other kind of programmers… as I see around me

1. ???
These persons seem to be normal ones at a glance, but they really like to create new things rather than to do some routine works. Their abilities vary. More detailed split are not given.

2. Forger
These kind of person hates to do things again and again, they want to make a tool all the time to reduce their working time. thus, their production rate is relatively low.

Shelby Moore’s avatar Shelby Moore

I try to be the optimum fit to dynamic priorities of each situation, using all variants except the “half-assed programmer”.

Joe’s avatar Joe

unfortunately, many self-identified “duct tape”s are really half-assed. You descriptions are not that different in the first place.

Some crappy programmer’s avatar Some crappy programmer

I am just a terrible programmer. I am the kind who shouldn’t have the job he has or earn the money he does. I am everything that is wrong with programming as a profession.

ICanSmellCode’s avatar ICanSmellCode

I`m with Animesh. Perfectionist and theoretical. Refactoring ninja.

Prosper’s avatar Prosper

I think it depends from project to project.

Himel Nag Rana’s avatar Himel Nag Rana

I am a mixture of the ‘Duct Tape’ and the ‘Theoretical’. The 1% time of code make the decision to pick the right way! :P When it is (1%) sufficient time — I am the last one and when it’s a rush — I stick tapes and which brings a curve on my client’s lips!

Scott’s avatar Scott

How about the “Programming saved my sanity.” programmer.

I’ve been unemployed so long that the only reason I have not lost my sanity is due to the fact that I was writing code for my personal website.

Currently I am taking classes at the local community college to prove to employers that I can do what I say I can do because they assume I am lying when I say I can code.

I’m also paranoid. I won’t send code to a potential employer. I assume that any such request has no other purpose than to take the person’s work and not pay them for it.

In reference to the Bastard programmer, sound like a greedy rich person. Doesn’t want to give extra, but demands those extras from others.

In reference to the procedural programmer. That’s a good policy to have if you are doing contract work. Otherwise, you will end up working for six months while only being paid for one.

The only job I had was for a guy who said he wanted X, Y and Z in the program. OK, no problem. I hadn’t finished with the first function before he was asking for more functionality in the program. He wouldn’t wait until I had the basics of the thing up and running.

Then he began to complained about how long it was taking.

The more you want the longer it takes. Duh!

He also specifically stated that he did not want to pay for research.
The final rub was that every five minutes he asked me: How is it coming?
He had a very unrealistic view of what is involved with writing a program from scratch.

Sub Mode 1 – Duct tap just get the thing working.
Sub Mode 2 – Perfectionist. Refine code and get rid of needless duplications.
Master Mode – Leave me alone and don’t interrupt. If you do, it will take me five minutes to get my train of thought back. That’s five minutes if the process I’m working on is simple. Longer if the process is complex. Regardless of how long it does take me to get my train of thought back, you are paying for it, not me. And most important of all. How fast you could write the code and the fact that your salesman claimed the program will be available by such and such a time is completely irrelevant. I’m not you, I’m not the Flash and I most certainly am not Superman.Stupid promises and unrealistic expectations on your part does not mean super human ability on my part. II am just simple little methodical me. The job will get done in the time it takes me to get it done. It won’t take longer, and it can be faster.

Nothing personal, it’s just that I am neither machine nor slave. And if Employer isists on treating me as such, my base ball bat will want to kiss Employer’s knee.

No, I don’t have an issue with employers. Just people in general. ;-)
OH, did I mention I happen to be honest to a fault?

jjarun’s avatar jjarun

I am a mixed type depending on situation except the half-assed shit type.

rhabib’s avatar rhabib

there another category that you missed

The Clown programmer the sixth one ; he use the programme of others programmer and spend all the day playing games or surfing the net.

ysen.grin’s avatar ysen.grin

A perfectionnist duct-tape… I adapt myself to the context, depending on the deadlines and emergencies.

Or we could say a realistic perfectionnist. It took to me many years to adapt my maniac/perfectionnist side to the hard reality of deadlines and costs. But now it’s done and the clients loooooves me !

Zijin’s avatar Zijin

If you can strike a balance between all of the characteristics and adapt according to situations then you are a good programmer :)

Adriano’s avatar Adriano

I am the theorist, a hundred percent.
People around get nervouse to see me working, because I will only show some concrete work late in the project’s term. But when I do start writing my code, I know what I am doing and I know it will be right.

Phelios’s avatar Phelios

I’m the theoretical one.
The even worse one maybe, like to procratinate and complaint that “It’s not the kind of codes I want to write, I hate doing this!!”

1 simple word –> “lazy”

Mohab’s avatar Mohab

Well there are programmers who like to work in runs. Run 1, the programmer goes into duct tape mode. Still time left before the deadline? Run 2, OCD mode. More time left? Anti-programming mode.
I am sometimes like this, but most of the time I’m duct tape/half-ass hybrid. :D

Ahmed Tawfik’s avatar Ahmed Tawfik

Really, It is a good topic, I’m a mix between ‘duct tape’ and ‘perfectionist’ just concentration with good mood will make perfectionist :)

Bernardo’s avatar Bernardo

I’m the OCD guy when building an application, but the duct tape programmer when it comes to maintenance..

Apreche’s avatar Apreche

All of the above?

Oliver Beatson’s avatar Oliver Beatson

I oscillate between perfectionist and duct tape depending on whether or not I can tell what the functions I wrote three months ago are supposed to do.

JB’s avatar JB

Very funny. i start as the anti programmer, steal code where i can, then hack to ocd perfection.

Agnes’s avatar Agnes

Not really a programmer here, just know CSS and html … but I worked with programmers in startups. I would say they are all hybrids of some sort. From personal experience, the hybrid of anti-programming and half-ass type is most annoying … especially when they come up with a long piece of borrowed codes taking lots of memory and not really delivering the results.
I have also worked with the hybrid of duct-tape and OCD perfectionist … these are rockstar programmers … they work fast and deliver clean codes!

Quentin’s avatar Quentin

I’m definitely a theoretical programmer, always thinking about awesome frameworks and languages that would make my current task so much simpler instead of writing actual code. Then when the deadline knocks and I really have to get something out I turn completely half-assed.

I mean hey, if I can’t do this the right way then let me just get this over with and go back to daydreaming.

GMF’s avatar GMF

Please post more fried chicken stories. Thank you!!!

Me’s avatar Me

The Engineer:

Writes perfect code. Tests every possible scenario. Makes sure every line of code is executed. Retests everything until it is perfect. Spends 8 months on a 2 month project…

SAB’s avatar SAB

I’m duct-tape programmer since I was born. I’m working alone in 100 employees company where no one else knows anything about programming. All day long they inventing something new which is needed only that day and never again…

I have a special called scripts “Exec and die”

Sean’s avatar Sean

Yeh I’m definitely a duct tape programmer. I start off being a perfectionist but it doesn’t last long.

JHDeval’s avatar JHDeval

I am definitely the duct tape programmer. As my experience gets further I find myself moving towards the perfectionist though. I still maintain some of my first applications and as my clients add functions I find myself refactoring the code so I can make it work lol. Although it is duct taped and worked it was definitely not extend able. Each new application I find myself breaking my functions down further and further.

Charles G’s avatar Charles G

Theoretician/duct tape: What can I say, I’m a mathematician and I’m lazy. Sure I can be right, and want to be right, but if someone else has already solved the problem acceptably then the conversation has moved on to another topic. It does what it needs to do, fast enough, so lets move on.

Priom’s avatar Priom

The Anti-programmer programmer. From hell.

NickBelhomme’s avatar NickBelhomme

I’m a bit of everything, So that would make me programmer 6: the adapter. I adapt myself to the situation and job that has to be done…

Rainer Hilmer’s avatar Rainer Hilmer

You’re mistaken on the duct tape programmer because you wrote
“…and in a way that won’t break again”.
This is not true and that’s the problem with duct tape programmers! Those solutions are fast because they are dirty and will most likely break or cause huge refactorings as soon as something has to be changed anywhere else in the project. So at the end, the code of a duct tape programmer will cost more than well written code!

Johan’s avatar Johan

Another archetype is the “More features, less bugfixes”-programmer which describes a friend of mine. He is kind of like the Duct Tape programmer, but his patches just piles up and only fixes half the stuff. Basically piling layer upon layer of unstable code to try and make the unstable code work instead of fixing the problem at the source. Which is about 25% of what he does, the other 75% is devoted to developing new unstable features upon this already unstable mountain of code. In his mind the concept “elegance” lacks relevance when it comes to programming.

Jasper’s avatar Jasper

For hobby projects, I’m definitely the perfectionist. I want my code to be as perfect as possible and I’ll rewrite the whole thing 20 times if necessary. Which is good, because with each rewrite I learn new things and learning is one of the goals of hobby projects.

For paid work, I’m much more pragmatic. There are lots of things that you have to balance: the quality should be good so that it’s easy to read, test, maintain and extend, it should be robust, it must ofcourse be correct and perform well enough, and it must be delivered on time.

All the five types you describe above are programmers who lack understanding of the needs of the customer.

Ikatono’s avatar Ikatono

Definitely duct tape. Especially when I programmed Ti; when I can only see 7 lines of code at a time I really just care that it works.

Siderite’s avatar Siderite

I wish I could say I am a theoretical programmer, but I have no memory and/or attention deficit. Therefore I always think of ways to do something in a better way before I actually start anything, but eventually start testing every option because I can’t do it all in my mind. In the end I do the “If I had more time…” thing.
So the conclusion is that I am a BAD theoretical programmer :)

MrOffice365’s avatar MrOffice365

I am the anti-.i don’t prefer writing code though i say i am a codeless developer.

ashish’s avatar ashish

Going from half assed to perfectionist.

Geer’s avatar Geer

I’m the theoretical half assed duct-tape programmer.
I’m spending a lot of time thinking, then doing some proof of concepts, en eventually finish up some code that’s made up from those PoCs and are hold together by the duct-tape, but it works and is on deadline

Tom’s avatar Tom

hahaha, very good article, just some additional sympthoms for the theoretical programmer (from own experience). If you notice being disturbed by the nice new development tools, using more and more only paper and pencil always wondering why that particular programming language is not capable to do simple things that you already write on paper than it is a good sign being a theoretical programmer. Looking at your code in different projects it tends to be quite similar regardless of the programming language used. Another sure sign being a theoretical programmer is spending at least 90% of your time on designing, implementing generic algorithms or configurable frameworks and the required business logic comes only afterwards. It is a total nightmare to the boss who wants to see how the project approaches to the completeness. The only help is a clear and strict deadline.

alone_in_boat’s avatar alone_in_boat

None of the above.

probably closest to duct-tape & perfectionist/theoretical.

duct-tape mode – quick and dirty. Brain dump the solution before I forget it.
perfectionist/theoretical – spend far too much time perfecting/agonising over the quick and dirty code.

hey! nobody’s perfect.

ronal’s avatar ronal

very good…”The code may not be pretty, but damnit, it works!”, add quality and all ok

Carlos’s avatar Carlos

What’s up with the labels? Why label everything in the most superficial way so that only your biases are confirmed, and other people for that matter.
Seems to me that there is no context and no framing for these accessments besides some casual remarks.
Okay, someone fixes things very fast, and nobody cares how… yes the deadline was met, but if you for some reason you got a big nasty bug, that… say… ended up transferring loads of money to the wrong accounts, say… blowing up a rocket cause you got a type overflow…
Or managers setting arbitrarily short deadlines and you got screwed cause your requirement would have taken twice that time. But manager knows best, and he will be rewarded, and you’ll have consistently short deadlines. Which will make you prone to lie about what are your doing, and what are the realistic estimates. Effectively cutting honest communication, and usually making things much worse.
I don’t subscribe to the article views, cause people in this profession are more diverse and their work environment has an impact on how they do their work and its quality.

Tom’s avatar Tom

Missing the “copy-paste” programmer. It is a kind of mixture between the duct tape programmer and the anti-programming programmer. Unlike the anti-programming programmer he likes producing code (using existing one), tons of code, as if he was payed by lines of code written. He does not care about OO or functional programming or any other methodology. The whole feature is managed by one big source file when possible with a single main function. Implementing a new feature means seeking for a similar feature make a copy of it, changing few lines so that it works. Ideal for implementing huge list of similar business logics for an already existing application, easy to plan (he works linearly). The result is not maintainable not extendible, but fits to the actual requirements.

Missing the spagetti-code programmer. He likes quick solutions as the duct tape programmer, however missing the overview and the ability to make abstractions (or does not care to make efforts simplifying things). His code is as complex as can be and it will be more and more complex with every defect fix or every new feature. He might be a brilliant guy who can keep in mind a large dependency graph. He has a component that is essential for the whole application and that nobody else dares to touch in afraid of breaking somewhere something.

Tim Rowe’s avatar Tim Rowe

I’m definitely the theoretical programmer. Fortunately I don’t make my living programming and nobody depends on me ever finishing any of my coding projects, so no harm done.

Anon’s avatar Anon

My personal projects proceed thus: Theoretical -> Perfectionist -> Duct Tape -> Anti-Programmer -> Half-Arsed

Thomas’s avatar Thomas

How about the Slacker programmer? There the ones that go around asking other programmers how to do something when a 30 second search on Google would give them the answer.

Tuna AKIN’s avatar Tuna AKIN

Exactly i am a perfectionist programmer.

Tony’s avatar Tony

Theoretical programmer for the first 99%, then duct tape for the implementation. :-) But oddly enough, it’s always the code where years later people say “yeah don’t touch that part. it’s been working forever and the guy who wrote it vanished years ago”

Narud Shiro’s avatar Narud Shiro

The crypto-programmers: when they are coding only God and they know what they are doing and how it works. But when they end programming only God know what they did.

Fortunately that’s not my case. I’m in the perfectionist category ’cause my programs never have bugs, they just develop random features ;-)

kerem’s avatar kerem

duck – forever.

Vernon Miner’s avatar Vernon Miner

I used to be a perfectionist. Now all of my time is spent maintaining code that did not originate with me. I find I’m a bit of a chameleon in that my style is whatever was coded by the originator, or the last one to make revisions.

sumer’s avatar sumer

how about “let’s write a framework for that programmer”. I am one of them, I think…

Ratin’s avatar Ratin

I fall into the 6th category – the “Paycheck collecting pro-outsourcing programmer”

Bob’s avatar Bob

@Carlos – Agreed these labels are very superficial and huge generalizations.

Also, anyone who calls HTML/CSS as programming isn’t really a programmer to begin with. And unless you understand and practice patterns like Robert Martin’s SOLID principles in OOP and the equivalent established patterns in the functional, dynamic or declarative programming world you can’t really call yourself a perfectionist. Everyone thinks they are a perfectionist because they don’t know what they don’t know.

Most Hacker’s avatar Most Hacker

looooooool

I think I’m a copy of the anti-programming programmer !!
it’s just me !
sometimes I really feel that coding sucks !

particleSwarm’s avatar particleSwarm

The article mentions that duct tape programmers are “the foundation of your company”. That’s hardly true, and it really managed to piss me off:

Duct tape programmers excel at creating code that gets the job done, but is insanely hard to extend in a way that doesn’t break. When a modification on duct tape code is needed, you need the author. If you don’t assign the author to the task, it is likely to introduce a bug or extend the development time. This simple strategy can be very rewarding for a developer when there’s no auditing of code deliverables.

From a pure software engineering perspective, duct taping code is killing collaboration by injecting author dependency. From a management perspective, the duct tape programmer is the company champ. This is the cancer killing real software engineering done in the trenches by real men.

Russ Reese’s avatar Russ Reese

I’m mostly duct tape and half asser but I draw on all of those at times.

hukares’s avatar hukares

I’m usually the Duct Tape coder — I tried being the perfectionist but I never get to finish one single program with it.

Pulu’s avatar Pulu

100% Duct-Tape programmer :)

Bug-hunting is fun. The frameworks which software is built on aren’t always predictable, and release schedules are too tight to do perfect code. I’m just not smart enough to do it right first time :D

Sulaiman’s avatar Sulaiman

I’m the type of Perfectionist programmer that the anti-programmer loves: Always trying my best to write properly edited/indented, commented and reusable code :D

But the I’m just student right now, no idea if that is an appreciated skill in the industry…

Harald M.’s avatar Harald M.

Fortunately, most programmers are neither of these 5 types, but sensible engineers who know their craft and the aspects of complex technology projects and therefore produce acceptable – functionally as well as budgetary – architecture, design, code, and tests!
HM

Venomal’s avatar Venomal

I would second Harald M. and say that normally a qualified software engineer carries traces of almost all the types of programmers the author has listed. I can be a duck-tape/half assessed programmer most of the time due to deadlines, when I have time I try to be a perfectionist. When I have coded something before and I am asked to code it again, I usually tend to be the anti programming programmer. When ‘we’ dont give a damn about the employeer due to his policies and other factors I think everyone can become a theoretical programmer.

Its more based on circumstances and work ethics which molds one into a prominent type.

James’s avatar James

I’m not sure if I fit into any of these. I’m definitely not theoretical (I usually pick a way forward in the first 30 minutes of a new project), not half-assed (I write tests and care about quality), definitely not anti-programming (I love to reinvent the wheel when I get bored), not the perfectionist (my code is almost never efficient the first time through, I follow the “first get it working, then make it efficient” motto), and I’m not quite duct tape (I worry about ease of use, comments, etc)…

Xercron’s avatar Xercron

If I had to choose, Duct-tape but I think there maybe another category: The Interfacer. This is the person who gets code working with the real world; is driven by seeing code do something real and is prepared to deal with all the vagaries of coding esoteric and down-right bizarre functions just to make an old piece of equipment talk to a modern PC and .NET4. The patience of a saint and the determination of something very determined. This fits me precisely: who couldn’t get excited about using code to move massive equipment or capture and process image data from an camera system mounted to a motorised telescope?

Hassan Seth’s avatar Hassan Seth

I think, I am theoretical programmer. The Specs mentoned are often observed. Anyway, I also think my plannings getting better and better.

Alvin Villaflores’s avatar Alvin Villaflores

I’m a hybrid between perfectionist and theoretical programmer, with a little bit of everything else.

Rajiv Khaneja’s avatar Rajiv Khaneja

“The Not Invented By Me Programmer”

Anytime he is tasked with writing a modification to existing code he complains feverishly about the quality. Everything his eyes fall upon will be deemed to require a complete rewrite. He will say things like “This is spaghetti. The only possible way to get this done is to rewrite everything”. None of which will actually get rewritten; even if given enough time. He will spend near 100% reading existing code and designing “solutions” and 0% of his time on the new project. When deadlines pass and little work is completed he will launch into long vitriolic speeches directed at anyone unfortunate enough to inquire about the projects status. These often daily speeches will make it clear that nobody else could possibly understand the appalling state of things and will then continue on to vaguely describe, with little concrete detail, the hell in which he is forced to live.

Steffen’s avatar Steffen

I prefer to sit on fecal lounge cushion, is very good for comfort. You must change fecal material each day preserve hygiene at good level.

Paul Mc’s avatar Paul Mc

If I’d had more time, I would’ve been able to determine what kind of programmer I am. As it stands, I am probably between anti and not anti. There, it’s done. I said it.

Ashok’s avatar Ashok

I’m in a stage of getting myself out as a half-assed programmer, and leaning towards perfectionist, but my job often requires me to act as a duct tape programmer too (the deadlines and scrumming everyday, you know). So, I’m somewhere among those three. One more thing that I’ve noticed is no matter how perfectionist you think of yourself, the other guys will always make you feel that you are the worst programmer ever. Not that they are bad programmer or are wrong, and not that my programming is bad but I think its just a difference in the way people think, and the style of coding. The perfect programming is a holy grail and is context-sensitive. If you love design patterns, and your colleagues happen to be C hackers, and love AWK, you are now not a perfectionist but the dumbest in the group who can do other than refactoring a class into multiple classes, and making things complex.

Chavoux Luyt’s avatar Chavoux Luyt

I am definitely the theoretical programmer (if I can). But I think that much of the time it is just an excuse to try and make a boring, routine program interesting by using new technology or another programming language that I have been wanting to experiment with for a long time. :-)

I think another way to look at types of programmer, is the difference between those that like to interact with their clients (and get the “right” specs themselves) (anti-programming programmer?) and those who prefer only to work on the code and try to stay away from clients as much as possible (duct-tape programmer?). And (the same ?) difference between those who care about the look-and-feel of the program (and actually like working on user interfaces!) (maybe some half-assed programmers will fall in this category) and those who only care about the fact that the program does what it should correctly (most of the duct-tape and many perfectionist programmers I have met).

Arne Babenhauserheide’s avatar Arne Babenhauserheide

I miss the type: My code is a tool. It solves a problem. And I want to be able to understand it 4 years later spending less than 5 minutes reading. Also I want to be able to modify it easily to solve related problems.

A kinda Pythonesque type :)

Andrew’s avatar Andrew

“A kinda Pythonesque type”

Does that involve being slapped with a wet fish? It sounds like it does ;)

John’s avatar John

I have to add the “Artiste Programmer”

That is the person who is about 1 notch down from the perfectionist. He knows there is often several ways to accomplish a task, 1, 2 or 3 of which are acceptable to him but often a current favorite.

He adds to the skill set so those options and favorites change over time.

The key is, he uses, at a minimum, some level of proven method to accomplish the task and in the end produces a functional work of art. But he knows that, although it meets the needs of the gallery today, it could have been done better and had it been done so, stood a modicum of a chance to be a time honored favorite with in the appropriate circle of enthusiasts.

Fortunately the sales people throw a bit of complimentary light on it and this thing will be fine.

And he or she says “next time…i’ll do this particular part a little different and see how well that works.”

In a sense programming is an art. Logic streams of light, shadow, hues and texture.

But much of the world around us is full of people who cannot fathom or appreciate the potential of developing even something close to a masterpiece one day, though with a bit of reading, studying and application could likely do something worth noting. So some continue to duck tape and theorize and never really come to a balance of form and function.

So, likely, we all need to give ourselves, in the middle of the stress of life, the permission to take the opportunity to lift our weary eyes up from behind our IDE’s and text editors and ask ourselves quite often, “What kind of art is this and am I getting better it?”

The honest search for better practices will render a few gems of methods you will not soon forget and may save you some serious pain and suffering in the future.

May the artiste programmer in us discover our strokes of worth in this sea of code.

Garnesh Mahindra’s avatar Garnesh Mahindra

I code with my tool. I debug with my tool, my tool is very useful for software developmenting.

Fuzi-san’s avatar Fuzi-san

I’m really a theoretical programmer.

Kurnt’s avatar Kurnt

Hey guys, please do not discourage this new fellow. It is ok if he is a new bee. He is surely to come up with better programming package as soon as he gets accustomed to things.

Lordrach’s avatar Lordrach

I’m absolutely the theoretical one, I spend really huge time comparing technologies and studying every single option I’ve got, and end up doing things half ways of never finish my projects, and I’m really getting tired of this, any advices ?

satheesh’s avatar satheesh

i am anti programming programmer

cidd’s avatar cidd

I’ll add the MacGyver Programmer. This programmer can do the job even if all see the solution to the problem as near-impossible.

*He/She can also code while swimming, in a broken falling elevator, and without a computer.

An Architect...’s avatar An Architect...

You need to add ‘the Coder’… cannot really program (develop) anything but must work from a very detailed specifications document (pseudo-code, flowcharts, dataflow diagrams, etc… etc… etc…).

You also need ‘the Ninja’. These are heroes who really know nothing about anything, and are management’s best friend… and my arch enemy… because I have to fix the chaos they introduce with anything they do.

and I am ‘Mikey’. I eat any code… fix it… anf then do not understand why they do not fire people.

Liam’s avatar Liam

I am not Worthy…

ejes’s avatar ejes

i’m a perfectionsit.

theDave’s avatar theDave

Without a doubt, duct tape. Aided by the fact that I’m a theoretical guy. I want to hammer out all the details and processes of each bit to get the most out of what I’m doing. As a result, I don’t always have the most time, so it’s last minute and I’m sewing everything together- bang, bang, bang (like a sewing needle) until I get it right. The code at the end rarely looks exactly how I dreamed it up in my mind but it’s almost always effective and incorporates the big parts of the theories I spent so long contemplating.

If I happen to repeat a variable here or there to get it done- if I’m calling a few methods in a nonstandard way, well that’s all in a day’s work for a Duct-Taper. What’s that- comments?!? What would you possibly need comments for? Get out of here with that weak ass.. comments.??? Pull yourself together.

Kieth’s avatar Kieth

Robert Said “I’d throw in a suggestion for “The Newbie”. You know, the fresh-outta-college kid with no real dev experience who won’t just take up his own time learning how to code, but somebody else’s, too? And it’ll take him MONTHS to acquire any practical knowledge?

That guy.”

To that I would say that this is probably me, not because I would take up somebody else’s time to learn to code but because I an just learning and every one learns from someplace. I doubt that you just woke up one day knowing how to code, I am sure that you learned to code someplace. That being said, I would like to suggest the “I think I am a programming God” You know, the guy that has been programming since birth and writes code that is perfect every time and puts down anyone else that wants to learn how to code.

candra’s avatar candra

perfectionist :D, When i finished, i think there something left behind or i thinks some function not opitimized.

Nomus’s avatar Nomus

Something very similar as Crias said, ‘The soldier’ programmers. Heavily brainwashed by good for nothing highly paid PMs on the company loyalty.

They have been thought, “you guys are the supermen”, and “the guys who can do anything anytime”.

And the soldiers cum programmers continues there warfare against unseen enemies to save their company as well as the world.

biteric’s avatar biteric

i am a the duct tape programmer with an anti-programming programmer

Aceofsquares’s avatar Aceofsquares

I like to think of myself as being a combination of a couple. I first start off as the half assed programmer because I just want to get something down to begin. Then I’m the duck tape programmer, fixing my problems even if it doesn’t look good. Then I’m the OCD perfectionist. Testing my code over and over and over and over and over trying to break it and recoding or adding code to make it work flawlessly.

Einacio’s avatar Einacio

I’d say I’ve been all of them, even in the same day. But I like duct tape, by most the most fun and natural to me

fajas colombianas’s avatar fajas colombianas

I am a duct tape programmer aswell. Even though the codes are ugly, as long as it does the job, then its done. And i’d let my client do all the decoding when they want to change something.

StephenB’s avatar StephenB

I fall somewhere between the duck tape programmer, and the anti-programmer. I may not always be fast or neat, but damnit if I’m not going to get it done and working, and with the least amount of effort needed!

JacobH’s avatar JacobH

I’m definitely a duct-taper at the moment, with hints of the half-assed. Occasionally I’ll step back and come up with a plan, but most of the time I just keep adding ‘tape’ until it works.

Flonk’s avatar Flonk

Definitely the OCD perfectionist :D
“IF I PUT -1 RIGHT THERE I DON’T NEED +1 TWICE OVER THERE, THATS ONE +1 PAYOFF”

Once the basic functions work, I spend hours on fiddling around and minimizing the code. Oftentimes in really minor aspects that no ones ever going to notice. But I just have to.

Laurent’s avatar Laurent

Hi,

Here in France, all developpers are efficient, perfectionist and they respect dead lines.
I think you forgot, french developpers catergory…

Good analysis

Kisses (friendly)

Laurent

Laurent’s avatar Laurent

I totally aggree with {An Architect…} I’m also an architect (a very very good one) I’m anonymous so I can telle who I realy am

I had a f….g, a.s h…le, ninja in my last team… I wanted to throw him by the window 10 times in 6 month…

I’m 41, i code since I was 10. This guy, 27 years old, 2 years of experience, wanted to teach me my job…

The next ninja that try to enter in one of my team is a dead ninja !

Bye

prog pants’s avatar prog pants

Sweet. This reads like a horoscope. I think if you have been programming long enough you have been all these people at some point in time. But as you gain experience you make judgment of the project and how flexible or dynamic it should be and you become the programmer for the job. Like if your making something for an ad that will be online for a limited time and a tight schedule then you can think about duck tape. But if your making an app that will not die and will continue updating to versions that need to be flexible, you might need to be OCD and theoretical about your code.

What do you call the programmer that follows oop and conventions for working in team and thinking of his other fellow programmers being able to understand easily their code?

Uprogrammer’s avatar Uprogrammer

omg, i’m a duck tape programmer….

DiamondSoul’s avatar DiamondSoul

Hmm… I’m probably a combination of perfectionist and theoretical. When I finish something, it usually is the beautiful masterpiece type, but me actually finishing something happens so infrequently due to my theoretical side. Occasionally I will get fed up with my own lack of productivity and switch to duct tape mode. Really the only one of the 5 that I don’t identify with at all is the anti-programmer. I tend to distrust other peoples’ code, usually end up spending more time scrutinizing it to make sure it’s “good enough” than they probably did writing it, and sometimes just end up throwing it out and writing it myself.

Shashank Sharma’s avatar Shashank Sharma

Well, I’d say, I’m the pendulum among all these types of programmers, based on the situation.
My code has always been treated and known to be the best looking, readable and clean, among the team(worked with different companies and got the same reputation every where), and always tries to make the code simple, when ever it comes to me, either for a fix or for review. But most of the times, I’ve been the Duct-tape type programmer, when no one is able to do it and it needs to be done… Give it to Shashank… thats has been the trend in my short ongoing career of 3.5 yrs as programmer… but I always strive to be a Perfectionist Duct Tape Programmer…

If a programmer can tape the duct with the perfection…. what’s better then that…

Pedo Rivera’s avatar Pedo Rivera

I’d fit somewhere between the anti-programmer and the theoretical programmer!

Trey’s avatar Trey

Mix between duct tape and half ass

Marçal’s avatar Marçal

When I’m developing, it’s a mix between Theoretical and Perfectionist, but respecting the client necesities/needs.

When I’m fixing bugs (because it’s not a exact science), sure I’m a Duct-tape!

ghost’s avatar ghost

Duck Tape…. ha h aha ha

Broost’s avatar Broost

Definitely a perfectionist, even when bugfixing … any given bugfixing session can turn into a complete framework redesign pretty quickly if I’m not careful.

I work with a theoretical programmer and a duct tape programmer though, I think you need them around to keep things interesting.

I can say I’ve interviewed about a thousand anti-programmers (or tweakers as they refer to themselves). We also hired a half ass programmer not to long ago but I doubt he makes it another two weeks.

Lng’s avatar Lng

Duct Tape, just love finding bugs and/or solving something in a way the other guy goes: “How did you make that work?”

Elena’s avatar Elena

I’m “The Newbie” as some else described this before me. :-<

Ackou Jens’s avatar Ackou Jens

Hmm I think I’m the Theoretical Programmer. I’m always thinking of the most efficient way to do something in code but while doing that I’m just wasting time. When the deadline is near I tend to switch to the half assed programmer so I won’t get complaints of stuff not working.

Edwin’s avatar Edwin

Oh yes, definitely duct tape. Servers crashing around you, processes failing and a yelling manager: “I don’t care how you fix it. We’re loosing money”. It’s fixed and as long as the functional requirements don’t change, it’ll keep working. Only system we can test this on is .. indeed the production environment. At some sites they still have to click away my message “no error exists for this message” ….

Ziao’s avatar Ziao

The theoretical programmer, definitly. Although in a much less extreme extend :)

Eric’s avatar Eric

Theoretical Perfectionist. I spend most of my time thinking of exactly what the code should do and then I just rewrite that as actual code. I usually present my finalized work, and it still isn’t very hard to meet most deadlines

David’s avatar David

Duct-tape + Half-assed!

Well, it actually depends on how big and critical the project is… big project with time to do it? I do a little of Duct-tape+theoretical, because on such projects i like to make sure it is done correctly, but i DON’T spend too much time being theoretical… and get to be duct-tape quickly ;)

Nice article!

Tykayn’s avatar Tykayn

hehehe, very funny!
I am a wise assed programmer. I prefer to explore my own code before using frameworks of other people. but i love to learn lot of stuff. So i am a mix of it all :D

canofcode’s avatar canofcode

wannabe perfectionist duct-tape programmer! that’s sums me up!

thl’s avatar thl

What about the non trusting type , someone who doesn’t trust anybody’s code you know the one that always starts from scratch even when the wheel had already been invented , he just must invent it again in a slightly better shape ( this one almost half the time misses the deadlines ) but you have to admit his final work is like the perfectionist and he knows his code better than anyone — he does have the advantage of learning by experience

DD’s avatar DD

I think that I am a duct taper!

julious’s avatar julious

I think i’m between Duck-tape, anti-programmer and perfectionist. I like to create my own code and do it so it won’t break. When I have it that way I try to make it look better. And if I don’t know how to do something I look for other codes but for learning from them!!!

Coderbay’s avatar Coderbay

very interesting types. Enjoyed the article

Vuyiswa Maseko’s avatar Vuyiswa Maseko

i think i fall under “perfectionist “

islam’s avatar islam

duct tape
you dont have to put the exact code for the situation i like to to be creative

Riddhiman Das’s avatar Riddhiman Das

Great article! I think I’ve always been the duct-tape programmer though, although I always keep wishing I was more of an ‘object-oriented’ perfectionist. I’d blame it to my C programming past I guess.

Jay Markat’s avatar Jay Markat

Duct tape when using C++ and perfectionist while using HTML

monyong’s avatar monyong

not programmer : i’m going to code nothing at all

Snehal Masne’s avatar Snehal Masne

very good…”The code may not be pretty, but damnit, it works!”, add quality and all ok

Anton’s avatar Anton

I’m a duct tape programmer for sure.
There’s nothing pritty about my code but it works for sure and does so for an eternity..

Love this post, thank you for making my day!

rajesh’s avatar rajesh

I think I’m a duct tape but not sure. I write a code that no one can read (commenting, program name and varibale names are irrelevant as long as it’s doing d job). Sometimes, I want to resuse an old code of mine and after struggling to understand my own code I venture on writing a new code for the same task.

harry’s avatar harry

I dont think I fit any of these. maybe a cross between duct tape and perfectionist if thats possible

tnt’s avatar tnt

Half assed

tnt’s avatar tnt

I used to be half assed :-)

Charles Daly’s avatar Charles Daly

I guess I’m a duct tape programmer especially when the company needs the program fixed ASAP. As long as it works and fixed I feel contentd.

Laurel’s avatar Laurel

ooo I have an archetype you missed : The Token. That’s the sarcastic name for the only woman in the sea of male coworkers. She needs to spend more than her fair share of time initially justifying her right to be there, deals with more crap than any of her male peers can imagine, and in the end is accepted because the code doesn’t care what her gender is, just the humans. Her most powerful weapon is humor. If you haven’t met this archetype yet, well, that’s sort of the point ….

Ankit’s avatar Ankit

I am a duct tape programmer. But conditions usually force me to become a anti-programmer, that is what I don’t like …

anglade philippe’s avatar anglade philippe

A good developper …

1) Whatever the tools/code he uses; 1st is to document (in code or by a “bible” of his work)
2) Takes account of the users : the program must be intuitive, easy to use
3) ..and that’s the most difficult : any error from the user should be or signaled and better and even more difficult, permit the user user to “go-back”.
4) I agree that a dev. must be curious of all about technos, languages, optimizations..

I’m French, sorry 4 my poor English.

Philippe.

Buzzlair Voufincci’s avatar Buzzlair Voufincci

one of the best piece ive ever read!

Khairul Alam’s avatar Khairul Alam

One of the great post.I agree with this post and also like this post,thanks a lot to share it bro. :)

John Paul Handrigan’s avatar John Paul Handrigan

When I’m in a rush… I’m a ‘duct-tape’ programmer. Otherwise, I’m ‘OCD’. :P

abhishek’s avatar abhishek

i am a DUCT TAPE kind….just tell me the problem and i will give the solution ASAP,but can’t promise anything on how optimum the code might be……….and that’s the real thing….
OCD’s and THEOROTICAL are timekillers and to my great observation HYPOCRITS…..
why do you need to study a phenomena when you already just know what you want????
and when it comes to maintainence…….the Anti-programmers are utterly HOPELESS
if you work as buisness analysist or in any SERVICE BASED company any thin else then the DUCT TAPE is a worthless resource to posses.

wibiyana’s avatar wibiyana

I definitely is the duct tape programmer hahahahah :D :D :D

nick’s avatar nick

And there’s Code jesus, sorta like Neo

James M Singleton’s avatar James M Singleton

The jamesmsingleton.com website is written in HTML5/CSS3 and must validate. Therefore, I had to get rid of lightboxes and other eye-candy just to validate. Why validate? It doesn’t help as far as SEO but it reflects the reputation of the webmaster.

Dilan Gilluly’s avatar Dilan Gilluly

I’m probably OCD Perfectionist type. I play around with code, but I’ll rewrite something five times and play around with it and it’s never good enough for a release.

Mr. J’s avatar Mr. J

I am theoretical Programmer, I would explain further but just don’t have the time.

jeremejazz’s avatar jeremejazz

I vary from being duct tape and half assed.. I also have perfectionism sometimes.. it really depends on the mood i guess

Kat’s avatar Kat

I am the newbieeeee xD

Argie’s avatar Argie

I think i’m the duck tape one..

Umm Ninsis’s avatar Umm Ninsis

How about the English teacher. The Pro-grammar?

eduardo’s avatar eduardo

I’m a theoretical programmer…:D

Rahul Parekh’s avatar Rahul Parekh

Little short of perfectionist and a little bit of duct tape. Depends on how strict the deadlines basically.

Charlotte’s avatar Charlotte

“Perfectionist”? Did you write this entire article just to pat yourself on the back? Fuckin’ geek.

Josh’s avatar Josh

I have to say that I am theoretical. I am a mathematician first and a programmer second.

Halit’s avatar Halit

I’m a theoretical programmer

Kees Schepers’s avatar Kees Schepers

Hell yeah i’m a duck tape programmer!

Luke’s avatar Luke

I’m a real programmer…

and i can tell you most of the work i do takes place quietly; in the dark and away from any computers.

Programming is a small part of information engineering; the part where you tell your computer about all the amazing things you’ve thought.

This period tests your ability to type, remember lexical conventions and not be distracted… however it is irrelevant to the task at hand.

The five classes of programmer are actually five ways to deal with the difficulty related to jobs you don’t feel passionate about and/or didn’t design.

When your writing something for yourself;
Your not too slooow
Your not too Fast!
Your not half asses and
You’ve already done the theory.

Peace out fellow scientists.

Kt programmer’s avatar Kt programmer

I’m a: “leave a tiny glitch so I can crash the program if you fire me so you’ll have to rehire me programmer”

Wouter Hoolwerf’s avatar Wouter Hoolwerf

I would love to be the perfectionist, but in reality my work would probably more classify as the ‘half-assed’ or ‘duct-tape’ guy…

But just like you say ‘it works!’

Though I must say, that any new work I do comes closer to perfectionist. In new jobs I always program OOP and always keep the probability of later additions and modifications to the code in mind when developing functions. That means my most recent works are all pretty clean coding. So lately I may come close to ‘the perfectionist’.

Lalit Mali’s avatar Lalit Mali

I can’t decide. I am somewhat the theoretical one :|

Charles’s avatar Charles

I’m a greybeard and I use different approaches depending on the situation. For a program that will be critical, will run often and for a long time, it is worth being a perfectionist to avoid having to revisit the code. For a one time, “I need a list of for my spreadsheet” type of program, duct tape is perfect. Often I don’t even save the code. In general I am an anti-programming programmer though, I try and avoid writing code by reusing my own code, stealing from the Internet, or stealing form anyplace I can. Above all, I am a “get paid” programmer.

Snork’s avatar Snork

It’s also important to recognize the work environment as this will dictate how a worker should and could respond. When reporting to micro-managing freaks, it’s best to just do whatever they want, no more no less; call this the bend-over-and-take-it programmer. For non-micro-managers, do what they want and offer helpful suggestions, call this the duct-tape+ programmer. When reporting to truly gifted programmers, do what they want, and try to learn; call this the perpetual student programmer.

Sebastian’s avatar Sebastian

I guess I’m about 50% perfectionist and 50% theoretical programmer.

Tahir Alvi’s avatar Tahir Alvi

Totally Agreed!

joey’s avatar joey

I’m totally the half-assed programmer. I get my project and have it doen almost immediatly and it works. I might not make a plan so it’ll be spaghetti code but thats okay with me :)

Barbara-Paraprem’s avatar Barbara-Paraprem

Looool…

Hammad’s avatar Hammad

Well, currently i will attach me with perfectionist but want to become theoretical.

IP Programs’s avatar IP Programs

I am theoretical perfectionist. Although most people don’t like the way I program…

Geoffrey Hale’s avatar Geoffrey Hale

I’m some combination of the anti-programming programmer, though really I’m just a hack, and the OCD perfectionist, though I don’t really know what I’m doing so it’s only gold in my world…

Chris Oliver’s avatar Chris Oliver

The legendary programmer… The man nobody dares attempt to converse with.
His code can move mountains, and bring the population to their peasant knees.

Muahahaha!

Right?

Allan’s avatar Allan

Duct tape. Just that simple.

Brian’s avatar Brian

Missed one Self proclaimed programmer
The one whos a perfectionist with there own work, does a half ass job with others because he doesnt like programming just a self taught to be able to perfect his own work and thats it, He knows what he needed to know and does less than what he knows.

Erik’s avatar Erik

Well i am a anti programmer programmer.. i mean i can code but i don’t like to invent the wheel all over again. I like using frameworks to cut down on the code as much as possible. I don’t have perverted need of coding everything :) I also like visual developer tools where i can drag and drop and build interfaces and control the different components in a easy way. I’m more of a top -> down programmer and not the other way around.. i know some programmers that can go for weeks/months without even seeing any visual result of their code.. i couldn’t do that. With the tools that are available for us today you can’t really say that the anti programmer is much more slower then any other programmer. The code generators and so on are getting better and better making the code really good and also easy to handle if you need to go deeper. As an anti programmer you still need to understand the basics about programming.. there is no way around that.

The time we get to make apps today are getting less and less so you need to cut down on your developing time. The anti programmer has a chance of getting ahead here.. but that will only work if he doesn’t reject coding all together.. the trick is to know what you need to put an effort into coding your self and what features or functions that doesn’t need any special coding from your part and where you can use frameworks or other helpful tools.

Gopal Aggarwal’s avatar Gopal Aggarwal

I wanted to be a perfectionist programmer while in college, with the idealism bubbling in me from reading The Mythical Man-Month, Code Complete 2 etc.

But two months of on-the-job training with new technologies and pressure of deadlines has transformed me into duct-tape programmer. And I doubt if I’ll be able to change my mentality again.

dejaime’s avatar dejaime

Another DuctHere? [:
But I’m quite perfectionist when I’m programming personal projects!

Rarufu Maverick’s avatar Rarufu Maverick

LOL Yeah I’m very perfectionist lol

Rafi’s avatar Rafi

I think there is one type missing; the mix.(Insert more creative name.)
the guy who will get things done in a “duct tape” manner if short on time and goes “theoretical” if he has plenty, if someone is pushy he becomes the “perfectionist”. when things don’t work out he is “half-assed” and when he has no idea what to do he is the “anti-programming” programmer. this is where i fit

CopyPasta’s avatar CopyPasta

copy pasta.
pasta
pasta
yum

KB’s avatar KB

None of the above. I’m a technical writer and for the first 20 years of my career HR and online job apps never listed “English” as a language. I think programming started out during WWII as a secret society of encryptors and, in my experience, almost all of them have an incomprehensible aversion to writing “words”. I’ve seen extremely talented and accomplished programmers break into a sweat when asked “Can you write a paragraph explaining that feature.”

Kikaysikat’s avatar Kikaysikat

I’m the anti-programming programmer! :))

Eric La Pierre’s avatar Eric La Pierre

I am the wiz kid programmer, tell me what you need done quick fast and slick…. Any OOP language and I am your guy boom… call me cocky but im a fresh outta school WIZ KID! I love how 90% of the tools on here are “1 part duct tape, 1 part perfectionist…” all parts tool.

Jason’s avatar Jason

OCD perfectionist but

Jason’s avatar Jason

OCD Perfectionist

Emerson Mitchell’s avatar Emerson Mitchell

I think I qualified as a ductape programmer. 90% of my job was fixing buggy code.

Ahmad’s avatar Ahmad

Nice article..
I think i am: 50% perfectionist programmer and 50% theoretical programmer..

Paul Aldred’s avatar Paul Aldred

Ha! Great article. I’d definitely say I fall between the OCD perfectionist and the duct tape programmer. Which extreme depends on my mood that day and what deadlines I’m facing – however I do always refactor to at least consider other developers who have to use my code. It’s more a pride thing for me.

SiPlus’s avatar SiPlus

Nice read.
It’s a bit hard for me to classify myself. I think I’m a duct tape coder. I don’t care about readability, I hate OOP, the only thing that matters is performance. And memory usage. That’s why I love C, somewhat like C++ and hate .NET, Java, Lua, Perl and Python.

A Classic’s avatar A Classic

I give you the bloater.

The bloater’s metric for measuring productivity is to do a line, word and character count. Their code leaves you with the impression that were either paid by the line, sabotaging the project or deliberately creating work to secure their position. Their motives will be called into question as you wonder were they afraid that the work would run out and felt the need to work in a more arduous manner to reduce the rate of consumption or to create more work to make up for any work done?

The bloater should not be confused with other types of programmers that produce bloat such as stupid or lazy. The effect on code economy is the same where by ten lines or their code might be worth only one line from a respectable programmer. The key difference is that the bloat appears to be the intention of the bloater rather than a side effect or by product.

Bloater have some tale tail signatures. For example, they may show a reasonable skill level in handling loops and arrays in some areas yet unroll in many areas and to extremes where you have hundreds of lines where the same could have been done in dozens. To hinder refactoring and maintainability the bloater has a special defence against this and that is inconsistency.

Snehal Masne’s avatar Snehal Masne

When I’m developing, it’s a mix between Theoretical and Perfectionist, but respecting the client necessities/needs.

When I’m fixing bugs (because it’s not a exact science), sure I’m a Duct-tape! :)

synju’s avatar synju

I think I’m a hybrid of 3 kinds of programmers, and I apply the different mindsets either seperately or merged as I’m coding.

1. Perfectionist:
Get a clear understanding of what is needed.

2. Theoretical:
Sit and think for a while (within reason) about a few solutions.

3. Ducktape / Perfectionist:
Craft some code that works almost immediately, it may not be pretty but it works, and also try to keep the code in good understandable form (within reason).

4. Ducktape:
Deliver the working code (This meets the deadline).

5. Perfectionist:
Improve on the code and make it pretty as time goes by.

6. Ducktape:
If a bug comes up, fix it asap.

6. Perfectionist: Repeat step 5.


Its actually simple.
Get the idea in your mind. think of a few solutions, write rough code, deliver it, make it better afterwards, and lastly ALWAYS be responsible with time, because when you’re coding for a living, time is money friends.

Hyung’s avatar Hyung

kkk!! Nice article~!

Alfred R. Baudisch’s avatar Alfred R. Baudisch

Duct tape most of the time, I just want to get things done! But controversially sometimes I’m a bit of a theoretical programmer and I hate when I’m like that.

Larry Davis’s avatar Larry Davis

Their may be another type of programmer. A person who lacks most of the basic programmer skills. I have met several of this type during my career. They get into programming for the pay, or the “glory” or some other reason. These types lack the ability to think logically, problem solving ability, or understand how a computer really works. One of these “programmers” even admitted he did not have the skills when the company I was working for finally released these types of programmers. These people stumble along for years and play at programming. They only survive on the skill and kindness of others. One of the tricks they use is almost always asking questions of others either in private or in meetings. They very seldom answer any questions asked by others.

These type of “programmers” may not be real programmers at all. Only actors playing the role of a programmer.

Timothy’s avatar Timothy

I’m definitely perfectionist. I spend more time thinking about how awesome the code should be, never mind the end product. That’s just so I can reuse it later.

Matt V’s avatar Matt V

“The Old School” Programmer

You know the type that was coding back in the day of FORTRAN and Pascal and spends most of his/her time telling you how much better it used to be in the old days, on the old systems vs. using the new methods on new systems. Invariably, this type contributes a new (old) way of doing the job after many hours of avoiding what the young guns have already begun doing.

Chris’s avatar Chris

I think that there needs to be two more categories added, “the Coder” and “the Ninja”

Illutrated above, “the Coder” cannot program properly to save themselves, they need to be given every detail to a program (heck even the structure of a function name) with pseudo code and flowcharts. Or they’ll just sit there to scratch their butts.

“the Ninja” will jump in, hack slash and disappear from sight. They’re management’s best friend, but a programmer’s worst nightmare. They do anything in their power to make things “look” like it’s working and when it’s in Testing, it falls to pieces but they’re nowhere to be found to be Fired.
They make “the Half-assed” look like a hero.

Sam’s avatar Sam

lol, “And that’s the real difference of 0 and 1” xD

Edwin Manuel’s avatar Edwin Manuel

Theoretical Programmer! Haha. I am so proud it :)

Ammar’s avatar Ammar

oh my GOD….! I’m theoretical programmer.

manoj’s avatar manoj

duct tape programmer…..!

sairam’s avatar sairam

nice

Wandi’s avatar Wandi

somehow #4 hits me lol…

dmstr’s avatar dmstr

I’m a bit of everyone except half-assed. Huh.

Lizzie’s avatar Lizzie

Bit of everything depending on the circumstance, more on the perfectionist side, and I cannot bring myself to write horrifically terrible code. My main drive is writing clean, efficient and READABLE code. So many people forget to make code readable. Drives me insane. If you can’t read it you are just going to rewrite it. I mean thats why I rewrote it in the first place ahhaha ;).

Randy Bastian’s avatar Randy Bastian

i think, i am “The duct tape programmer”..
lol

Code Do Thing’s avatar Code Do Thing

Reading this has made me realize that I’ve gone through a phase of all of these at some point or another. I don’t know what to call the type of programmer I am at this point because I read about a lot of different paradigms/methodologies and find that all of them go too hard in their own respective direction, but each have gems to be extracted.

I think the sum of it is that if you want there to be a general concept of a “good” programmer, it’s someone who can evaluate what must be done and leverage a combination of these archetypes accordingly. It’s all about delivering value to someone, even if the value is just fun and the someone is you. ;)

Zorty’s avatar Zorty

There are a few more, unless they were described above:

The Inventor: This guy just loves to make Rube Goldberg machines, contstantly making routines that crank out unusual results, that when stacked together form an entire process. These guys just love gears, gizmos, widgets and thingees, and in the end are very polished syntax welders with a knack for novelty and could not care less if the project ever is completed. They just want to make stuff.

The Control Freak: They leave zero rem statements, and make unnecessary and obscure blocks of code that require them to be always involved. Job protectionists.

Obfuscators: They want to disguise and confuse so nobody but them and Spock can decypher their gibberish. They win the award for the shortest variable names and most obscure Unicode separator characters that require google searches to re-use.

The Abstract Artist (Code Encrypter): Nothing is clear, everything is fragmented, and it takes an enormous amount of brain ram to hold the entire flow in your head for even the simplest tasks. They turn a simple variable assignment into 4 subs, 3 properties and 2 function calls.

The Bleeding Edge Adrenaline Coder: These guys never stick with a trend, always abandoning them for the newest trend they snarfed off the web. These bandwagon athletes are always so far ahead of the curve that they never have time to actually code.

The NonCoder: These people were somehow mistakenly provided access to development tools, and probably should have stayed in the HR department.

** SUBTYPES **
There are also some Sub Types which all main types can exhibit:

Bad Namers: These guys name the Billing module library “class hj$d2.package.ver2.kentuckyLIVE.dave” or the AccountNumber variable blueBox4

Contradictors: They frequently violate their own patterns, naming schemes, styles, etc. You can never “learn” their coding approach and each team co-authoring is a dangerous syntax safari.

Non/Bad Remmers: They leave no trails, notes, scraps or even rem headings for their code, even for themselves. Anyone inheriting their code will usually end up scrapping and re-writing it all after screaming expletives until they are hoarse.

Zorty’s avatar Zorty

I forgot one.

The Tornado. These guys will completely destroy every piece of code they ever touch, then get eventually fired and move on to another position, only to completely destroy everything they touch at that unfortunate organization.

Vladas’s avatar Vladas

I’d introduce another type of programmers – Psychopath programmer.

I think it best describes me as a programmer. It’s close to duck-tape type, but with more hooligan attitude. I ignore most of best programming practices. I like the most perverse languages, like Javascript and LISP. My goal is a working piece of code, never mind how it looks in the eyes of “normal” programmers.

Vladimir’s avatar Vladimir

There’s another type: Doc Worm

“It’s not written the way the standard says!”

Even if you write it efficiently for the current task but disregarded some standard, he will point it out, even if the project just says “Hello world”, he’ll definitely say that all your code is a piece of garbage, because “nobody writes it like that”, no matter what it does – it should comply with the standard.

Abdi’s avatar Abdi

Personally I would classify myself as theoretical + perfectionist, that’s why I run my code through a web for matter to make it look perfect and pretty when I’m finished, ugly code just angers me.

SG’s avatar SG

Duct tape is me.

anmol’s avatar anmol

Thanks for sharing good article.

Cali_West’s avatar Cali_West

I agree with a few others who have commented: the one missing is the Swiss-Army-Knife programmer.

This is the one who feels it necessary to use every. single. fuckin’. feature.