Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a pragmatic person (I think I am. But then again, Jon here has an interesting point ). Sometimes, the most simple solution to a problem to get the job done is the one that fits best for me, if it's not an utter blasphemy and reproach to any design principles. Check out my answer to this question on Stack Overflow. Simple. Works. Was accepted. Could be improved. Is clearly not perfect and not very elaborate. And along comes this guy. He downvotes me, comments on the question how his answer is better, more accurate etc and when I ask him why he downvoted me, he calls me plain wrong in his comments. Reminds me of this comic strip.

Just to get this straight: His answer is clearly better. But that's not the point!

While on Stack Overflow I can laugh and not really care about these things because those people are far away, in the real world I'm suffering from ideologies every now and then. Heck, I'm not creating a miracle piece of software, I need to keep that huge legacy thing running, and it's an adventure to me every day. I'm good at some things and bad at other things. I'm eager to learn stuff. But I can accept one or two flaws in a system as what they are: flaws. Tomorrow, we're going to refactor all of them, but first let's do what the customer wants, and then have a beer.

My questions are:

  • How do you deal with ideologies / ideologists, when you're a pragmatic person?
  • How do you deal with pragmatism / pragmatists, when you're an ideologic person?

I'm interested in both point of views.

share|improve this question
18  
I think you need to be careful in drawing the line between pragmatism and arrogance. Pointing out that someone's solution might have problems (especially on a Q&A site) is not a bad thing or an example of someone being an ideologist. –  Anna Lear Jan 13 '11 at 16:41
4  
@Lukas - I don't believe he's saying your solution is wrong, I believe he's saying the he thinks it's wrong not to tell a XSL-T beginner that the apply template method exists and might be an option. Remember that with beginners we aim not just to solve the problem, but also to make them better programmers so they can solve them themselves in the future. If anything it's a criticism of teaching rather than technology if that makes sense? –  Jon Hopkins Jan 13 '11 at 17:16
5  
@Lukas : he didn't call your solution plain wrong. He called "showing this without showing another technique" plain wrong. A matter of opinion... But my experience is that mostly ideologists only hear/read what they want to hear/read and often get around the nuances a bit too fast... :-P –  Joris Meys Jan 13 '11 at 18:02
9  
What's pragmatic about worrying about what a person you don't know and will never meet thinks about your answer? –  philosodad Jan 13 '11 at 18:32
3  
In the vein of "how to deal with pragmatists", it depends. Some 'pragmatists' are ideologues in disguise, they refuse to use certain technologies because they are afraid to try something new, not because they have a good reason, or they won't take extra time to plan how to do something well because they know how to do it 'fast'. I dealt with it by going back into academia, where no one cares what tech I'm using as long as I can explain what it's doing. –  philosodad Jan 13 '11 at 19:49
show 13 more comments

11 Answers

up vote 18 down vote accepted

Without trying to be funny, as a pragmatist surely you can be pragmatic about it?

Other people are one more constraint you have to work with, the same as late change requests, difficult clients, inadequate tools, limited time and so on. All these are things you say you deal with pragmatically and this is the same.

If you work with someone you believe is difficult then you need to find a solution to the problem which works, even if it's not ideal.

Start by asking yourself how big a deal what they're suggesting is and then based on that work out whether you roll with it (if it's not a big deal), or find a compromise (if that's possible), or fight it out (if they're being entirely unreasonable).

If you do think they're entirely out of order you can always console yourself with the knowledge that when it ends up getting escalated your manager will almost always choose your solution (if it is indeed workable) because managers usually became managers by being, well, pragmatic.

But if you can't do this might I suggest that you're being a bit ideological about your pragmatism and perhaps you're not that pragmatic after all?

share|improve this answer
9  
+1 for meta-pragmatism :D –  Lukas Eder Jan 13 '11 at 17:18
    
Accepted answer: Nice analysis. About the managers being pragmatic. AND: About me being ideologic about it :) –  Lukas Eder Jan 14 '11 at 17:53
add comment

It's a question of acceptance.

I'm myself very frustrated by cv-driven self called architects. Frustrated enough to give them a nickname ;)

