Home

Michael Yuan, in "Is Ruby Replacing Java? -- Not so fast!," says that Ruby may not replace Java despite its capabilities, because new languages expand to fill available niches, and Ruby's currently being used in the same environments other languages currently occupy.

I’m not sure he is entirely correct, though. What expansion did C++ take advantage of? I think it was mostly used in areas already using C, primarily because it was thought to be better at controlling the complexity of large programs.

actual implementation of a system using a specific programming language has the lowest value in the value chain

argh!!

This simply isn't true! From my experience with development, there are one of two ways of getting projects done;

1. Spend a *lot* of time, effort and money on getting every aspect of an architecture on paper and then outsource to get the development done at a lower rate. 2. Get better developers which knowledge of the domain. When your developers fully understand the task at hand, they can react quickly to flaws in a design and they can often correct them without having to engage the whole design team again. Also, less documentation is required when you have higher quality developers so the design phase is quicker and cheaper than the first method.

By trying to outsource your development you end up spending so much more on the design that you don't save much, if anything, and will prolly lose more money when the implementation exposes flaws in the design which requires further phases.

I don't think there is any way of cutting the cost by outsourcing, it takes so much longer to prepare the documentation and get everything right that you might as well have paid for better developers in the first instance. There may be some outsourcing companies that are an exception to the rule, but they are exceptional and, therefore, expensive!

BTW - Ruby has it's place, but without a single commercial backer like Java has Sun, it will struggle to gain acceptence in corporate environments. Its also worth pointing out that they are a long way behind in terms of large scale deployment. Take a look at Jon Tirsen's blog for a good account of a java->ruby convert (or adopter might be more fair).

