What have you done for Java ?

You were given this great programming language called Java , and with it you managed to earn your pay check. The bad thing is that:
1) other languages are competing with it for the same market - and they are winning
2) a lot of new programmers are trained every year

We need to find a way to make Java very competitive and the #1 choice in developing an application. Otherwise in the following years many of us will lose their jobs.
If you do not want to end up in a situation where you start from 0 learning some new language, competing with some teenager that only wants a fifth of your pay check... do something today.

On a side note- are you trying to imply that the seniors here should stop sharing their knowledge with us? Just asking..

That is indeed mean - if 'at all' there was the slightest indication of it in your post.

I have known people who are not very willing to part with knowledge and I have also known people ( like the ones we have here ) who despite sharing knowledge with the rest of the world are able to keep up with
the pace at which technology changes and the pace at which new programmers are trained. They are UNAFFECTED by it and are greatly respected.

Chan.

Chan Ag
Bartender

Joined: Sep 06, 2012
Posts: 1051

15

posted Jul 30, 2013 01:12:14

0

Haven't most other languages that are doing well in the industry currently derived directly/indirectly from Java? In that case, wouldn't experienced Java programmers always have an edge over others?

We chose programming knowing that we are in a field where things keep changing and we need keep learning cause newer things keep coming. With time and experience, you also learn the art to adapt to technological changes and perhaps the ability to beat its pace too.

Just - my opinion....

Chan.

Myke Enriq
Ranch Hand

Joined: Feb 13, 2012
Posts: 115

posted Jul 30, 2013 02:46:04

1

Each year thousands of new programmers finish college... in each country. Maybe a million more programmers are thus created each year.

If some snob and ignorant fool of a programmer here actually believes that these new programmers are not "actual" programmers because they do not know much , let me remind you:
- each new rookie starts as a junior , then in 1 - 2 years of work he will have good enough knowledge of php to produce a cheap replica of your project for a fraction of the price
- if each year 1 million new programmers finish college , and it will take them 2 years before they will be able to do your job, then this also means that each year 1 million new people that can do your job are competing with you;

More than that , the general opinion in poor countries is that programming is easy and gets you a well payed job. Thus young people flood the computer science related universities.
Online training becomes better and better every year. Outsourcing is an ever growing phenomenon , especially in our field of work. The teachers in 3rd world countries are getting better themselves.

What more proof do you need that our pay checks on average will only go down as time passes ?

As for learning a new language , it does have a few setbacks:
- when you take a job on that new language , you will be almost a junior competing with other juniors , and those other juniors will work for much less.
- that new language will itself be replaced by some other popular one.
- your years of experience with Java will count for nothing. The corporations will get to pay you less , while you work just as much.
- you have learned Java and you have earned your living with it. Contribute something , even in a minor way, to improve this program , do not just move to the next one hoping you will adapt.

I disagree with most of what you have said so far. And what you have said so far has come across quite aggressively opinionated and ranty. I get that we're in the Meaningless Drivel forum so 'all bets are off' with respect to the normal rules but I think a bit of civility wouldn't go amiss.

But anyway, back to the discussion.

The only thing that I agree with you on, but not for the same reason, is when you say that Java developers "Otherwise in the following years many of us will lose their jobs". This is true. If we cling onto Java until the bitter end then all but a select few, who will be unlucky enough to remain to support some long serving legacy applications, will lose our jobs eventually.

The sentiment I get from your discussion is this: "I am a Java Developer. This is my domain. Get off my land!" I think you're missing the point by a mile. As a professional you should not think of yourself as a Java Developer. but rather as a Software Engineer who's current software building toolkit contains the Java programming language.

The Java programming language will decline in popularity eventually, the same as most other languages have done in the past. C, C++, Pascal, COBOL, etc. etc. Just take a look back through history and you'll see a rise in popularity followed by a plateau followed by a decline. I believe Java is currently just coming off the plateau and heading into the decline phase. As a Software Engineer I'm keeping a lookout for what languages are now on the rise that I should be learning next. Languages such as Scala, Clojure (paradigm change required for this one), Groovy, etc. etc. In order to remain relevant in our field we need to "surf the wave" of language popularity (thanks to Bob Martin for that analogy). If your toolkit only contains Java, then your career will become quite limited in the not too distant future.