In my experience, it's very difficult to change other people, if not impossible. You must redirect your energy to something more productive and positive.

Negtive toughts are useless.

That's how you should deal with them: by not dealing with them.

share|improve this answer
1  
Come on, don't be a quitter, you quitter! I remember you were then one suggesting that some guy tries to make a positive impact rather than running. amazon.com/Dealing-People-You-Cant-Stand/dp/0071379444 –  Job Jan 13 '11 at 16:57
    
Job: he is not talking about a co-worker that has a direct impact on his work or life. –  user2567 Jan 13 '11 at 16:59
add comment

As a pragmatist, I propose you let this notion ring true with you: you are not your code.

You write code. You write it at whatever level and with whatever quality you do. Then you go home.

Let idealists identify their self-worth with their output, and validate themselves by putting their Perfect Solution on a golden pedestal. If that's all they've got, then God bless 'em. Sad little existence they have there.

share|improve this answer
    
It's true that the more creative the work is, the more confusion there is between the value of the person and it's output. That phenomenon contribute to burn outs greatly. –  user2567 Jan 13 '11 at 17:04
    
I second the idea that there are people out there whose self worth and by extension weigh someones worth on their code. Not on skill, as a human being! –  rsman Jan 13 '11 at 17:37
add comment

Don't know but i get your point. I get so ANGRY when i see some moron bragging about using VIDEO and H.264 because it's "open" (yeah, right, with closed proprietary codec) that'll work on 20% of clients instead of using Flash that'll work for 98% clients (and it's really the SAME H.264 just in different player).

Same when i see a noob that's telling that "SQL" is dead because we have mongo - and those kind of idiot's are unable to use BOTH properly.

And we're having just HORDES of such fucking trolls/morons posting on forums, writing newspaper / press articles today.

And it always makes me mad. One story. Client wanted some video additions to his business page:

  • okay tomorrow it'll be done
  • will it be in HTML5?
  • no, i'll suggest flash and HTML5 fallback, because HTML5 isn't supported on more than 50% devices properly.
  • but that's ok, everyone is saying that it is a future, i want HTML5. I don't want flash, its outdated / evil / whatever.
  • okay but it won't always work.
  • thats not a problem

The next day:
- plain and simple video tag, 2 different encodings, 100% properly done. Of course there is flash fallback i'm showing to client. Performance is pathetic, but works. Now the client takes out his laptop "he wants to check too".
- Goes to the page and BAM. Firefox 3.something. 5 FPS, the sound is skipping, it looks like 100% broken.

  • I don't want it to work like this, it's broken. Make it work right.
  • I have told you that it isn't going to work good
  • But watch this (> youtube.com ) guy clicked the first video => working flawlessly.
  • It's a (fuckin!) flash!
  • Aha, you sure it isn't HTML5
  • Yes im (motherfu***) sure!
  • Ah, so please make it like this.

And there are more and more of such MORONS! They want HTML5 Video, Games on Canvas, mongoDB blogs for 100 visitors and other bullshit! Just FOR THE F*** SAKE F***K ME because all of those fanatic MORONS are hurting IT industry!!!

Now the solution. Tell the fucxxxx idiots you're using HTML5, mongoDB or any other moronic shit on the planet they want. Do it your way, get the job done and let them believe in their fairy tales, santa or whatever they want to believe in! If they propose some moronic / fanatic bullshit instead of your completely working solution - ignore, let them go fxx themselves

share|improve this answer
6  
Wow, you really ARE angry :-) –  Lukas Eder Jan 13 '11 at 17:16
7  
This isn't an answer, it's a rant which doesn't actually address his question. –  Jon Hopkins Jan 13 '11 at 17:18
6  
-1 for the following: 1- calling your clients idiots. That's a Nick Burns attitude, and doesn't help anyone 2- thinking that HTML5 is a fantasy. It's real, it works, and there are important platforms that don't support flash. 3- assuming that your inability to communicate technical realities is your clients fault. It is not. You are the expert, and it is your responsibility to make things clear. 4. Proposing that the correct course of action is to lie to your clients. At some future point, that client is going to find out, and you will have given a black eye to every developer on earth. –  philosodad Jan 13 '11 at 17:44
3  
+1, eh, just because it was an entertaining story. –  GrandmasterB Jan 13 '11 at 19:11
3  
@Slawek I realize we're not here to make friends, but ostensibly answers and comments here should be cogent: otherwise, what's the point of putting them on a site other people visit? You might want to tone down the rhetoric and think about how to make your arguments convincing to others so your efforts to illuminate and enlighten aren't in vain. –  user8 Jan 13 '11 at 19:24
show 22 more comments
  • How do you deal with ideologies / ideologists, when you're a pragmatic person?
  • How do you deal with pragmatism / pragmatists, when you're an ideologic person?