A lot of people seem to be talking about ruby lately and a lot of them seem to imply that it somehow is in the same league as Java. It is not, and claiming so is silly. Java has two things ruby has not: a huge market penetration (it's a multi billion market) and a huge set of third party libraries (literally hundreds of thousands of developers working on both commercial and OSS stuff).

Ruby may be a nice scripting language but at this point it is nothing more. It has a number of nice language features that Java does not have. With domain specific stuff like ruby on rails you can quickly prototype and build some nice web apps. Good, nobody is denying that. But right now it's nothing more than that. Java at this point is much more versatile, integrated with just about anything and there's tons of libraries, components, etc. available. Ruby is years away from having that (assuming the whole industry would jump on it now like they did on Java in '95 which of course is totally not happening at all).

I completely agree with Jill, Java is not just a web application. Java address much beyond that like Integration with heterogenious system, Security, Sandbox, Interoperability(IIOP), remote access, mobile devices(J2ME) and lots more. Please don't jump to Ruby on Rails for the sake of the hype its is creating, later you will burn your own hands. Stake holders beware of Ruby on Rails.

I completely agree with Jill, Java is not just a web application. Java address much beyond that like Integration with heterogenious system, Security, Sandbox, Interoperability(IIOP), remote access, mobile devices(J2ME) and lots more.

Agree.

Please don't jump to Ruby on Rails for the sake of the hype its is creating, later you will burn your own hands. Stake holders beware of Ruby on Rails.

Disagree. I cannot see why you would make such a statement ? Ive been playing with Ruby and Rails this week, and so far I'm impressed. That's not to say that I think Ruby will replace Java (I dont...at least not at the moment), but I can see where Ruby (and Rails) could be used to develop certain types of solutions quickly and elegantly.

Remember what Java was like in the early days, and how C++ developers scoffed at Java as a toy language ??

This Sanjay Singh guy is another Indian who sounds stupid. I do not understand one thing about such Indians - what "false" pride drives them so much so that they can post very arrogant comments???

With so many years into software development, India has produced no innovation. Forget about that ISO and CMM - they don't count anything!! Innovation is the only thing that counts. You guys are 'slaves' performing ISO and CMM - yeah, go fulfill those requirements. "(code==software is misconception)" <= your comment, my foot.

But, we don't even have time to ridicule them. Anyway, we shall only groom the best (nope, nationality doesn't matter, only American mind does, smart and open).

American mind ?!Smart, open ...and apparently always on the defensive.

How bright you need to be to deploy a J2EE application (and I'm not talking about websites). I know, I'm not bright and still manage to do it.

Independently of the distances, Chinese and Indian developers _are/will_ take jobs away from American and European developers (I'm European myself), let's see how we (European and American developers) are going to _innovate_ to keep food on our tables.

Please don't jump to Ruby on Rails for the sake of the hype its is creating, later you will burn your own hands. Stake holders beware of Ruby on Rails.

Disagree. I cannot see why you would make such a statement ? Ive been playing with Ruby and Rails this week, and so far I'm impressed. That's not to say that I think Ruby will replace Java (I dont...at least not at the moment), but I can see where Ruby (and Rails) could be used to develop certain types of solutions quickly and elegantly. Remember what Java was like in the early days, and how C++ developers scoffed at Java as a toy language ??Lawrie

When you look on yourself as limited set of resources than is better to stay out of RoR. Are you on track with all new Java libraries and technologies (JSF, Ajax, Portal (JSR-168), JCA, MDA, EJB3)? You don't have to look for other language, it's maybe already available in Java.

but I can see where Ruby (and Rails) could be used to develop certain types of solutions quickly and elegantly.

But this is exactly the point, isn't it? Certain types of solutions. Java is rapidly evolving into a general purpose language for everything from web applications to real-time device control.

Remember what Java was like in the early days, and how C++ developers scoffed at Java as a toy language ??Lawrie

And for a long time, they were right. It took a lot of work and investment to get the language and it's VMs up to a point where reliability and performance was satisfactory. Any serious competitor for the general-purpose language role has to have similar work put into it.

There is no doubt about it, java has done a lot of good stuff and still will in the next couple of years. But we have to admit, that it is a bit clumpsy. If you deal with calculations that are not dealing with Java's primitives, it is a real pain in the neck that you do not write x=a*b+c*d, but something like x=a.multiply(b).add(c.multiply(d)). Being used to writing a*b+c*d you loose a lot of clearity and add a lot of bugs just because they don't spring into the eye. So the fact that Java lacks operator overloading is quite a good reason to switch to something else. C++ and C#, who both provide the operator overloading, might be considered in this aspect, but this is just one aspect of the clumpsyness of Java. Others are shared by C# and C++ or worse. So Perl, Python and Ruby get a lot of attraction, because they can express the same stuff with less code and with less noise. Having the choice, Ruby looks like the best choice in terms of a clean object oriented language, but Perl has off course more libraries around. Unless Perl 6 comes out real soon, my money would be on Ruby.

That does no way mean that Java will go away any time soon, but I expect Ruby to take over some part of the market now covered by PHP, Java and C# and to obtain the plurality of the market share.

Why not accept the fact that j2ee is on minute 14 of its 15 minutes of fame?

That would be a market leading, multi billion $ niche and its 'fifteen minutes of fame' has been lasting about five years already (I'm not even counting the first five years) with no signs whatsoever of slowing down.

That's why comparing Ruby to Java is so silly. There's nothing wrong with being enthousiastic about a new language with some interesting features. Claiming victory in a battle that has yet to be fought is plain stupid though.

1. Less documentation and complex design to simple problems is typical to c/cc++ --> java converted architects. Java is better off, if it can offload those people to Ruby.

2. I have come across several large scale java projects, most projects are badly designed by in-house USA based java gurus "Architects", poorly/non documented not just the design but even code has no comments.

3. Outsourcing has reached in Phase two where there is no coming back, India attracts best and brightest to software industry, while enrollment and quality of people attracted to software in US Universities is going down. Software is a creation of mind; you need best minds to compete.

4. Indian companied are better equipped to design and develop software, its not just companies, its quality of mind and excellence in processes, Most outsourcing Indian providers are also ISO and CMM5 certified, While I come across several US software veterans who do not have even know what is CMM.

More comments and heavier weight processes does NOT equal better software. Our industry is in a sorry state indeed that there are people that actually still believe that. Of course, if that is the mainstream view in India it does mean that you guys will be easy to compete with ;)

It is becoming less and less frequent that i have to look at technically difficult problems as a consultant. The application and database server vendors have done must of th hardwork, all i need to do is understand how to use their technology and, most importantly, understand the domain.

Projects fail because people don't understand the domain. If you don't understand it, then you will underestimate it's complexity and waste time and money trying to adjust.

It doesn't matter how good the developers are in india, china or whereever, if they don't have first-hand experience or direct contact with the client (email etc doesn't count), then they aren't going to get the gig. I'd rather pay much more for a good coder working hand-in-hand with the client in Europe rather than having to have a BA and project manager sitting with the client and then trying to communicate with a development team in asia.

If India is so attractive how come 1/4 the office is made up from indian colleagues? Don't get me wrong, the guys I work with are bright, experienced and conscientious (not to mention friendly and polite), but certainly in no rush to return home.

Also don't forget that to write software you must have a firm appreciation of requirements. I'd rather have an average developer sitting next to the customer than a genius 10,000 miles away.

Yea, I'm going to have to go ahead and second that. Companies aren't outsourcing, and going through all the pains associated with that, because they just can't find any smart people around the corner. It could have something to do with the smart people around the corner costing more...

Ruby will not replace Java, nor it will Python or PHP or not even Groovy. I think they will complement the platform to a point where you could create logic in Java or C# with all the compiler checks and type safety you need and then use a dynamic language in the parts where it's better suited for like text parsing, unit testing, web templating, page assembly, some UI validation logic and such.

I think the future is in the convergence of dynamic languages running on top of a reliable, stable and scalable VM (being the JVM, .Net's CLR and others) which can transparently use the infrastructure and components previously programmed for the platform. The problem here is that even if you work with the same VM technology, people will still need training in these languages and there will be two or more codebases to maintain, which might add some costs to the project, but only at the beginning until the development process is stable. Some degree of specialization might be needed for sane project management too, I think.

Now from the other point, like others said nothing beats customer-developer close work. A good understanding of the problem domain is what separates a good, usable system from a failed project many times. Heck, some aspects of the domain tend to be hard to understand and model even with the client sitting next to you, let alone the case when the developer is thousand of miles away and all you know is his/her name and email address.

Don't get me wrong, the [Indian] guys I work with are bright, experienced and conscientious (not to mention friendly and polite), but certainly in no rush to return home.

My experience about their happiness was the opposite. When I hung with the Indian contractors here in Colorado, I sometimes ate meals with my fingers when invited over (which makes me a globalization expert). They chatted freely and it became obvious they sought Indian spouses, were homesick, and thought of Amerika only as a job market. I respect them more for it.

I have had the unpleasent experience of cleaning up a number of "Made in India" projects. Just because a project is done in a particular location/culture does not guarantee quality.

Point 3:

I will only refer to the number of Noble prizes won by the United States in all areas. India sends many of its best to the United States for higher education.

Point 4:

Don't insult us while you are dependent on us for the majority of your work. I have worked on a number projects that implemented ISO standards and I do know what CMM is. Just because you have a lot of certifications doesn't mean you know how to carry out the implementation. I refer back to my response to your second point. While we may not always implement what we create, Demming was the founder of modern quality control.

Indian software companies should be very worried when it comes to China emerging as a competitor in software engineering. I have worked with engineers from India and China, and I see China as coming out at the top.

Sujan,I totally agree with you and I discount your comments about Indian in due of your anger.

However, let’s step back and think-Who is this Sajay Singh? One out of 1B Indians. What makes him a spoke person for India? He is just a frustrated moron trying to drive some attention here. Does he deserve that attention? Can he hijack this very relevant discussion? I looked at his prior postings (as I really suspect his being a real Indian) … every once in a while he comes up with comments like this. He even thinks Open Source is a joke … and uses M$ JDBC drivers … and thinks most app servers is not supported on OS X.

Yes, I have seen crappy software written by Indians. If you give peanuts, you get monkeys. I wouldn’t try to stereotype them as the Indians. India has a few Nobel Prize winners in Science and Maths. I won’t stereotype them as the Indians either. Nobody can stereotype 1 billon minds either way.

Sanjay,If you want some of your Bile out, talk to Hani. However, arrogance is appreciated ... nowhere!

The rise of a new programming language always comes with the opening of a new application area and an influx of new developers who are willing to try out a new language -- since there is simply no incumbent language in this brand new area.

Agree in general but we can not forget there are _lot_ of people coming to IT job market every year. And Sanjay post is an example on how they are not kidding. Think globally. The number of new developers every year seems so big that i guess just this group has suficcient people to force a, aahhann, a toy like Ruby is today into a next "enterprise standard", wharever it means.

Sanjay, i worked with people from everywhere in projects from 5 american countries (USA too, sure) and another one from Europe. All I can say from your post it you are missing a _lot_ of aspects.

I am also chocked on how some managers and architects (no matter how experienced or which country they are from, yes including India) can turn a project into a no sense nightmare but what i often see is nobody in the team / organization has the courage to say something like "hey, c´mom ! that plan would never work well".

Why ? Sometimes because that person in question does not have a full set of skills to suggest an alternative plan but i guess mostly because it is not a good politic, even more in those big worldwide corporations. Sure, there are incompetent people from everywhere but also there are lots of Death March projects around the world, in which some people, even if very talentous, simply cannot help.

Less documentation and complex design to simple problems is typical to c/cc++ --> java converted architects. Java is better off, if it can offload those people to Ruby.

So Ruby is an abomination useful only as vacuum to suck away the trashy folk who are too undisciplined to be worthy of enterprise engineering? And you derived your insight by comparing Amerikan and Indian engineering? I guess I have to think about this.

Indian companied are better equipped to design and develop software, its not just companies, its quality of mind and excellence in processes, Most outsourcing Indian providers are also ISO and CMM5 certified, While I come across several US software veterans who do not have even know what is CMM.

I've had experiences with Indian contracting firms in which "qualified degreeded" software engineers turned out to posses little more than a three month intensive Java training course background.

Someone correct me if I am wrong, but I don't think there is such a thing as being "CMM Certified." And if there is, I seriously doubt anyone could, or would really want to, achieve CMM level 5: it's just too cognitive for practical use.

I've had experiences with Indian contracting firms in which "qualified degreeded" software engineers turned out to posses little more than a three month intensive Java training course background.

I hope this is not a qualified comment .Steve there will be blacksheeps but not all.CMM is a must to have a better productivity but 100% of CMM is not acheivable.But i am currently working with a middle east firm where everything is in a mess without a proper CMM implementation. Motorola[INDIA] has got a good CMM implementaion,thought the things moved not so fast bcoz of CMM but made the releases and maintainnace easy and rock solid.

Since groovy is nearing version 1.0 i hope it will answerto java's "looking big consuming time" issue.But RUR is good and it just echoes what a developer has in his mind,about a easy web app implementation.

But what i feel is IDE enhancementto Eclipse / netbeans with lot of drag drop templating will take off the toughnessof jave coding like prebulit drag drop components.

Someone correct me if I am wrong, but I don't think there is such a thing as being "CMM Certified." And if there is, I seriously doubt anyone could, or would really want to, achieve CMM level 5: it's just too cognitive for practical use.

There is such thing. I work in a CMMI Level 5 organization.

Companies that do contract development and/or support get certified in order to show potential customers that they are more of a "known quantity."

IMHO, CMMI (and many heavyweight processes) are for making software development more predictable at the expense of maximum efficiency.

I think engineers (software or otherwise) tend to place far too little importance on getting entire projects done in a predictable fashion.

On my cuurent project I am fixing a Java webapp that was outsourced to India. It's one of the worst pieces of sh!t I have ever seen. On my last project I was the only white American on the team - the rest were from India. They came to me for answers. If I hadn't been on the team the project would not have been completed. There was no innovation from any of the other five Indian team members. None. Just CUT, COPY and PASTE.

At one time I was concerned about outsourcing but no more. After seeing the poor quality I feel EXTREMELY secure here in the U.S. Bring it on Sanjay!

Race Condition: In general, with your comments, I agree. So, do not think that you are lonely. I will join the same bandwagon with you. People like Sanjay Singh do not yet know about our possible backlash.

At the same time, there is a but. Regarding your comments:

At one time I was concerned about outsourcing but no more. After seeing the poor quality I feel EXTREMELY secure here in the U.S. Bring it on Sanjay!

my "but" is from my other comments earlier in this thread:

There are some very very bright brains coming from India, I don't deny that.

At the feet of these bright Indian brains, I witness a nice mix of white American, Chinese, Indian people on their knees all seeking direction, help, spoon feeding, insight, and alike. The people on knees say - If the bright Indian brain hadn't been on the team, the project would not have been completed.

We do not disagree that the Indian brain (that was based in India, that was located in India) has been very active, passionate, and ridiculously smart.

We agree because we see this Indian brain has made our life simpler and richer. The unique thing is no hypocrisy with them, still they masterminded for usa. SQLb. Idea of global email like hotmailc. Wow, google search algorithms!

More kewl work by Indian brains is in progress as we speak.

But, I agree, (American-, Indian-, Chinese-) people who sound like Sanjay Singh must be counterattacked immeasurably.

Sanjay Singh cannot be speaking like the way he did and be artless at the same time. Every dog has its day. Today, the dog is Sanjay Singh; but, Sanjay Singh will be facing an American lion on demand. Pee in your pants.

<Sanjay Singh cannot be speaking like the way he did and be artless at the same time. Every dog has its day. Today, the dog is Sanjay Singh; but, Sanjay Singh will be facing an American lion on demand. Pee in your pants. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Consistently, I am talking about the grandeur of the U.S. where even the Indian, as smart as they get, brains have added vast amounts of useful research over a long period of time.

The question is, why ? :))If someone here will point to 1 particular american guy and say he is a moron, I will not start CONSISTENTLY telling how smart americans are. Because 1 particular american moron means nothing to me. In fact I agree that most americans are stupid...as most indians are :))Why are you soooooo consistent in the thread about Ruby (not indians). Aknowledge that this Sanjiv is a moron and get over it.

1. I agree that Domain knowledge (not geeky architects with all their design pattern catalogs) is the key to designing of business software.

2. I did not want to write this but here it goes

“Lets see how it happens, first the import of components started from China, next why not have it manufactured all of it. Then went Rnd/design to China, (Chinese companies design most of the electronics that America depends on or rest of the world for that matter).Here is the next phase, Chinese companies buying out American counter parts.1. Lenovo bought IBM PC business2. RCA is owned by a Chinese company3. Chinese Oil companies bid for UniCAL

It may seem like Outsourcing to India from America is increasing, but American share in India software services exports is going down, Europe and Japan accounts for about 40% of software and services exports and going up. Can you see a parallel?”

“As they say it flipping burgers and cutting hairs can not be outsourced”

<4. Indian companied are better equipped to design and develop software, its not just companies, its quality of mind and excellence in processes, Most outsourcing Indian providers are also ISO and CMM5 certified, While I come across several US software veterans who do not have even know what is CMM. >>>>>>>>>>>>>>>>>>>>

I've worked with a LOT of Indian developers, and I have seen no difference at all in their level of skill vis-a-vis their American counterparts. Some are terrific, most are competent, some suck.

Sanjay, outsourcing is about reducing payroll, not improving quality. (If most American corporate managers were seriously concerned with improving software quality, this thread would not exist.) That's why we outsource shoe and toy manufacture - not because we expect to get better shoes or toys. It's the same with software, don't kid yourself.

That said, outsourcing is indeed here to stay ... and, my friend, if and when developers in India reach a pay scale too far above US poverty level, the work you are doing today will be outsourced to China. It's a great big happy world, if you let corporate managers define it for you.

As to whether or not Indian companies are better able to design and develop software ... well, why don't they do so in that case ? Why waste your time working on American products using American software tools ? Build your own, naturally superior products, and the software world will buy from you - right ?

I am not American, and my company has an Indian office full of very talented developers.

But, Mr Sam S...you are doing your country and your people a disservice to talk the way you do.

>> most projects are badly designed by in-house USA based

Currently, our Indian office spends as much time fixing code from other Indian developers, as any other country does for theirs. There's no difference.

The global software development picture is consistent. It sucks. Crossing a line or an ocean on a map will not improve the quality of software.

>> India attracts best and brightest to software industry

Is that so? Do they also attract the best and the brightest in the telephone soliciting industry? IS that person calling me during my dinner time - to sell me a webinar - a Certified Telephone Marketeer? No. And I'm sure you wouldn't be proud to admit that, even if it were true.

The truth is, outsourcing is about one thig: money. Indian developers are cheaper...period. Granted, the reason the USA and other countries have no problem offshoring is that ALL developers suck. So if they're going to pay for something that sucks, why not pay $12/hour instead of $190/hour.

>> Indian companied are better equipped to design and develop software,

Ummm...no. It is the same. If you want me to show you pictures of software development offices in India, email me, and I'll show you. At best, at least they get free food served at lunch...in buckets, sitting on the floor. Trust me friend, if you ask me, it's a tragedy that Indian developers accept work at the rates they do. Most US companies would pay twice as much, and still offshore to India, but if it ever got too expensive, trust that they'd move to Xi'an China in a heartbeat.

>> re: [code comments to CMM]

With all due respect, you have some work to do on your definition of good software.

Granted, the reason the USA and other countries have no problem offshoring is that ALL developers suck.

That is NOT true. It is a perseption.The reality is - american developers have higher quality than indian. This is not because they are smarter of course.It is simply because good education is very costly both in terms of money and time.Indian Employers will not wait 5 years for a programmer to get a proper education. They will hire any guy who can read and knows elementary math, and will send them to 3 month crush course.That's what U.S. companies get for their money from India.

Lots of talk about people cleaning up the code from Indian software professionalx. Well, i have cleaned some code from an American software person. I could never imagine how anyone can write such code and i am not talking about quite ugly and unformatted code but the amount of bugs, redundancy of lines of codes..same lines of codes written at many places, threading and caching issues ..and so on. Though i accept that i am just an average programmer but know some few things but coding and maybe designing. As many people mentioned here and rightly so, race, nationality etc do not matter. Stereotyping, racism and arrogance (Mr Sam..plz note) are not the qualities which in my humble view professionals should posses.

Sandeep

PS: Would like to add that i have learned a lot from my onsite colleagues like better way of doing things, better practices, knowledge about new good frameworks etc.

3. Outsourcing has reached in Phase two where there is no coming back, India attracts best and brightest to software industry, while enrollment and quality of people attracted to software in US Universities is going down. Software is a creation of mind; you need best minds to compete.

4. Indian companied are better equipped to design and develop software, its not just companies, its quality of mind and excellence in processes, Most outsourcing Indian providers are also ISO and CMM5 certified, While I come across several US software veterans who do not have even know what is CMM.

Yep!

Alan Kay (is one of the inventors of the Smalltalk programming language and one of the fathers of the idea of Object Oriented Programming. He is the conceiver of the laptop computer and the architect of the modern windowing GUI. As a member of the ARPA community, he also participated in the early design of the ARPANet, which became the Internet)http://ei.cs.vt.edu/~history/GASCH.KAY.HTMLhttp://minnow.cc.gatech.edu/squeak/378is a typical Indian but unfortunately has not got his CMM5 certification.

Yukihiro Matsumoto (aka Matz, best known as the creator of the Ruby programming language) is also is a typical Indian and shame on him without CMM5 certification as well.

3. Outsourcing has reached in Phase two where there is no coming back, India attracts best and brightest to software industry, while enrollment and quality of people attracted to software in US Universities is going down.

That may be right. Mostly because they do want to work in the UK or the US. The "best and brightest" software developers in India very very rarely stay in India. If they work for offshore companies they are soon dispatched to US/Europe/Japan to act as liason officers and software architects there. And then most of them consider to stay - at least for their working lives.

I would agree with Karl's comments. Sure, there are a lot of bright people in India, but they get out as soon as they can. And why not? In my experience working with offshoring companies, almost all people based offshore have been "freshers". They have tended to only be able to work on a narrow niche (e.g. know Struts, but don't even understand how to customize bean properties with BeanInfo). Even the offshore estimating teams allow for this - they allow for the inexperienced developers to mess up one delivery, and fix the mess later! The economics is further distorted by the fact that offshore companies get great tax breaks from the Indian government. End result - even if they foul up and expend 3-4 x the effort they should, because of developer inexperience, the companies still show a healthy margin! Never mind the impact on customer service; even if a dissatisfied customer never comes back, there are plenty of other sheep who are following the promise of lower costs.