You mention also that if we were to switch to learning another language then we would essentially be throwing away everything we have learned and must start again as a Junior developer. This is not true. A lot of our gained knowledge is about building software in general, designing, refactoring, testing, patterns, deploying, maintaining, procedural programming, OO programming, functional programming, none of which are tied to a particular language. These are transferrable skills.

Maneesh Godbole wrote:1)
2) As you found out in your other related topic, thats not really true

are you spying on him ?

No Kaustubh No Fun, Know Kaustubh Know Fun..

Chan Ag
Bartender

Joined: Sep 06, 2012
Posts: 1051

15

posted Jul 30, 2013 07:06:14

0

I disagree that every new engineer is that bright. And for the ones who are that bright, Java's decline is not that significant a factor as to why they'd earn a better/equivalent pay-check. They'd earn it anyway.
I've read that many new programmers are being offered ten times more than what most other programmers at an equivalent experience are drawing/being offered. Don't think the decline in Java's popularity has got much to do with it.

As to them being decent enough programmers to replace an experienced programmer, that is a phenomenon I have seen with thriving technologies too. People, regardless of their experience,
take similar/comparable time to understand a new application/project/requirement/system, and skill-building to cater to a requirement must take a finite time. Often a subset of what you know is applicable in the field.
Organizations need a mix of people within a budget. So this is something everybody has to deal with at some time or the other.

Yes, there are many who are trained every year and yes the intelligence level, in general, of new students/engineers has increased. But it takes experience to understand systems, and build them.
Every engineer, regardless of his experience, needs to keep learning.

Last, I believe opinions are also greatly affected by our personal biases, and other subjective factors.

Chan Ag wrote:I disagree that every new engineer is that bright. And for the ones who are that bright, Java's decline is not that significant a factor as to why they'd earn a better/equivalent pay-check. They'd earn it anyway.

Well, the ones that will succeed are bright, because that is a requirement for success in this career. Its not a job. You don't go to university and learn a trade, and get a job that you keep for the next 45 years. If you want a job that you can keep for life with ever increasing salary, go into some other field. Computer Science doesn't work that way.

The Apple iPhone is only six years old (The first generation iPhone was released on June 29, 2007;). It has totally redefined computing for most people on the planet. Its given a computer and internet access to billions of people who never used a computer before, and most had never considered that a computer would be important in their lives. Compared to the initial iPhone, modern phones like the Galaxy S4 or HTC One are from another universe, they are improved so much.

Its guarenteed that if you are using Java in ten years, you won't be using it the way you do today. Ten years ago, people thought that Swing, AWT and J2EE were useful.

@Myke I find the fundamental assumptions of your initial post to be ungrounded. It comes across as a rant, and not a topic for discussion. This is a friendly place. I think you should rethink your approach.

It's probably true that a lot of new "Java programmers" are being churned out every year, but from what I've seen only some of these are any good or interested in going beyond Java. Which is good news for the rest of us.

In any case, I'm not really interested in making "Java competitive and the #1 choice in developing an application". I don't work for Oracle and I don't owe them a living, so I'm not interested in promoting Java where it's not appropriate, and I've seen several projects crippled by choosing the wrong technology - including Java - for their needs, based on ideology or fashions. Java has its merits, but so do other technologies, including the new JVM-based languages.

So if Java is losing out to other languages, then that means more opportunities for those of us who are prepared to learn new stuff.

FWIW, I've already been through the process of being unable to find work because I stayed too long in a particular shrinking niche, and I'm sure as hell not doing that again. Right now I'm refreshing my Java skills, because it's my least-worst option for breaking back into the job market around here and I have bills to pay. But I'm aiming to move beyond Java programming at the earliest opportunity, because to be perfectly honest, Java bores the pants off me and given the choice I'd much rather be doing more interesting work with a more modern and productive language.

YMMV of course, so if you want to stay with Java come hell or high water, good luck to you.

vishal saha
Ranch Hand

Joined: Jul 27, 2013
Posts: 30

posted Jul 30, 2013 11:39:57

