views:

482

answers:

13

I observe a phenomenon that looks like religion to me, only in a development team. Here is an example situation:

We are three people working on a small project. The project will involve a public web service that will serve requests by fetching data from a database, and also a separate component (or application) that would fill and update this database. All three of us care a lot to make this project happen, but we come from different backgrounds. One of us has only done Java development (web enterprise Java development), while two of us have only done .NET development.

When choosing what to develop the project in, as you may guess, each one stood his ground and insisted we use the technology he knows best. Other than this, we are good friends, and we are determined to work together. I'm not a .NET fanatic, but think that two of us being more productive is a good argument to use .NET. The Java guy on the other hand is also an open-source fan, and thinks that using free tools would be decisive for the project.

We started with a compromise, using C# for development and a MySQL database, which appeared to be a huge mistake, not because we couldn't make it happen, but because of all the overhead to make the two talk. It would have been a snap if we used C# with SQL Server or PHP and MySQL - those pairs are just made to work with each other.

The real problem in this case is that whatever we choose, at least one is going to make a compromise and not be happy. And that's 1/3 of the whole team, which is not acceptable. How do we work this out? How do we work out religious differences between developers?

And please, I know that every good programmer wouldn't have a problem working with a foreign language, but I don't need such answers. What if any of us converting is not an option?

+14  A: 

Maybe you just need to accept the team is wrong. If this is a personal/open source venture then, if you have someone programming in a language they don't enjoy, are they likely to put in the effort?

If it's a commercial project, you may not have the time for someone to get up to speed in a new language/development environment.

Given you say it's a small project, the costs of integration will probably be greater then the benefits gained from having extra bodies.

As with any conflict over religion, your chances of resolving it to everyone's satisfaction are slim...

dommer
Well said. Religious battles are rarely won and usually equate to shortsightedness on someone's part.
Chuck Conway
You are probably right, Dommer. Let's just hope that those religious roots in each of us are not going too deep. We're going to try and sort this out with a serious talk and basically what cpitis suggested. Thanks for the answer.
Slavo
I think often the roots of these arguments are really people's fear of being less productive in an unfamiliar platform, especially when other team members are very experienced. You would need to be very confident to acknowledge that fear to yourself, let alone share it with anyone else. I think people subconciously generate these arguments like "open source is better" to cover up these issues, and it's the underlying fear that generates the religious fervour. (Or... maybe *I'm* the only one who does it? Oh no!)
MarkJ
+4  A: 

What if any of us converting is not an option?

Then only 2 or 1 of you should be working on the project.

You need to devide the project into different layers and discuss all the options and appoint a technical lead which objectively makes the final decision based on the project needs and not his or her's own preference.

Martijn Laarman
I'd also ask why converting isn't an option? Are Java and C# really that different (the syntax and class library differences aside)?
Iain
I.e event handling in Java is a pain when coming from C#. C# and java were perhaps close in functionality in the early days but C# really diversed itself from Java the last couple of years.
Martijn Laarman
+1  A: 

Personally, I think that writing a good DAL (data access layer) can get you very far in solving any problems with mysql.

Just fill your objects in the DAL, deal with any problem there, and program db-agnostic in other layers.

Peter
I have the feeling that MySQL is not the main problem here ...
Joachim Sauer
You are right... but that would take a while. I am more inclined to use an ORM, or just LINQ. This is easy with SQL Server, but not with MySQL
Slavo
Of course these techniques can be very helpfull, but the last time i'd checked, LINQ to SQL was in fact still LINQ to SQLserver only.. I still like the idea very much that a switch of db server should be possible, althhoug I must admit that almost never happen in the real world. Still, even new ServicPack troubles, or upgrades tend to be less nerve racking for me using a DAL that doesnt depend on LINQ.
Peter
+2  A: 

If this is a project that doesn't have a close deadline why not trying something else such as python or ruby? The three of you all dedicated together should accelerate the learning curve and a new language under each of your belts is definitely a good thing.

Shard
A very good long-term solution, I would consider this, and I think it would benefit me (maybe the others, too), but we don't have time in this case.
Slavo
+4  A: 

Why don't you guys find pros and cons of the technology which you want to use with respect to the application you want to develop. Whatever scores maximum point you can select that technology.

You should find Pros and Cons based on some parameters for example, cost of development, training required, ease of development, performance, etc.

As you mentioned you are good friends you can try this easily and if you all are rational thinkers then this will work.

Secondly for example .Net wins then Java guy can still contribute by doing non-devlopment work if he don't want to learn Java like handling database, designing, etc.

Bhushan
That's what I'm thinking we'll do. Unfortunately I cannot predict how effective it would be, because all relegious issues are more emotional than rational.
Slavo
+6  A: 

With a compromise everyone looses.

This does not make a good programmer:

The Java guy on the other hand is also an open-source fan, and thinks that using free tools would be decisive for the project.

A good programmer is someone who selects the best tools and technologies based on how well they perform. Not whether they are open source or not.

Why not try a different technology such as Ruby on Rails. If you use Java or .NET someone is going to be disgruntled.

Chuck Conway
What? Rails!? HERETIC!. =p +1
Kent Fredric
A: 

For such a small team it seems wrong to have a mixture of c# and java. Pick one or the other unless both are absolutely needed for the success of the project. If you can do everything in one platform go with that. If doing the appropriate cimponents in the respective platforms is less wirk than the integration work required then keep both.

Using more than platform just adds an extra layer of complexity and diverts attention with no tangible benefit in terms of delivering your goal. Remove this distraction and get some code done ;)