I wish I had written that though I am working for a offshore firm. People in India move up the hierarchy rather fast. A developer with more than 4 years of experience is not a developer but a team lead. Companies also encourage that. So the situation is different than it is in the US. Some companies from the US who set up their centers in India have started to divide into a delivery division and a technology division to encourage senior developers to continue to write code.

As far as the 'secondary' topic in this discussion is concerned, I have to say that recently I have started to use Groovy and that in turn introduced me to languages like Ruby and Lisp. I am learning what I have been missing all these years. C# 3.0 seems like it is going to get there first.

"The problem is most emphatically NOT that Indians are bad engineers. I have hired some truly great (world class) engineers here, but they are very hard to pick out from the sea of less than stellar candidates.

The problem is purely economic. The demand has outstripped the supply for good engineers and as a result people who have no love for code (or even any like for it) have rushed in to fill the gap.

There are jobs for which almost anyone can be trained and the job will get done well enough. Writing software is not such a job. There are also people who can be trained to be reasonably good programmers even without a love for it, but these people are not common. The market does not care about such considerations. People can and do fill the demand as salaries go through the roof. What they do less well is actually fill the need that the job represents.

...

As it turns out my experience is not unique. Interviews of HR managers in India (Indians) show that most feel that only seventeen out of every hundred new engineering graduates is suitable to hire. In other countries this number is closer to one out of two. In addition there are not nearly as many engineers as promoters would have you think. As it turns out there are almost as many qualified engineers in Germany (population 83 million) as in India (population of about a billion). This data all comes from McKinsey who would be more than happy to help you outsource to India so if anything the bias is towards making India look better."

