• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Dominic to Java developers: Quit NOW

Joined
5/2/06
Messages
11,750
Points
273
Java is so hugely important that Oracle and Google are locked in a fight to the death with Oracle claiming more in financial damage than the cost to NY of 9/11
There are more Java developers than citizens of Britain and France put together and more job ads for Java than any other programming language.
Excellent. It's now time to quit.
As far as I can tell, you aren't allowed to leave high school in India without at least basic competence in Java coding and that should scare you all by itself. Indian programmers are variable in quality, but their best are very good indeed.
Even the superstitious nonsense that passes for CompSci education in the UK is centred around Java and that applies pretty much everywhere else too.
So, that's a *lot* of Java programmers coming onto the market far faster than the rate or retirement or the rate of people quitting to do something interesting.

Maybe you’re better than most of these others. Then again, maybe you’re not. As a headhunter, I will share with you that around 80% of the people I meet are above average. I know this to be true because they tell me so, and no one is economical with the truth when looking for a job are they?

Anyone who, like me has been both a developer and a headhunter will tell you that pay doesn't really correlate well with ability: it's how much the bank needs to pay to keep/get the skills they need this week. The bad news is therefore that Java has lost its rarity value, big time. Sure there's many packages, but you aren't the only person with their nose in an O'Reilly book are you?
As supply exceeds demand, pay rates will come down, and they will come down hard - look at what happened to the VB guys (oh I forgot you're smarter than them, so that's all right); VB went from sex on legs to an embarassment on your CV. Remember Powerbuilder? No? that's how hard it's fall was, and not that long ago.

I'm not saying quit your job, but you need to start learning more about your business and a new different language as far away from Java as you can. And the sooner you can do so the better.
http://news.efinancialcareers.co.uk/NEWS_ITEM/newsItemId-34001
 
A network engineer makes $6,000 a year in Bangladesh and a CEO earns about $30k.
 
Are C++ fanboys loosing their ground to other programming languages so badly that they start to atack them?

Few random points though.

As far as I can tell, you aren't allowed to leave high school in India without at least basic competence in Java coding and that should scare you all by itself.
I'll give a hint. You can't leave a school without some basics in math in almost all countries. Does it scare you? Should all quants and financial engineers quit their jobs now?

So, that's a *lot* of Java programmers coming onto the market far faster than the rate or retirement or the rate of people quitting to do something interesting.
We already automated (developed software for) everything in this world, right ?
Sure there's many packages, but you aren't the only person with their nose in an O'Reilly book are you?
So what?
- You are not the only one to donwload and read bout Oberon so go and write software for nuclear power plants
- You are not the only one to read about Ada so now you can send your CV to NASA to develop software for space shuttles
- You are not the only one to read Armstrong's thesis and documentation for Erlang so now you can develop telecom software with 99.999999 availability
- etc..
 
Right now there is huge demand for Java programmers in USA.They are paying between $800 - $1,000 per day for Java contractors in USA. This is because US government has cracked down very hard on H1-B visas and is making it very difficult to get the H1-B visa. If US government policy changes, of course the market will soon be flooded with Indian programmers and the Java rates will drop very rapidly.
In India, when they get the Engineering degree, then they have to make a choice to either go into Java stream for IT work or .NET stream for IT work. Most of them go into IT and within 3-4 years they become quite competent programmers. After that, the main hurdle is getting the H1-B visa and the Green Card.
 
I'm guessing everyone that liked KaiRu's post is a Java programmer...

Even though i am using Java right now i am not a hardcore Java programmer.Its just KaiRu's argument sounded more logical.

Fact is, earlier Indian high schools used to teach C++ ,but as i heard, now they have switched to Java.On the other hand at my university they switched from Java to C++.But it doesn't mean that people have to quit being a C++ or Java programmer just because Indians or Chinese are learning it.
 
I'm guessing everyone that liked KaiRu's post is a Java programmer...
To add to that, 10 years from now programming classes will be as required as math ones for graduation even in the USA, further diminishing the competitive advantage of "professional" programmers.

Here is some accurate information. Between 2000 and 2008, enrollment in Computer Science and IT /IS programs in USA DROPPED between 50% - 60% in EVERY university. This will show the huge gap between demand and supply for competent programmers in USA.

As for teaching programming in High Schools in USA, if the high school students in USA become as competent in prorgamming as they are in Math, I don't think that the students in China and India have anything to worry about. Just take a look at any of the MFE classes in the top universities and you can see who is competent in Math and Programming.
 