0

chris webster wrote:YMMV of course, so if you want to stay with Java come hell or high water, good luck to you.

Hussein Baghdadi wrote:If all what some one knows is Java then learning JS, PHP or Python isn't going to expand his/her horizon.

I strongly disagree with this statement. Sure, these three are far more similar to Java (or C++) than Haskel, Scala, Lisp, etc., so your suggestions will expand his/her horizon a lot farther than my three will. But the first thing that a professional software developer must do is understand that knowing one language is not enough, and that learning another one is simply not that hard.

This thread is really about jobs for software developers and tools they use. There are lots of jobs today for Ruby and Ruby on Rails developers. There are far fewer for Scala, Lisp or Erlang, today. Lisp is an ancient language, it has stayed in the lists because it does cool stuff and encourages a radically different view of how to approach problems, but it has never been a mainline professional development language. I don't expect Lisp to ever have the widespread usage of a Java, C#, or PHP.

By all means, seriously learn @Hussein's languages as well, they are important, but I would put them lower on the priority list, and would not pick any as a second language.

Personally, learning Clojure and Haskell expanded my horizon to degrees I never imagined.

Myke Enriq
Ranch Hand

Joined: Feb 13, 2012
Posts: 115

posted Jul 31, 2013 02:27:42

0

It seems to me like most of you just learn Java , do not intend to contribute anything to it, and when it becomes challenged by other languages , you just move to the next one.

And you believe this makes you better programmers. It is kind of a sad joke though , you have the option to contribute and to improve java , yet you sit on your butts and wait for someone else to work hard to code the next language. It is not sad because you are lazy , or because you do not want to improve the world you are living in.

It is sad because you are not thinking about your future lowered pay check. It is sad because you do not have an efficient plan of where you want to be in 5 years. It is sad because you saw the USA high wage programmers being fired , and their jobs moved to Asia , and you believe that if you yourself live in Asia or some other poor part of the world , the corporations will still give you a pay check in the future.

If you can afford to work for half (even less) the pay at some point in the future , well I can not. Or at least I am trying to predict that future and plan to do the most out of it.
So if you are mature enough to have actually though about this issue before , please post some solutions if you found some.

Otherwise keep posting optimist but non realistic phantasies like "a programmer that only knows Java is a carpenter that only knows how to use a hammer". Keep lying to yourselves and see where that gets you. Because the lay offs and the pay cuts are coming , no matter how much you wish otherwise.

Ulf Dittmer
Rancher

Joined: Mar 22, 2005
Posts: 42954

73

posted Jul 31, 2013 03:01:38

4

I know you're just trolling, but if you think that by merely improving Java and its ecosystem you'll have a Java job forever then you're just setting yourself up for failure. Which, ironically, is exactly what you're trying to avoid if I understand the gist of your posts correctly.

While I have no idea what is supposed to be unrealistic about being proficient at several languages -I know many more developers that are proficient in more than one language than I do know developers than only know and use a single one- it is of course your prerogative to believe so. Luckily, there's an easy way to find out: just wait for 20 years, and let's see who has had a good career, and who hasn't.

@Myke
Please feel free to contribute to Java platform and make it the #1 programming language in the universe. No one is holding you from doing that.
Here is the source code: http://hg.openjdk.java.net/jdk8/jdk8

Ulf Dittmer wrote: While I have no idea what is supposed to be unrealistic about being proficient at several languages -I know many more developers that are proficient in more than one language than I do know developers than only know and use a single one- it is of course your prerogative to believe so. Luckily, there's an easy way to find out: just wait for 20 years, and let's see who has had a good career, and who hasn't.

Agreed. What's unrealistic about being proficient at several languages? It is not like a natural language, where there are thousands of words to memorize. It's a dozen keywords (which most are similar). It is a language syntax. It is a library (which most are similar). The hard part is probably memorizing the "best practices", so that you can deal with the quirks of the language, and be able to communicate well with your fellow developers.

Technology has always been about change. Adapt or die. I had this debate 20 years ago. And obviously, it is still happening today. Most of the developers who embrace the change are still around (well, the ones who retired due to the dot com boom are currently laying on the beach somewhere). And the ones who couldn't embrace change are no longer developers -- interesting, most of them are doing really well (in their new roles), with a couple being CxOs, but I digress.