"The problem is most emphatically NOT that Indians are bad engineers. I have hired some truly great (world class) engineers here, but they are very hard to pick out from the sea of less than stellar candidates.

The problem is purely economic. The demand has outstripped the supply for good engineers and as a result people who have no love for code (or even any like for it) have rushed in to fill the gap.

Sounds familiar. How many people entered IT (or more specifically, software development) during the dot-com boom that never should have been allowed near a piece of code?

Let's face it, finding good people is hard. I've seen engineers perform poorly in one project and then be outstanding in another, where the difference had nothing to do with actual skills, but entirely whether the person wanted to be working on the project or not.

I think one of the possible causes of off-shore outsourcing is that businesses are so frustrated with attracting and retaining good software engineering talent that they would rather buy 100 Indian engineers and hope they get 17 good ones than hire 17 good American ones, because chances are they'll only get a handfull of good American engineers.

I'm also of the opinion that Universities, even great ones, don't really train engineers. They just filter out some of the bad ones.

Out of the countless comments posted in this Ruby Vs Java thread, how come less than half of them deal with it and the rest with US Vs India Vs China Vs Timbuktoo developers? Can we have a mod here please? i mean one who can do his job..Secondly, all indian and american GENIUSES here raise your hands plz.

there are one of two ways of getting projects done;1. Spend a *lot* of time, effort and money on getting every aspect of an architecture on paper and then outsource to get the development done at a lower rate. 2. Get better developers which knowledge of the domain. When your developers fully understand the task at hand, they can react quickly to flaws in a design and they can often correct them without having to engage the whole design team again. Also, less documentation is required when you have higher quality developers so the design phase is quicker and cheaper than the first method.

