Why, "good" doctors, advocates, coaches, consultants are very good at telling to clients what they want to hear. "Bad" consultants are trying to "tell the truth" (at least as they perceive it) and this, especially in cases of doctors and advocates, newer do them any good.
Telling that Java is a wonderful thing (safe, mature and standard, so no one would blame you) would make you a "good" consultant. Telling that it is mere "piles upon piles of crap" wrapped in tons of BS (written by "good" experts) would never give you any good. I have tried.
There are SAP consultants also. These are just salesmen on commission. All lies and manipulations are good as long as it help to sell.
Your Java example seriously undermine your point -- you have set up a world where you have an opinion, and thus your opinion is the "truth", and people who believe otherwise are being fooled by liars.
There is an opinion, shared by many marginals (Rob Pike, PG, Joe Armstrong, you name them) that Java, as they put it to remain polite and socially correct, has lots of serious issues, or, in my own wording - the biggest scam in the history of IT business (in terms of waste of paper, human and hardware resources) and the consequences are still to come.
But you are right, my example is a little bit irrelevant. SAP would be better one.
> In that regard it has been fantastically successful.
It allows median programmers to work for years on large systems, yes, and usually to maintain them as well. That indeed has been my experience.
However, in my experience, it is not those median programmers that actually built those systems, and wouldn't have been able to. Much better skilled individuals did.
In my experience, large systems built by mostly median programmers tend to fail (or never even reach production status), regardless of the implementation language. Which is to be expected, since system complexity is often inherent. However, it seems like the idea that "all programmers are just replaceable cogs" and thus that's not the case is way more prevalent around Java (and to some extent .net) than around other ecosystems.
Java has been fantastically successful in the sense of keeping armies of programmers employed maintaining large systems, and at keeping those systems running. Personally, I suspect that most of those cases could have been fantastically more successful if they didn't use the "replaceable cog" model that for many projects is Java's core feature - but of course I cannot offer any proof.
Like in any religion, when enough people believe in a dogma it become a "truth".
In my opinion, Java's "success" is a like a "religion". It is relatively easy to make money on "believers".
Nevertheless, facts are that in telecoms we have "success" of Erlang, in Android we have "success" of NDK, on server side there is everything mixed, and if someone would collect statistics of failed projects and project went hugely over time and budgets Java would be on the first place. And here, in my opinion, it would be a more of causation, not mere correlation.
Even so I share your opinion about Java as a language I don't think it is a bad choice if you take the market into account, like how many Java developers there are, etc.
If Java is the biggest scam in IT, I'd really like to hear what would you recommend over Java for a typical business applications that could be found in any enterprise?
The very mindset that "typical business applications that could be found in any enterprise" require some very special tools is one of the consequences.
Seriously, nowadays tools are so good, that you could really write in any popular language you like (in fact - in a few at once, depending of which one fits better for a sub-task).
The internet services, for some reasons, are not (mostly not) implemented in Java. This site, for example, is powered by author's very own dialect of Lisp. Slashdot has been written in Perl, Reddit is mostly Python.
The real problem is still software complexity and lack of programming/engineering (not coding) skills. Problem is with modeling and [de]composition, not with coding. Coders are cheap.
The business of [outsourced] Java sweatshops of unskilled coders "getting shit done" by quickly picking up methods out of IDE's context help without any understanding of underlying principles is like a whole sector of economy. Products they made in the most cases are exactly what they themselves call it - "shit done in exchange of salary".
I've had a consultancy staff a large project with "senior Java developers" that we threw out the day they arrived on site because they couldn't pass a trivial coding test. This went on for a while until the consultancy became irate. While it might be nice to blame this on Java, I'm certain that if the leading enterprise language was ADA, we'd see ton's of marginally talented ADA developers being staffed. Whatever the dominant language is, you'll see a stark talent bell curve emerge around it.Think about it, if you can get a six figure salary by saying you know something, folks will say they know whatever it takes to get the job.
On the other hand, a lot of the stuff at Google is Java. Also, I can't imagine writing a reliable 1m lines of code system (say for a bank) in Lisp (or any other dynamic language for that matter).
They also do some Common Lisp on the airline search division.
btw, Common Lisp is a "strong typed" language, and many large enough code-bases were here. Lisp machine ecosystem is a good example.
A lot of banking software has been written in 4GL and stored procedures (SQL). When Oracle stuffed its products with Java it was not necessarily an improvement, rather things became more difficult and messy than before.
I'm not sure how widely Go is being chosen (over say Java) for new projects inside Google. Maybe some Googler could clue us in?
> btw, Common Lisp is a "strong typed" language,
Can you point me to a code example? The ones I did find didn't have any type information in them.
> A lot of banking software has been written in 4GL and stored procedures (SQL). When Oracle stuffed its products with Java it was not necessarily an improvement, rather things became more difficult and messy than before.
Banking was just an example, and I'm sure they are plenty horror stories there involving Java (esp. when used in some awkward way).
What I wanted to say is that IMO the effort to build and maintain large code base in for example Python would typically be much greater than in Java. For small code bases, I'm not sure who wins - the development phase will obviously be faster in Python (which is the only thing that matters for startups - hence python/ruby/... popularity here), but maintenance will still be a pain - after the initial devs leave, hires will need to learn that Python codebase, and lack of type information will make it harder.
A lot of those applications are the "bullshit jobs" of software, ie they are not actually needed. Many only exist because of insisting on only minor changes to existing processes. Many should be contracted out as services as they do not add value and differentiation. There is some stuff left of course.
Telling that Java is a wonderful thing (safe, mature and standard, so no one would blame you) would make you a "good" consultant. Telling that it is mere "piles upon piles of crap" wrapped in tons of BS (written by "good" experts) would never give you any good. I have tried.
There are SAP consultants also. These are just salesmen on commission. All lies and manipulations are good as long as it help to sell.