Agreed. What's unrealistic about being proficient at several languages? It is not like a natural language, where there are thousands of words to memorize. It's a dozen keywords (which most are similar). It is a language syntax. It is a library (which most are similar). The hard part is probably memorizing the "best practices", so that you can deal with the quirks of the language, and be able to communicate well with your fellow developers.

Yes, mostly, unless there is a significant differrence in the language's syntax. It's easy to move between C, C++, Java, Javascript. But going from Java to Scala is a much bigger change. Scala looks completely alien. I've worked JAva for almost 12 years, and in C++ for 6 years, and it was a easy shift to go from C++ to Java. I wrote a Scala program a year ago, and I swear I cannot read my own program now. The syntax is so completely alien that it requires a lot of brain to just parse each sentence.

It's like going from English to French is simple. It's a differrent grammar, and new words, but because the roots of the both language are close and the script is very similar, it's easy to make the switch. OTH, going from Java to Scala (atleast to me) is like going from English to Hindi. It takes a lot of effort to simply work out what each word sounds like.

Jayesh A Lalwani wrote: It's easy to move between C, C++, Java, Javascript. But going from Java to Scala is a much bigger change.

Actually, I found that going to JavaScript was a huge change. JavaScript is much more "functional" that Java or C++. I think programming in Javascript using Java style is both (1) bad JS and (2) missing the power of JS.

Myke Enriq wrote:It seems to me like most of you just learn Java , do not intend to contribute anything to it

Your post is so full of fallacies that it makes the head spin, but I'll respond to a few of the points that actually seem to try and make a point.

As to the above ad hominem fallacy, lot's of people here have "contributed". Your claiming that we have not does not make it so. I've written many articles promoting ways to do things better with Java, I've written a front controller framework that makes it easier to create Java web apps, and I've answered countless questions here promoting Java -- seen my post count lately? My thumbs count? Cows? So don't go around falsely accusing people of "not contributing".

Even just helping people here on the Ranch to learn to write Java better is a major form of contributing for all members that answer questions on the Ranch, including those that have been posting in this topic.

and when it becomes challenged by other languages , you just move to the next one.

You keep saying "one" -- as if there can be only one true language. This is not Highlander; there are many languages that are useful and can be used to get the job done.

I use many languages and tools on a daily basis to get my job done; Java is just one of them. You seem to be treating Java like a religion, not like a tool. "Java is the One True Language and Thou Shall Hast No Other False Languages Before Me".

Hogwash. It's just a tool, and it's just one of many tools on our tool belts. Blasphemy and eternal damnation are not a consequence of using something other than Java for what it's not the best tool for.

And you believe this makes you better programmers.

We know it makes us better programmers. I've been doing this 35 years. I've seen languages come and go; I know many languages. Knowing them all makes me a better developer.

you have the option to contribute and to improve java , yet you sit on your butts

This ad hominem fallacy has been proved incorrect above.

because you do not want to improve the world you are living in.

By the way, there's more to the world than programming. How do you know how the other members here contribute to improving the world around them?

It is sad because you are not thinking about your future lowered pay check.

False cause and slippery slope fallacy. Even if Java were to disappear from the face of the Earth today, I can assure that I would suffer no lowered paycheck. Neither would any of the other senior members here who have been responding.

It is sad because you do not have an efficient plan of where you want to be in 5 years.

Please provide the data you have used to determine that you know what my 5-year plan is. Or Ulf's. Or Pat's.

If you can afford to work for half (even less) the pay at some point in the future , well I can not.

In that case I would highly recommend you take the advice of the senior members here who have been urging you to remove your blinders and expand your horizons beyond Java.

So if you are mature enough to have actually though about this issue before , please post some solutions if you found some.

We already have. Diversify. Learn new things. Be prepared for positions that require expertise beyond just Java.

non realistic phantasies like "a programmer that only knows Java is a carpenter that only knows how to use a hammer".

That is a very realistic phrase. If you call yourself a developer, and all you can write is Java, then you are just like a carpenter who wields one tool.