Why do you assume that outsourced developers aren't "better developers which[sic.] knowledge of the domain" ?

For many shops (esp. software shops) it is possible for the outsourced developers to gather requirements just like your in-house developers do. In fact, I've seen this work myself.

Depending on HOW you do outsourcing there can be little difference in the way development is done. The innefficiencies are that it is harder to have face-to-face meetings and it is harder to communicate sometimes.

You shouldn't hire dumb outsource developers just like you shouldn't hire them inhouse either. Also, development projects work better when the developers are fully involved in the design phases (as you mention). Outsourcing shouldn't impede this.

Why do you assume that outsourced developers aren't "better developers which[sic.] knowledge of the domain" ?

For many shops (esp. software shops) it is possible for the outsourced developers to gather requirements just like your in-house developers do. In fact, I've seen this work myself.

I don't assume that in-house developers are inherently better and have more domain knowledge. I assume that in the long run companies are better off keeping/bring that knowledge in-house.

The problem with outsourcing firms (and contractors and consultants) is that they no only work for you, but also work for your competition. This gives them the opportunity to cherry pick the easiest to sell (notice I don't say "best") ideas from an industry and then sell resell them.

If your company is less-than industry average, I suppose that's good for you.

But if you're leading the industry, or in a tight race, having your best practices leaked across the industry isn't necessarily a good thing.

This is only relevant if you still believe that IT can bring a significant competitive advantage to a business. I believe it can, but there are a lot of people, or at least people who get a lot of attention, who disagree with me.

Long term, I think companies are much better off cultivating and retaining internal talent.

Could we stop being defensive over Ruby (or whatever other fad language) already? I think the most interest Ruby has gathered so far has been from Java people looking for something to be paranoid about. If that's all there is to say about it, I don't find it interesting really.

At least in my case ... not :-). It really needs lots more hype that ROR or anything to replace Java. Besides, when Ruby will replace Java it will not be able to inovate anymore :-)). So better not :-).

If Ruby attempted to evolve into something that matched the functionality of Java and the Java platform then I suspect that the basis of the framework's popularity for its current fans would soon disappear.

Contribute to JRuby! This way, you get the benefits of Ruby, ROR and Java. When the boss says, we need to integrate with a mainframe, it will be fairly straight forward. Whereas if someone uses Ruby + ROR, the chances of a smoothe and easy integration with existing legacy systems won't be a total nightmare.

There's no need to fear ROR or ruby. We already have dozens of scripting languages and they are very useful. Lots of open source and commercial applications use scripting languages on a JVM.

Ruby no way can replace java. And there will be better things then Ruby when the time Java is to be retired. There are platforms, or languages more suitable for some applications than Java but that is not spesific to Ruby. People are givin too much credit to hypes. and this hye is created by people who actually do not deal with Real life projects and busines IMHO.

one or two people might "think" but do they actually do? i do not think so. Thinking if a technology cool does not mean it is feasible for business. Plus, Java do not have any "serious" disadvantage over Ruby, but Ruby has a lot.

Do not thank Steve blindly. Bruce, are you thanking the Steve person because you find him as your dumb follower? Steve is not impressed by your work yet; Steve commented like the way he did because he did not want to see Indians in India gain any sort of laurels through discussion.