I believe the best option is to assemble teams with the common mentality. It's probably one way to make things work without having some team members experience mental pain every working day.

As of now it's definitely one more thing I watch out while interviewing - is the team built of curious, open-minded, pragmatic and goal-oriented people (that's what I'd like) or is there a smell of architecture astronauts, ideologists and fanatics (that one I'd rather not be a part of).

Granted it's not going to help you now (unless you can move to another team or department) but perhaps a useful hint for the future?


[Responding to a comment - about architecture astronauts...]

Don't Let Architecture Astronauts Scare You

Are the Groove Designers Architecture Astronauts?

Architecture Astronauts Are Back

Architecture astronauts take over

share|improve this answer
1  
+1 for architecture astronauts. Oh, I love the feedback I get here! Gladly, I'm not really suffering from these things right now. It was more a general question... –  Lukas Eder Jan 13 '11 at 17:35
    
Architecture astronauts is the term coined by Joel Spolsky. See updates in my answer for some links in just a minute... –  user8685 Jan 13 '11 at 17:38
    
Awesome! Unfortunately, I can't +1 you again! :) –  Lukas Eder Jan 13 '11 at 18:29
    
Haha, no really. The further I'm reading through your blog posts, the more I think you should hold the accepted answer :D –  Lukas Eder Jan 13 '11 at 18:39
    
The problem is that when you fill a team of people who all think alike, you are not only sharing the same strengths but the same blindspots as well. A team that doesn't have a healthy tension is dysfunctional. –  Jason Baker Jan 22 '11 at 9:39
add comment

Understanding where I'm pragmatic and where I'm idealistic is a starting point. We all have basic things where we are more likely to be realists as things like food and drink tend to be needs that get met or else you die due to starvation or dehydration, often with imperfect food. At the same time, most of us likely have some values that we'd tend to uphold above all else I'd think. Thus I think there is a bit of both in us and understanding why we have both would be a good place to start though this may be seen as dodging the question it is how I'd handle the problem of being on either end of the seesaw and having to deal with people from the other.


Elizabeth Lesser: Take "The Other" to Lunch is a recent TED Talk that could make a good addition if someone wants a suggestion for how to see this differently. Humanizing that other side can be useful if we want to collectively move forward though I may be a bit of a softy for being idealistic that way.

share|improve this answer
    
Not dodging the question at all. That actually WAS the question –  Lukas Eder Jan 13 '11 at 18:28
add comment

Depends on who you are dealing with. An ideologue will refuse to use certain solutions. An idealist prefers to use certain solutions. There's not much you can do with an ideologue. Idealists will respond positively to sympathy + practicality, I.E. "I'd love to use HTML5 too, and if the budget supports it we can. But we have to deal with all the (enter context appropriate pejorative) who won't upgrade their web browsers, so we need to implement a flash solution first."

share|improve this answer
    
+1 for the subtle side blow! :) Good comparison between ideologue and idealist. It kinda goes into the same direction as jkohlhepp's "ideologic-pragmatical continuum" –  Lukas Eder Jan 13 '11 at 19:08
add comment

I think this idea of "pragmatists vs. idealists" is a false dichotomy. It is a continuum where there are different levels of pragmatism and idealism, and each individual falls on a different part of the continuum, and for different issues. You might be a pragmatist when it comes to software design but an idealist when it comes to politics or art. I might be the opposite. And one "idealist" with software design might consider himself a pragmatist when compared to someone even more ideological.