It depends on the high school. By the time I graduated my public, small-town high school, I had amassed 32 university credits (cals 1, 2, stats, bio, chem, physics, european history, us history, psychology), gotten an exemption from any foreign language class requirements at my uni, and taken linear algebra. I was literally a programming class away from fulfilling minimum MFE requirements.

If my high school decides to adopt a mandatory programming track with optionality to make it as rigorous as its other tracks are, it will start pumping out entry to mid level caliber programmers by the dozen a year, with another several dozen entry level programmers to boot. Keep in mind the graduating class size is ~230-250.

Quality of education varies by location, even in the USA.
 
The market for developers is and will always be the market for developers. Relatively new, and increasingly oversaturated.

This actually not true. Let's forget about Java for now. Companies are always looking for good engineers. Knowing how to code a hello world program is one thing. Knowing how to code a complex algorithm to solve a specific task is something totally different.
 
Here is some accurate information. Between 2000 and 2008, enrollment in Computer Science and IT /IS programs in USA DROPPED between 50% - 60% in EVERY university. This will show the huge gap between demand and supply for competent programmers in USA.

The reason for the drop is probably because of a glut of H1B/L1 coders, which has led to depressed wages and a saturated market. I'm not talking of ace coders but run-of-the-mill.

As for teaching programming in High Schools in USA, if the high school students in USA become as competent in programming as they are in Math, I don't think that the students in China and India have anything to worry about. Just take a look at any of the MFE classes in the top universities and you can see who is competent in Math and Programming.

Agreed. It depends on how much and how rigorously coding is taught in school. Given the calibre of the average student, not much can be taught effectively. So making it mandatory is not going to unleash hordes of competent coders on the market. It take aptitude and time to become familiar with a language like C++, to pick up algorithms and data structures, and to use these fluently.
 
Enrollment in British CompSci programmes also dropped hard. I agree with BBW that many poeple can't be taught it usefully in schools, fine teach the ones that can learn. I cannot play the guitar, as in I can't fly, tried and my teacher just gave up. That applies to everything aside from core maths and English, don't warp the subject by making it easy enough for everyone.

Ironically the astoundingly shit IT GCSE (exam for 16 year olds) has a high take up rate, because it is so easy schools use it to improve their league table placings.

KaiRu seems a bit sensitive about Java, please note I was writing as a headhunter for a careers website. Elsewhere I have advised some types of people that they should lean VBA, and if there was money in Cobol, I'd advocate that as well.

I was explicitly not commenting on Java as a language but as a mechanism to get money, some of Java's perceived advantages over (say) C++ are good for the employer of a programmer, but making it easier means you earn less, as a HH I see that as bad, but your utility function is for you to choose.
 
KaiRu seems a bit sensitive about Java, please note I was writing as a headhunter for a careers website.

Not really - I'm not that sensitive :) My post is not about to defend Java (either as language or some way to get more money) but to get a better arguments to abandon it.
 
I cannot play the guitar, as in I can't fly, tried and my teacher just gave up. That applies to everything aside from core maths and English, don't warp the subject by making it easy enough for everyone.

CS education quality has been slowly but surely eroded since the mid 1990s. Students are not learning the stuff they need to learn. Maybe it's just a generation thing; everyone wins and academic mediocrity is accepted.

Java is OK but it shields you from skills that need to be learned. In a sense, it gives a false sense of security.
 
Java is OK but it shields you from skills that need to be learned. In a sense, it gives a false sense of security.

This is exactly what Joel Spolsky mentioned in his article about The Law of Leaky Abstractions.
Joel gives some very nice examples of leaky abstractions and C++ like Java and like other programming language is not protected from a weird things.

One of the examples from this article:

One reason the law of leaky abstractions is problematic is that it means that abstractions do not really simplify our lives as much as they were meant to. When I'm training someone to be a C++ programmer, it would be nice if I never had to teach them about char*'s and pointer arithmetic. It would be nice if I could go straight to STL strings. But one day they'll write the code "foo" + "bar", and truly bizarre things will happen, and then I'll have to stop and teach them all about char*'s anyway. Or one day they'll be trying to call a Windows API function that is documented as having an OUT LPTSTR argument and they won't be able to understand how to call it until they learn about char*'s, and pointers, and Unicode, and wchar_t's, and the TCHAR header files, and all that stuff that leaks up
 
Java is OK but it shields you from skills that need to be learned. In a sense, it gives a false sense of security.

This can be said about C# as well. Any language protecting you and providing shelter from the
complexities of raw API calls deters you from knowing core constructs of programming field deemed essential especially for CS people.
 
This can be said about C# as well. Any language protecting you and providing shelter from the
complexities of raw API calls deters you from knowing core constructs of programming field deemed essential especially for CS people.