O'Reilly Group, for their own benefits, is completely maneuvering Bruce Tate these days. They've found the person they are looking for! On the other hand, Bruce Tate - a slow brain - is putting his career (by and large) at risk for the small gain of listening to two sweet words from O'Reilly. For example, O'Reilly says to Bruce: "Bruce Tate has a knack for identifying successful technologies." Hah... Wake up, Bruce. Consult a senior like Ted Neward, get similar stronger advice from Ted.

Do not thank Steve blindly. Bruce, are you thanking the Steve person because you find him as your dumb follower? Steve is not impressed by your work yet; Steve commented like the way he did because he did not want to see Indians in India gain any sort of laurels through discussion.So, Steve and Bruce Tate are absolutely WRONG. The discussion says "Ruby replacing Java", and not anything else.Also, is Steve an agent from the O'Reilly Group?O'Reilly Group, for their own benefits, is completely maneuvering Bruce Tate these days. They've found the person they are looking for! On the other hand, Bruce Tate - a slow brain - is putting his career (by and large) at risk for the small gain of listening to two sweet words from O'Reilly. For example, O'Reilly says to Bruce: "Bruce Tate has a knack for identifying successful technologies." Hah... Wake up, Bruce. Consult a senior like Ted Neward, get similar stronger advice from Ted.

;) You don't get out much, do you? Are you scared, or did you just snort a little too much coffee this morning? By the way, I did consult Ted. He provided an interview for Beyond Java. I guess he's being used too?

;) You don't get out much, do you? Are you scared, or did you just snort a little too much coffee this morning?

I do, certainly do (get my word out, that is). You won't reply to my message if you meant what you wrote. Ok.

But, we are now getting tired of your premeditated, designed ways of expression. Examples?: your starting with a >wink<, or those kayaking experiences in your book no longer tell us that you are a cool person.

The point really was - With "Beyond Java", you lost all the credibility that "Better, Faster..." had brought to you before; Ted Neward or not. Reread my earlier message. Now, close your eyes, think for a minute, and realize why you are not suitable to belong to the ranks of the "Pragmatic" series of books http://www.pragmaticprogrammer.com. You are O'Reilly's used material. Ok. Enough from my side. Bruce, you learn now.

Technical books simply do not sell well. Suggesting that I, a best selling Java author who has a vested interest in the success of Java and who's only customers save 3 or 4 are Java customers, wrote Beyond Java to make money is insane. I've just about cut myself off at the knees to say what I believe is the truth. I could be cashing in on the Spring craze but chose not to. There are a handful of books out there that net the authors more than they could have made by flipping burgers. Maybe 20 or 30 a year out of thousands. I've been lucky enough to have a few best sellers, but they still don't pay the rent. Technical writing is NOT about money...at least not in this marketplace. You've got to love what you do.

And I believe that dynamic languages will fill a niche. Web enabling relational database data is an important one, but still a niche. I make these points very clearly in Beyond Java. I don't say Ruby is ready to take over the world...really never have. I say that languages come around every 10 years or so, and it's time to start paying attention. Ruby on Rails is interesting to me because it pairs a good language with a catalyst, and such a combination did incredible things with C, C++ and Java.

Technical books simply do not sell well. Suggesting that I, a best selling Java author who has a vested interest in the success of Java and who's only customers save 3 or 4 are Java customers, wrote Beyond Java to make money is insane. I've just about cut myself off at the knees to say what I believe is the truth. I could be cashing in on the Spring craze but chose not to. There are a handful of books out there that net the authors more than they could have made by flipping burgers. Maybe 20 or 30 a year out of thousands. I've been lucky enough to have a few best sellers, but they still don't pay the rent. Technical writing is NOT about money...at least not in this marketplace. You've got to love what you do.

Second, I can appreciate how difficult it must be to make a living as a technical writer and I respect that you took a risk by writing Beyond Java. (I hope that your Java business helps to keep you out of the fast food industry!) :-)

I think in part what we are discussing here is objectivity when comparing Ruby and Java. I was merely suggesting that bias should be taken into account when evaluating points of view and I hope we can continue this interesting discussion.

Technical books simply do not sell well. Suggesting that I, a best selling Java author who has a vested interest in the success of Java and who's only customers save 3 or 4 are Java customers, wrote Beyond Java to make money is insane. I've just about cut myself off at the knees to say what I believe is the truth. I could be cashing in on the Spring craze but chose not to. There are a handful of books out there that net the authors more than they could have made by flipping burgers. Maybe 20 or 30 a year out of thousands. I've been lucky enough to have a few best sellers, but they still don't pay the rent. Technical writing is NOT about money...at least not in this marketplace. You've got to love what you do.

Hi Bruce,First, let me say I'm sorry if I mis-represented your point of view here. Second, I can appreciate how difficult it must be to make a living as a technical writer and I respect that you took a risk by writing Beyond Java. (I hope that your Java business helps to keep you out of the fast food industry!) :-)I think in part what we are discussing here is objectivity when comparing Ruby and Java. I was merely suggesting that bias should be taken into account when evaluating points of view and I hope we can continue this interesting discussion. Ian

Thanks. I appreciate your response.

So all things being equal, my bias should have been in favor of Java, no? The problem, as I see it, is the poor productivity of Java in a few important target niches. I see a whole lot of opportunity for frameworks like Rails that solve one problem, and solve it very, very well. You should have more than one tool in your toolbox. If you're going to drive a screw, don't reach for a hammer. My business will continue to focus on Spring and choosing persistence frameworks, but we're also going to add emphasis on Ruby. And we're going to recommend it where it's the right tool for the job.

The problem, as I see it, is the poor productivity of Java in a few important target niches.