Keep lying to yourselves and see where that gets you.

Ignoring the fallacy of claiming that we are lying, it has gotten me a good-paying job, doing interesting work, acclaim and respect within the developer community, 5 books in print, and a fairly comfortable life. Not sure I'm seeing the problem.

Because the lay offs and the pay cuts are coming , no matter how much you wish otherwise.

A false cause fallacy. The rise of new tools in no way presages layoffs and pay cuts, except of course, for those that have buried their heads in the sand and assume that they are going to make a career out of a single language or technology. If I started counting all the professional languages and technologies that I have used in my professional life, I'd quickly run out of fingers and toes.

And by the way, been there done that. It happens in cycles. It has nothing to do with the rise and fall of languages, and nothing at all to do with worship of Java as The One Language to Rule Them All.

Don't get me wrong; I like Java just fine for what it is. I just have enough experience and perspective to realize that it's just a handy tool, and not one that solves all problems.

Myke, if you really want to become a better programmer, and perhaps even contribute to programming language design - for Java or any other language - you need to know more than one programming language. You can't call yourself a serious "linguist" if the only language you know is English, and you really shouldn't call yourself a serious programmer if the only programming language you know is Java or the only programming approach you know is OO. Even in the Java ghetto, there are lots of changes coming along in the near future, many of which have their origins in other languages - closures/lambdas for example, which come from the functional languages (and ultimately from the lambda calculus). If you want to be able to use these new ideas intelligently in Java, you should at least try to familiarise yourself with how they work in other languages too. Otherwise you're just like the stereotypical English guy hoping to communicate with the rest of the world simply by shouting louder in English.

If your'e interested in going beyond Java and the familiar OO paradigm, try the free online course from Coursera on Programming Languages presented by Prof. Dan Grossman of the University of Washington. This outstanding course runs again in October and will really open your mind to new ideas and hopefully help to prepare you for future developments instead of finding yourself marooned in Java legacy maintenance for the rest of your career.

Myke Enriq wrote:If you can afford to work for half (even less) the pay at some point in the future ...

I am working for half my previous pay right now. And it's primarily because for various reasons I found myself trapped in a shrinking niche in a market that had changed so far that many of my skills and experience were no longer sufficiently marketable to sustain my earlier income. If you think that sticking with Java will protect you, think again, because this industry changes too fast for anybody to last long as a one-trick pony.

Pat Farrell wrote: Actually, I found that going to JavaScript was a huge change. JavaScript is much more "functional" that Java or C++. I think programming in Javascript using Java style is both (1) bad JS and (2) missing the power of JS.

Agreed. Despite the similar name, I also found JS to be pretty different from Java. Maybe it was because the project used jquery, which is pretty unique (in a good way). Maybe it was because I was porting XSLT (and of course, lots of XML), so that was pretty unique (in a bad way). Perhaps raw JS is very similar to Java. I guess I won't know yet, as I moved on from that project -- maybe I'll take another JS project in the future...

But back to the debate...

Myke Enriq wrote:when it becomes challenged by other languages , you just move to the next one.

Most of the professional programmers here (speculating as I can't speak for everyone else) are not concerned about languages being "challenged by other languages"; nor are we "moving to the next one". We work on projects, and we work with multiple languages because it's the project requirement (for many very large environment/systems). In my case, I am *not* switching languages every few years, actually, in some cases I am switching languages every day. For example, this week I am investigating stuff coded in C and Java. Last week, it was C#.... once, many years ago, I had to connect Java to a .NET library -- and wound up working in Java, C#, and some managed C++ -- switching languages every hour or so. Now, admittedly, that was bad. I think my English skills degraded after that project...

Anyway, to repeat, what's wrong with switching languages? I think it is fun. It is certainly not boring...

Thanks for the humor Myke. It is a long time since I have laughed this hard.

Myke Enriq wrote:- if each year 1 million new programmers finish college , and it will take them 2 years before they will be able to do your job, then this also means that each year 1 million new people that can do your job are competing with you;

They are all competing for my job? If I am the only person with a programming job left in the world that everybody is competing for, then I need a pay raise! Or a holiday!