The No.1 i-Technology Magazine in the World !
   
 

      ES no BS
       My son's animations and music            training         Twitter            No BS IT podcast

Archives

««Mar 2010»»
SMTWTFS
  123456
78
9
10
111213
14151617181920
21222324252627
28293031

RSS Feed








Subscribe to these blogs

Try/Catch idiom

posted Saturday, 20 December 2008
In one of the Russian online forums, I ran into a post called "Indian try/catch Java idiom". Here's what it was about:
"Indian software developers learn from books and copy/paste code from book samples. The Java try/catch example is sometimes shown in a standalone Java application in a method main:

 try {
    // do some stuff
} catch (Exception ex) {
      ex.printStackTrace(System.out);
      System.exit(-1);
}

Some "great" authors write these examples and other just copy and paste this code.  So if your application server all of a sudden stops working, the chances are that one of the software developer from India just copy/pasted the above code."

People from the former USSR often overestimate their coding abilities. But if you apply 80/20 rule, everything falls into its place. In any country with a reasonably established higher education 20% are the best and 80% will always remain poor-to-mediocre software developers.

Since English is a primary language in India's universities and colleges, they have a huge advantage over developers from Russia, Ukraine et al, where many programmers have hard times with English and lag behind Indians in the world IT workforce. Add to this fact that India has huge amount of people in general hence a lot more educated people than Russia, the 80% here and there are not the same. 

For sake of this discussion, let's assume there is total of one million of active software developers from India hence 800,000 of them are poor-to-mediocre. At the same time there is only 100,000 visible software developers from Russia hence only 80,000 of them are poor-to-mediocre.
 
Of course, 80K of bad developers is better than 800K of the same, but if you put things in perspective, I don't think that software developers from Russiua, Ukraine, or Belarus are in general superior that their peers from India.
There are stars and losers everywhere.

Meanwhile, when software developers from Eastern Europe ask me,"What programming language to learn next", I always give the same answer, "English".

Disclaimer. I was born in Ukraine, got my Applied Math degree in Russia, and started my software development career in Ukraine.

Yakov Fain
www.twitter.com/yfain

tags:    

links: digg this    del.icio.us    technorati    




1. Roman Elizarov left...
Sunday, 21 December 2008 7:01 am :: http://elizarov.livejournal.com

I do not buy your 80/20 theory, because it does not explain results of various international programming competitions (which universally use English as their primary language). If your theory were true, you should see 10 times as much Indian participants in those competitions with 10 times as much Indian winners vs Russian ones.

However, if you actually take a look at results of ACM ICPC, Google Code Jam, TopCoder, etc, then you'll see that indeed, participation of Indians is much larger, but their performance is dismal. For example, TopCoder's country ranking at http://www.topcoder.com/stat?c=country_avg_rating shows that there are twice as many Indians competing, but even the top Indian coder performs on par with just 25th Russian one.

The actual theory capable of explaining that is more complex. To really understand what is going on, one must take into account some obvious and not-so-obvious differences in education systems of different countries. I will not go into details here, since I believe that you can figure out it all yourself when you really start comparing them side-by-side.


2. Yakov Fain left...
Sunday, 21 December 2008 9:41 am

Roman,

There's huge difference between software developers and coders. I'm talking about millions of ENTERPRISE software developers not people whose minds are sharpened to winning coding competitions. Great coder not always make a great software developer. The latter is a combination of programming abilities, creativity in generation of new ideas rather than speedy implementation of algorithms from a text book, time management skills, ability to work in a team, e.t.c.

I followed your link with top coder stats, and what does it prove? Forget about India who is 14th. What about the USA who's only seventh? Based on your theory, all great software should be originated in Russia, China, Poland and Ukraine. But for some weird reason, the USA is number one in producing of the best software that the rest of the world is happily using.

But after the US software engineers release their software, top coders from Russia easily break it and steal it, and this is where their CODING skills become handy.

If Russian educational system is better as your post probably implies, how do you explain the fact that only two universities from Russia mad the the list of top 500 world schools http://www.plant-biology.com/university-rankings.php?

Until I hear better arguments, I'll keep rejecting the allegations that Russian programmers are superior to Indians. My unofficial rating of software developers remain the same - the percentage of good enterprise software developers is the same in both countries.

Would love to hear someone from India, the country I like and enjoyed visiting earlier this year.


3. Roman Elizarov left...
Sunday, 21 December 2008 2:33 pm :: http://elizarov.livejournal.com

Please, don't read between the lines of my post.

I did not claim that one's country education system is better or worse that the other. They are different, and that is why your 20/80 theory does not apply. For example, you can have two universities where one educates 10 medium-level developers in 1 year, while the other spends 10 years educating 1 star. Those are completely different different approaches and in different situations they have their own strengths and weaknesses.

The fact that USA is 7th in TopCoder ranking is also explained by difference in eduction systems. In am not an expert, but I've challenged various US professors with this question and they all gave pretty plausible explanations of why it is so based on peculiarities of US education system. In short, if you are a baseball star in US university then you get scholarships and respect, but nobody cares if you are a programming superstar.