I agree. Moving from scripting languages like Perl, ASP and PHP to Java was a trade-off for me. On the one hand, you lose the RAD nature of Web scripting languages (due to compile-time overhead I don't consider JSP a RAD language), but on the other hand you gain a mature object-oriented language with many good frameworks.

At this point, I'm very interested in JavaServer Faces with Facelets because once again we have the development speed of scripting languages, so I see things balancing out in favour of Java.

I see a whole lot of opportunity for frameworks like Rails that solve one problem, and solve it very, very well.

Do you think one day we may see a Ruby presentation layer on top of Spring and Hibernate?

I'm very interested in JavaServer Faces with Facelets because once again we have the development speed of scripting languages, so I see things balancing out in favour of Java.

Heck out Tapestry: develop entire application look and page flow in DreamWeaver and then simply instrument it with Tapestry IDs.Cool feature unavailable in JSF etc: after instrumentation pages still can be maintained in DW.

Do you think one day we may see a Ruby presentation layer on top of Spring and Hibernate?

I would think we'll see pretty good interop...we're already moving in that direction, and certainly Spring could play a role. But I also think that if you're talking about serious metaprogramming (like Hibernate and most transparent persistence frameworks) Ruby would be a better bet. Metaprogramming is simply much easier in Ruby, so you can spend more time on the details. And I think JIT will help Ruby as well.

- Someone posts some poorly thought out brainfart on his blog about the fashionable topic-du-jour.- As this might raise pointless controversy again and is guaranteed to lead to no conclusion, it is brought to our attention by TSS.- It immediately deteriorates into a racist pissing contest between ignorant AmeriKans and ignorant Indians regarding the virtues and flaws of outsourcing, with ample usage of anecdotal evidence.- That's it for today. Follow-up coming soon.

It appears passions have flared today, mine included. Rather than dismissing this out of hand, maybe we can learn that the globalization of IT has raised new questions, emotions and unfound distrust of our colleagues in other countries. Sure Sanjay stuck his foot in his mouth and it pissed me off. I apologize to everyone for my part of the rant today.

Maybe the rest of us can step up and do the same and get on with our passion for technology!

To the group:It appears passions have flared today, mine included. Rather than dismissing this out of hand, maybe we can learn that the globalization of IT has raised new questions, emotions and unfound distrust of our colleagues in other countries. Sure Sanjay stuck his foot in his mouth and it pissed me off. I apologize to everyone for my part of the rant today.Maybe the rest of us can step up and do the same and get on with our passion for technology!Keith

Agree. The thread turned into one about India and the quality of outsourced work, or anything else than what it should be.

To get back to the subject, I'd say there is no need for ruby to replace java and it will not. Just don't turn all this into something like those .NET vs Java thingies. But thanks God ruby and RoR exists and I hope Java will get the maximum from it's ideas.

Also I think that the interest that a Ruby based FRAMEWORK as ROR has drawn shouldn't be turned into a ruby vs java battle.

Thanks keith and sanjay for letting this off. People like me come to TSS to read about expert comments and make decisions on learning technologies. I dont give damn about whether an indian or any other developer is superior.

Reading TSS really helped me a lot , i suggest TSS to my fellow developers who are steping into java and j2ee or allready in. I hope members will preserve the TSS expectations by not letting their emotions on racism make mark on TSS. Let it be on technologies they are very much passionate about.

Are there anyone who have seen how to make blog in 15min using JAVA? What makes RoR so attractive is that the RAD is possible in that language.

It doesn't need model, because it is based on database table. You also doesn't have to modify UI a lot, because the UI automatically reflects your tables. AFAIK, no such features are available in JAVA.

I hope that someone will show how to things more faster in JAVA using any libraries/frameworks, and post a video to www.

What makes RoR so attractive is that the RAD is possible in that language.It doesn't need model, because it is based on database table. You also doesn't have to modify UI a lot, because the UI automatically reflects your tables. AFAIK, no such features are available in JAVA.

Check some GUI tools for JSF (SUN, Oracle, IBM).

You can make a general CRUD in 10-20 minutes.With sophisticated JSF components even more ...

Are there anyone who have seen how to make blog in 15min using JAVA? What makes RoR so attractive is that the RAD is possible in that language.It doesn't need model, because it is based on database table. You also doesn't have to modify UI a lot, because the UI automatically reflects your tables. AFAIK, no such features are available in JAVA.I hope that someone will show how to things more faster in JAVA using any libraries/frameworks, and post a video to www.

How many of us have had to make blog software before? Much less in 15 minutes.. How about we just compare all languages/platforms based on how quickly we can pump out "Hello World" apps for them?

Are there anyone who have seen how to make blog in 15min using JAVA? What makes RoR so attractive is that the RAD is possible in that language.It doesn't need model, because it is based on database table. You also doesn't have to modify UI a lot, because the UI automatically reflects your tables. AFAIK, no such features are available in JAVA.I hope that someone will show how to things more faster in JAVA using any libraries/frameworks, and post a video to www.

How many of us have had to make blog software before? Much less in 15 minutes.. How about we just compare all languages/platforms based on how quickly we can pump out "Hello World" apps for them?

I'm not talking about 'hello world' like applications. The problem is that the RoR has lots of templates which accelerates web developement, whilst java does not. This is what I've though a few days ago.

And then, I've found that SUN released Java Studio Creator which helps web site development using JSF. The conclusion? JAVA has tool and componenets needed for fast website developement, now.

Except we know that huge amounts of rich client applications will be written in C# and VB.NET in the future just because of Microsoft's dominance on the client and .NET becoming an integral part of Vista.

is this a place to make comments on Ruby or platform to fight for racists? . why TSS is allowing this?.I visit TSS to know Java industry trends, read articles and comments from experts not for the racist non-sense.

I agree, reading this thread seems like people are concentrating more on where developers come from rather than talking about technology. Someone pointed out that there isnt any innovation going on in India. I think they are seriously mistaken.. Companies like MS, Google, IBM they all have officers in India and regardless of what type of work it done at offshore locations... they still are a part of the innovation process. India has some top IT schools too and so does US and other countries.

I think there is no harm in trying out new technologies but I think we shouldnt be too judgemental about a language which is in early stages. If Ruby has potential to become a J2EE 2.0 or replace java (which i dont think is the point) then lets cross our fingers and let the market decide..

To say that Ruby is a niche player is not to say that Ruby will always be a niche player.

Look at PHP -- it nicely filled the niche of quick and dirty web applications that access data. It is now coming into the limelight as the primary alternative to Java-based applications, and is getting used for some sizeable projects (Yahoo!).

To say that Ruby is a niche player is not to say that Ruby will always be a niche player.

True, but moving out of niche use is hard. Very few languages succeed, and there are some tough requirements, such as high performance and security.

Look at PHP -- it nicely filled the niche of quick and dirty web applications that access data. It is now coming into the limelight as the primary alternative to Java-based applications, and is getting used for some sizeable projects (Yahoo!).

It is seen by some as an alternative to Java-based web applications. That is, and will always be, a niche. The world of software development consists of far more than just web applications, even server-side.

I am a regular reader of this site. This thread has completely gone offtrack. However since some points are raised, I would like to give my impressions on the those points.

1) Ruby replacing Java?