mP
We're not using both C# and Java. We started using C# for development with MySQL as the database. No Java. But this is a compromise... and this is what causes the problem.
Slavo
+7  A: 

Choosing the technology should not be based on "religious" beliefs. The technology should be the one which is most suitable to solve the problem, and, of course, should be known in the team.

My opinion is that there should not be democracy in a development team. Team members can express their opinions, but only one (or few) (experienced) team member should take the decision and own the responsibility.

If people are religious, then the team setup is wrong, and you should split them. Select only those who know the technology you (or the responsible) choose and try to complete the team with other team members on that (those) technology(ies).

Cătălin Pitiș
+3  A: 

Developers want to have a good logical understanding of how things work. They like to solve problems. Also, they like to do a good job and be respected.

Try to appeal to this side of their nature.

It should not matter, to a good developer, whether .net or Java is chosen. The best developers are not limited to a single language. The right tool for the job is more important than personal preference. However, don't completely disregard experience with a particular toolset but don't make it the only factor in the decision.

Make the process for picking a technology stack transparent and have the whole team contribute to deciding what that process should be. Using logical process, that the team themselves have created, to pick a technology stack should encourage the entire team to accept the decision as fair and right.

Iain
A: 

Get one of the .NETers to write the tests for the system while the other two provide two implementations. Find out which one is better (from the tests - no subjectivity allowed here). Then write a book about the experience and make a fortune.

CurtainDog
+1. This would actually be quite useful :) Time consuming, but I hadn't thought of it. Minus the book, of course :)
Slavo
+1  A: 

Well, if you're serious about your business, you must put some things straight right away: the technology choice is made in an unbiased manner, assuming that the only premise taken is the business objective. That should be clear to all team members from the very beginning. Furthermore, the decision is finally taken by you, the manager, and you do it to help the project, and not because you prefer "#" in "C#" to "J" in "Java" ;)

On the other hand, you should manifest your full support for the Java guy. He should feel that he is accepted by the team, and that he can contribute a lot to the project. In addition, you probably should give him some time to get familiar with C#, and agree that he isn't going to be as productive as the others, at least for some time.

One argument that could be convincing for him is that the possibility to learn C# is an additional benefit, which can make him more competitive in the future. And, besides, isn't he simply eager to try out something new out of plain curiosity? ;)

Bartosz Klimek
+3  A: 

Understanding the origin of "Religious Beliefs"

I Think it important to note that religious beliefs, especially in IT, are experience based. Sure, some people believe stuff for no good reason, but a lot of the time, at least in my experience, a given view on a given way of doing things is not just a "I don't want to" thing, its actually an oversimplification of their experiences in the field, be it personal, or 3rd hand.

So when assessing a given belief, I feel it important you take into consideration the experiences that lead to that belief, and try disassemble it into objective parts with regards to your goal.

Each believer has the responsibility to validate their own beliefs as time progresses, and encounter new experiences which either affirm or contradict their beliefs.

You have to weigh out the pros and cons of every belief and work out "Who is this belief helping" and "What ultimately does the application of this belief do".

I'll provide an example using myself:

For years I was an AMD Fanboy as you might call it, and the simple idea of buying an Intel was simply against my reasoning, due to my experiences back when P4's and AMD2000+ were battling each other.

I would completely mock anybody who tried to portray Intel as better, because Intel is so "I'm an idiot, I know nothing about computers, I'll just buy something that the sales man tells me to buy" grade popularity to me.

But reality changes.

My old and aging computer started to die on me, and I needed an urgent replacement.

So I put my beliefs on this aspect on the back-burner, and gave a Core2 a chance.

I can say no more than I have currently switched sides until a future incidence argues me otherwise.

Benchmarked, a Core2Duo T9300 laptop can do a better job at things than an overclocked watercooled AMD Phenom Quad Core behemoth.

So in this case, my belief became wrong.

Kent Fredric
You are right. We should have a strong reason for any decision, including technology ones, this is how things work in IT. But as I mentioned in some other comment here, religious beliefs are emotional rather than rational. And approaching the problem with all the rationality in the world will not make someone feel better if he lost the battle.
Slavo
Yes, but my point is that emotional reasons are easier to compute, rational ones require you to remember all the specifics.
Kent Fredric
but you can have an emotional belief that came into existence for rational reasons.
Kent Fredric
Sometimes people may also be afraid, simply put, they will no longer be needed when you switch from one technology to another. It is when you need to assure them that their general skills are still useful, they just need to get familiar with a new language, IDE or whatever.
Bartosz Klimek
A: 

Just use whatever technology that will help you get the work done with minimum budget , time , effort

Yassir