Meanwhile, you don't have to look at education at all to explain success of US commercial software. It is easily explained by general economics -- the country with the largest GDP will lead in all areas (if everything else is equal) and the effect of easier access to capital is not linear, especially if you have a long-term ability to get credit from the rest of the world without a need to ever repay.

As for you comment about university rankings... I am cannot say anything here, since the site you've quoted does not even list criteria that were used to rank universities and, anyway, I do not see how plant biology is relevant to software engineering discussion.


4. Yakov Fain left...
Sunday, 21 December 2008 2:58 pm

The most reputable college ranking I know of is the one by USNews and World Report. Here's the link to the top 200 World universities: http://www.usnews.com/sections/education/worlds-best-colleges/index.html

Moscow University barely made the list (#183), and a couple of Indian schools are ahead. You can find methodology there too. Let's wait till someone from India speaks up.


5. scout85 left...
Monday, 22 December 2008 1:06 pm

Hi,

I'm from India but I'm probably not the one you guys have been waiting to hear from, because although I love programming, I don't have much experience in it.. I've only just got a job in Java Programming. But I just wanted to say that I agree with this part of Yakow Fain's comment -

"Great coder not always make a great software developer. The latter is a combination of programming abilities, creativity in generation of new ideas rather than speedy implementation of algorithms from a text book, time management skills, ability to work in a team, e.t.c."

I agree totally with this comment because for me also, Programming has always been more about creativity, ideas. I don't consider myself good at time management or working well with a team etc, but I do believe I'm a good programmer. I may or may not win a coding competition but I know I can produce a good, working piece of software. Because I love programming, I love creating new things, I find it fun and exciting.

I'm sorry I'm too inexperienced to debate about the education systems in different countries and how that affects the programming skills of an individual; I just wanted to respond to Yakow Fain's comment, because it sounded a lot like things I'd say.


6. buG left...
Wednesday, 24 December 2008 8:19 pm

Hi Guys,

I would like to say the following things from my experience: a) enterprise software developers: I can see that code provided by our software developers from India - is quite poor. Very often they are using simple workarounds and don't care about future. Their main goal is to have "code release" quickly. They are always promise good time schedule and cheap prices. For the last 5 years I never saw good enterprise solution provided by guys from India. I'm working in one of the biggest IT company.... US one... But I can't say that all coders from India are bad coders. I can say only that provided code - is not so good as it can be. The reason can be in management system and.... maybe in amount of coders. As you say, 800.000 poor coders... they need to work somewhere... isn't it? it does make sense. b) Education: for the last 10 years the education system goes down in Russia... and not only in Russia. It's worldwide changes. The new society. The new enterprise. Goals changed. For example: we have Java language - it's simple. People who learn Java and only Java - can't think. Naturally, they can't think. Low level languages stimulate your thinking, they learn you to be creative, to be proactive. But... Enterprises wants to have Java coders... a lot of them... and each university should provide those Java coders. That's reality. Maybe it's OK.... but who will write compilers? who will code all that low-level things to have your stuff working on low footprint devices? who will port and optimize your Java VM? There are many other examples... not only Java. BUT, maybe it should be like this and it's our progress and future. Simplicity in all things.

and... yes, I know some guys from ACM first places - and no, thank you, I don't want to be one of them. Yes, they are good. Yes, I need need much more time to have such skills in particular coding area. but... there are so many things in this life and "code" is not the main one. Take your time and try to taste LIFE from different points... but not only from code perspective and talks about "who is the best?".

Thank you for your time.


7. Valery left...
Wednesday, 24 December 2008 9:36 pm

1. Let us discuss your 80/20 theory at the different angle. 80% or more of the code is written by Indian developers, 20% or less by the rest of the world incl. xUSSR. So if smart/dumb divide is the same across both populations, then 80 percents of glitches are invented by Indians, right? ;)

2. Ain't the example provided is in fact ridiculous? How it is better than

static void main(String[] argv) throws Exception {

  • // do some stuff

}

especially from education prospective? What does it teach? "Eating" exceptions? Adding useless code (System.exit) that even harms in different scenarios if copied "as is"?

3. "indian idiom" is just a cliche (see ). The only true difference between good and bad developer is that the later is just blindly copying "mantras" from books or other sources, the former is interested in "whys" and "hows" a code in example works.

Btw, here is an example of Russian try/catch idiom (taken from real projectS):

try {

  • // call several methods that may throw several exceptions

} catch (Exception ex) {
  • if (ex instanceof IOException) {

    • // handling

  • } else if (ex instanceof FileNotFoundException) {

    • // handling

  • } else if (ex instanceof SQLException) {

  • } ...

}

More involved, almost harmless, but absolutely ridiculous re-invention of OOP Exception Handling.

Or international example boolean isRequired = key == null ? false : key.equals("yes") ? true : false;

The code screams "I'm written by a Java newbie!"


8. Yakov Fain left...
Wednesday, 24 December 2008 10:21 pm

Valery,

I've been working with excellent software engineers from India. I've been working with not so good engineers from India. But I don't accept when people accuse a NATION of anything.

The quality of Java samples from the book is irrelevant in this discussion.