I have not studied much about ruby but I am closely following TSS. I am not a language expert to compare Ruby Vs Java but looks like much of praise for ruby is because of framework called Ruby on Rails. IMHO it is incorrect to compare a framework with Java. Java is vast and currency it is used widely. Agreed java has its pain points. One more comment which I see often is RoR is 10X faster or something like this. I am not sure, how would ruby work when the size of the app grows. I would like to illustrate a scenario to drive my point.

I am working for a large company where the project has some 300 developers. When I develop some code in that project, I need to start my app server, deploy the web app and test my stuff. When I change even a single line in class, i need to re deploy the app and test again. Every time I do this cycle, i spend some 3 to 5 minutes. Imagine how much time I would be wasting in a day. When I start up my app server, it would take some 10 minutes. Because in enterprise apps like the app I am doing, there will be lot of preloading, caching etc. I dont have an answer as to how to reduce this wastage. I want to see how an app server based on ruby would behave when size of the app is like the size of the app I am talking about. I am sure every other guy might have experienced this while doing a j2ee project.

The day some one tells me that Ruby can handle the pain points of java much more gracefully than in java, then I would start giving a serious look at Ruby. I know that ruby (ROR) is better equiped to deliver certain types of applications better than java and I am fine with it. I dont think one should emotionally attach themselves to a specific language for emotional reasons. For now, I may want to consider ruby with ROR for some small db oriented apps. But not enterprise projects at this moment.

2) Quality of software written by Indian programmers

I dont think quality of a program/code would differ between a code written by an Indian or by an American or for that matter person of any nationality. Someone pointed out about deming on one of the thread. If I am not wrong, deming's study focuses on delivering defect free product and process to acheive that. What is important is the process that is used to acheive this. It may be called ISO, CMM and Six Sigma etc. The name of the process or the contents of the process does not matter as long as bugs/defects are addressed before they are delivered. I am an Indian, and I dont have any problem in admitting that the programs written by me would have bugs. To a large extent, I would test and fix as many as I can find. After that I would rely on the process to fix other bugs before release. If some one tells me that he can write bug free code I treat him like god. Because I was told “to err is human”. If a company does not have a good process in place, whether they offshore it or not IMHO they cannot deliver a good application.

3) Knowledge of business required for writing programs.

If Indian’s are blamed for not having domain knowledge, i see no difference of situation in my workplace (US) where I work with many amerians and chineese. Many of my collegues are cluecless about business. The so called business analyst sits somewhere and they are above developers reach.

To what extent a person in project needs business knowledge is highly context specific. I belive these things can be addressed with a good software development process.

Please dont take my above comments as personal. They are just my impressions.

1) Can Ruby replace Java2) Is India (China) able to replace US in building software From my point of view it goes like this

1)Java is just a language and so is Ruby, I remember when I went to University we discussed using functionel programming, why because we where able to express our thought my precisely but still this kind of language is mainly used in the academic sociaty, my point is that people will use the language that have the correct mix of expressive power combined with easy of use. Ruby (Ryby on rails)is easy to use but do it have the expressive power yeat, concerning libraries and backing in the industri, so I doubt that it will remove Java. Still Java has problem concerning deployment as I see it, We are using way to long to deploy to appserver and making simple things, that why we are having this discussion.. so maybe we actually should discuss how to fix these problems in Java

2) India is going to replace US in the software industry, but still we need a lot of skilled local people to deliver software so its not a either them or us. The culturel difference will always be a barrier the timezone will and in general the way we communicate. Its basicaly comes down to communication if we are not able to see the issues from different point of views we will lose either US or India.

A final thought why is Ruby being the killer language and not Python or some of the countless number of scripting languages out there?

I think the fundamental questions being asked here are:1. What step(s) in the software development process really produce the value for software?2. What steps contribute the most cost to the development of software?

Personally, I think the answer to both questions is: Achieving and maintaining alignment between the manual business process and the automated business process.

Some would say that means that all other functions can be outsourced. Others would say that means that developers must be in close contact with the people actually executing the business process, so the development should not be outsourced (or at least off-shored).

I tend to agree with the anti-outsourcing crowd.

Or you could look at it another way:What's more effective at acheiving alignment: large up-front work, or highly iterative work?

The problem with large up-front work is you don't get any real validation until too far down the line. The problem with highly iterative work is that it's kind of like a steepest descent algorithm - it can easily be trapped by local maxima and minima. Or, if the iterations seem to always contain big changes, like a genetic algorithm that never converges to a homogenous population.

So what does this have to do with Ruby vs Java?

Ruby helps you iterate faster, but iterating faster doesn't necessarily do you any good. The real gains are to be had elsewhere. Where? I suppose you could say "business process analysis," but that sounds too much like something a consultant would say. Really, what it boils down to is every architect/systems engineer should consider the user as a key part of the artitecture, allocate requirements to it accordingly, and remember that the interface between it and the rest of the system is essential.

What does it have to do with Big Indian brains (TM)?

Big Indian Brains (TM), like other Big Brains, are only useful if they are working closely with the people they are trying to help. Working closely requires a lack of barriers, physical (time/distance), linguistic, and cultural.

So Big Indian Brains (TM) are only really useful if they are working with other Indians. When India develops an economy focused on serving it's own people rather than Westerners, I'm sure all these Big Indian Brains (TM) will be very useful. But until then, I think they have limited value.

Kids ,in general, are smarter than their parents and so there is hope that the polulation of morons would decline.Just my $0.02

Going totally off-topic, but moronity is relative. It's like saying that people of Canada/Guatemala/Iceland/Togo are stupid; half of the population have under average IQ. So there will be equal amount of morons in the future. The morons of the future will just be much smarter than morons of today.

What happened wasa) Both .net and Java took ideas from each other (a good thing!)b) Each found their Niche - Companies that want the comfort of a single supplier went for .Net, those that want diversity went for Java.c) Both Languages thrived and are now stronger than before.

Watch out for the same process happening with Ruby and Java. I look forward to having Ruby's ease of web development available within the Enterprise Java stack.

TechTarget provides technology professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective purchase decisions and managing their organizations technology projects - with its network of technology-specific websites, events and online magazines.