So, I guess my advice would be to not obsess over the labels, and instead try to communicate your viewpoints and convince your coworkers that you are right because your idea is better. If you are my coworker and we disagree, your argument of "my idea is more pragmatic and therefore right" will not fly with me. But if your argument is "my design is better for this and this and this reasons", you very well might convince me.

share|improve this answer
    
Absolutely. Being somewhere in the middle of that axis is probably the best thing. Because pure pragmatics probably have no visions, pure ideologists have no sense of reality... –  Lukas Eder Jan 13 '11 at 18:27
    
Agreed. And like everyone, I believe I walk the perfect line between the two, and everyone should strike the same balance I do. :-) –  RationalGeek Jan 13 '11 at 19:35
    
OK. Now you're being ideologist about your staying in balance. :) –  Lukas Eder Jan 13 '11 at 19:52
add comment

This is really a question of dealing with two types of people who disagree with you: A) Those that may change their mind B) Those that will probably never change their mind.

Group A) you give your argument/opinion your best shot, try to be civil and possibly change your mind along the way. You are more likely to listen to what they have to say. You feel they are open and met you half way. We're more likely to think like people we are comfortable with.

Group B) you get emotional, take the opportunity to dump on them and point out the error of their ways. Some name calling usually finds its way to the conversation. Nothing gets solved and at best you agree to disagree.

Not saying this is the right way to go about it, but usually what ends up happening.

share|improve this answer
    
+1: I like your way of putting it. –  Lukas Eder Jan 13 '11 at 20:54
add comment

His answer is clearly better. But that's not the point!

Are you sure you're a pragmatist? :)

Most of the time when I see somebody being called an idealist disparagingly, they aren't being idealistic, but simply being pragmatic while taking into account the consequences over a longer time period than the other person.

Sure, dirty code might be pragmatic if all you are looking at is being able to go home on time without any overtime, but once you take into account that people don't often really get the chance to go back and fix things later, and that you may well be stuck with the code for a long time, doing things the right way stops looking like idealism and starts looking more like the actions of a pragmatic person who is simply thinking beyond the immediate future.

share|improve this answer
add comment

My experience is that there are two kinds of coders:

  1. The "code first, ask questions later" programmer
  2. The "ponder for two weeks, then code in an hour" programmer

It's easy to assume that this is a pragmatist/ideologue debate, but it really isn't. The thing is that both of these people are using opposite approaches to do the same thing. They both want to get things done. Perhaps you could say that the Type 1 programmer is like a hare (always rushing into doing things) while the Type 2 programmer is like a tortoise (slow and steady wins the race).

What I see happening is something like this: the Type 1 programmer isn't happy unless they're constantly hammering out code. They might stop to think for a little bit, but all in all they view it as a waste of time. They want to roll with the punches and take things as they come rather than planning. The Type 2 programmer wants to have an approach to the code mapped out ahead of time. They won't start coding until they already know what they're going to write, how they're going to write it, and that the approach is the correct one.

If you set a Type 1 programmer and a Type 2 programmer to work on the same task together, the Type 1 programmer will have long started their project by the time the Type 2 programmer decides what approach to take. At this point the Type 1 programmer will notice that the Type 2 programmer hasn't actually started coding and will try to help them get with the program and start doing something. The Type 2 programmer will notice that the Type 1 programmer has started coding with reckless abandon and try to get them to just stop and think for half a second. Without knowledge of what's happening, the Type 1 programmer will label the Type 2 programmer an ideologue who doesn't want to get things done, and the Type 1 programmer will label the Type 2 programmer a cowboy coder who has no appreciation for proper code.

Here's where things get tricky. When the two of them react this way they're both right to a certain degree. The Type 1 programmer needs to learn to stop, breathe, then think about what they're doing before they rush off to code. As the saying goes, "weeks of coding can save you hours of planning". The Type 2 programmer needs to learn to stop planning at some point and just write some code. As the other saying goes "The best laid plans of mice and men often go awry".

Organizations need some of both kinds of people. Inexperienced or evil managers like to see their minions spinning their wheels nonstop and will often encourage Type 1 programmers. Micromanagers like to know what, where, when, and how their employees are going to code and will often encourage the Type 2 programmer. Thus, organizations need to make a conscious effort to encourage a balance.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.