Yep, C# is exactly the same in this respect.

C# is a great language.
 
Yes, much of what I say about Java applies to C# and for that matter to Python, Ruby et al.

The cited article was written for a general finance jobs site, I would have phrased it differently for somewhere like Quantnet.

The price of all skills has a decay function, you are in effect trading an arbitrage since the marginal cost of your time is transport cost to work and coffee, say $5 an hour. Hopefully you are selling your labour for more than that ...
Every time someone spots that arb and learns a given skill, the less those with a long position in it are worth and this is not a complete market, you can't short your skills, hedging is expensive as is diversification. Your skills have an NPV of the difference between minimum wage and real pay for the rest of your life, so in effect you have a multi million buck long position that you're betting your life on in 2-3 stocks, that's close to rogue trading...
You have invested capital in gaining skills using both time and money, but as we all (should) know that this is a sunk cost. When I hire you I care what your skills are worth to me, not how much they cost you.
I also don't really care how hard they are, once some years ago Microsoft sent me a CD of some s/w to look at, not long after an outfit we did business with had a really bad problem, and I basically got this s/w, said to it "copy the data out of the bad place and into the good one". Nearly all the effort was watching the progress indicator. This made them soooo happy. The CEO of a very very important organisation came and found me, thanked me very profusely and as a result my firm got some serious goodies. 50/50 my 10 year old could have done this, he's smart but not that smart. A guy sitting near me had done work saving them millions, he was so badly paid that no one in my team was paid as little as he earned, he quit to go to GS.

His work was not valued highly even though it was by any criteria much harder, but the employer felt they could easily get others to do the job as cheaply. As it happens they were wrong, which illustrates another critical issue in the price of your work; is it perceived to be a "commodity" ?, which in this context means cheap.
In the mid 90s I wrote an article for PC Magazine basically telling developers of the "career enhancing" capabilities of Java, I was right. Although there were about 1% as many Java jobs as now, the supply / demand was favourable and there was a premium for it being "new" which meant that even if you weren't that good at Java they would take you because of need. Also because as several here have pointed out the syntax is a derivative of C, so for many I was writing for the transition was easy.
The short transition time is important, a mistake many developers make is following the trend after it has peaked. It's hard to spot a global maximum before it happens and your risk is increased the longer you have to spend getting up to speed. Java will hit this maximum.

I'll be straight with you that I don't know when that will happen, my belief looking at poor quality data is that we actually hit it last year, but the market has many factors and noisy data.
Changing technology streams as an employee is really quite hard, rarely can you say to your boss, "I want to do this project in Python because it will help me get a new job..." Also it is hard work and no one exactly knows which things will be cool in 3 years time.

The data I read tells me that this situation is getting worse. Java will not "die" in the next decade, some people being born today will be maintaining Java code when they grow up.
The number of different skills in job ads is going up, implying that safe bets are becoming rarer, which makes the ecosystem for each of them more delicate.
 
I think that you are probably wrong on this one. Java is an incredibly robust and versatile platform for development. The technologies are changing rapidly to the new environment with Spring, Hibernate, Struts. Companies like Oracle and Google are investing huge sums of money in open-source development. GWT is a superb library and getting inceasingly popular. Most importantly, everything is FREE. You do not have a company like Microsoft trying to milk the Windows O/S or .NET platform for all it is worth.
The FREE factor and the rapidly changing open-source technologies linked to Java will probably result in Java becoming the dominant language of devclopment in the decades to come.
I can hardly see any performance difference between C++ and Java. C++ is much more difficult to code and maintain.
 
This is exactly what Joel Spolsky mentioned in his article about The Law of Leaky Abstractions.
...

Joel gives good advice, like this here:

Learn C before graduating
Part two: C. Notice I didn't say C++. Although C is becoming increasingly rare, it is still the lingua franca of working programmers. It is the language they use to communicate with one another, and, more importantly, it is much closer to the machine than "modern" languages that you'll be taught in college like ML, Java, Python, whatever trendy junk they teach these days. You need to spend at least a semester getting close to the machine or you'll never be able to create efficient code in higher level languages. You'll never be able to work on compilers and operating systems, which are some of the best programming jobs around. You'll never be trusted to create architectures for large scale projects. I don't care how much you know about continuations and closures and exception handling: if you can't explain why while (*s++ = *t++); copies a string, or if that isn't the most natural thing in the world to you, well, you're programming based on superstition, as far as I'm concerned: a medical doctor who doesn't know basic anatomy, passing out prescriptions based on what the pharma sales babe said would work.
 
Back
Top