Decaflon

Welcome to Decaflon! Where the geeks hang out: Signup or Login Here
Decaflon is proudly hosted by (mt) Media Temple.  We recommend them for your web hosting needs.
Clips: Popular Clips Upcoming Clips Notes: All Notes

I'm looking at job listings. I'm looking all over the place.

It seems like there are a lot of companies wanting Java developers. I would click the ads, to find out exactly what they need them for, but I'm actually confident in my supposition that they want Java developers to do in Java would could be done much more easily, and much more productively in another language, like the one's I have skills in.

However, I've had a hard enough time with corporate entities trying to share with them the more productive ways to develop software and web applications, only to waste time.

I'm not ruling out however, the idea that there's still something I'm missing. So I turn the floor open to you guys:

What's the whoop about Java, any reason I should add it to the utility belt?

Depends on what type of developer you want to be. Not many shops use J2EE for their web apps unless they're big companies or have some intense architectures, so if you learned J2EE you'd probably be doing some bigtime projects, not the kiddy stuff.

On the other hand, if you learned normal Java for writing desktop apps, you'd be writing desktop software (obviously) but a lot less efficiently than if you knew C or other high-level languages.

FYI: I know Java but haven't written it in a few years, same with J2EE stuff.

Java is an excellent classroom language. It has fairly good ideas about classes, inheritance, polymorphism, abstraction and even generics. Those are all things you get a fairly skewed perspective about from a language like PHP. That's what makes Java a very popular language being taught at universities.

C# (one of MS's .net languages) is very much like it. There are a few different keywords and the package structure is quite different but the syntax and ideas are all the same gag. By learning Java to a fairly high standard, writing C# should seem like a walk in the park.

You also get familiar with the C syntax which means Java can be a perfect gateway to something like C++ too.

How is that relevant? Because between Java and .net, you account for a massive proportion of the technology jobs

Don't be mistaken, these companies are already fully aware that they may be more productive in other languages. The issue is that it is too costly for most companies to port existing technologies to new languages due to the large amounts of time and money already invested in Java.

Honestly, I haven't come across many companies that still use Java because it is the best solution; it just isn't feasible to switch either financially or in regards to the time. Some of these companies may have libraries that would take multiple years and millions of dollars to port.

Not only that but there's the retraining and potentially rehiring of Java developers they have. A "more productive" language is only that when your developers know how to use it.

The way I look at it; Learn Java if you want to be a cog in the machine.
Learn something else if you want to be a developer churning out quality and ground-breaking programs.

Java's (typically) used by behemoths who have "mission statements" for every project, right down to getting the boss's coffee, and still use SDLC paradigms. If that floats your boat, jump right in - there's plenty of class instantiations before you get to Ruby's boat.new.float.

Huh. And on that note; Supply and Demand in Technology Skills comes up talking about looking into technologies with a low supply but high demand. Java and .NET programmers being an Indian Rupee a dozen.

@phantomdata
The whole out-sourcing thing is irrelevant. Any companies who want quality goods aren't going to out-source (and I wouldn't want to work for any companies that do).

Everyone should learn C/C++ which will always be useful. Java is useful now but I don't expect it to be around in 3-5 years with the exception of large corporations with legacy systems. C#/.NET is growing at a large rate. Knowing a combination of these technologies should ensure that there's always plenty of jobs you're capable of. Learning less common languages (PHP, Ruby, Python, etc) is useful as well, but I wouldn't depend on them.

If you want a place to start, there's always Indeed Trends or the Tiobe Index. What matters in the end though is what will make you happiest? You might be able to get a language in a language people consider fun, like Ruby or Python, but there will be less jobs and possibly less cash on the table. The Java/.NET jobs seem to be at the top of the payscale, and with the most jobs available. That doesn't mean it'll make you happiest of course, but it's certainly something to consider. Try out Indeed's salary estimation and job search (which searches a collection of job sites) and see what it turns up.

What I do, and pretty much everyone else at my workplace, is program in java at work, but learn about and use other things at home. For people to say there isn't current software being written in Java is just ridiculous though. Java 6 was only recently released! There are some amazing tools out there in the Java world too that make programming fun, more than for any other language by far (IBM rational software with code generation comes to mind). I think a lot of the evil shadow that the Ruby world casts on Java is based on BAD java practices too. Meaning a lot of the rumors of terrible java systems are really just terribly designed java systems. You don't get that problem with something like Rails because design is already part of it. Even still Ruby does give you everything you need all in one place, so it's a hard comparison to make.

One advantage of java is how well it plays with other languages. I'm a ColdFusion/Flex guy, and you can work with them natively in both.

In the end though it really really really does depend on where you want to work. I don't see many (any?) fortune 500 companies running main sites in Rails or Python, but yet 75 out of the top 100 use ColdFusion (yeah, the language that gets no credit). I'm sure a lot of those may use rails for intranets or internal sites, so there's still some jobs, just less. If you're wanting to work for those 500, learn Java (or C#, either is good). If you're wanting to work for a smaller company or a developing company, the others are good. It really depends on what you want to do.

Disclaimer: I don't mean to say if you learn java/.net you'll work at a big company and make more; or if you learn the others you'll make less. If you're an amazing programmer you can pretty much name your price and have people competing for you. :)

If you are a good programmer, then the language/syntax you use is largely irrelevant as the concepts are largely transferable. I program in more languages than I care to think about and learning a new one generally takes a week or two. Switching gears from one to the other often takes me an hour or two (for quick things) and a few days when the task is complicated or needs to be extremely efficient. I have a large library of reference books and tend to work with a few open on my desk. Nevertheless, it is the fundamentals of C/C++ that I tend to draw on. The only exception that I've found is that it often takes me a month to really learn a GUI toolkit or a heavy library.

However, I've had a hard enough time with corporate entities trying to share with them the more productive ways to develop software and web applications, only to waste time.

Note that you need to be either a pretty senior person or formally well educated before any "corporate entity" will actually value your opinion. From what you write, it sounds like you are looking at some relatively junior programming positions where the job is to implement a given design. Turnover at these types of jobs is quite high which is why they prefer applicants be familiar with their chosen programming language.

Mary

@Adamfortuna

There are some amazing tools out there in the Java world too that make programming fun, more than for any other language by far (IBM rational software with code generation comes to mind).

"Amazing" and "fun" should never be used in the same sentence with Rational Software. The only thing that should ever be associated with Rational is a suicide hotline.

Did you mean Java the language, Java the plattform or Java the ecosphere?

There are Java frameworks which are not that bad, see Seam for example.

And you could start by using Grails, which falls at least in the same category as Rails for example, and Groovy is a nice dynamic language
(although some people might not like the brackets).

@posure; The whole outsourcing thing is totally relevant precisely because companies don't care about quality code. Take my recent Dell Vista Express Upgrade that took four to five months to develop. One of the very first things it did was bomb out after a forced BIOS flash. I don't think a basic upgrade-prepper bombing out on hardware that /your company/ built is considered "quality".

I do agree with AdamFortuna. If you want to work for a Fortune 500 you need to know COBOL, Java, ColdFusion and Table-Based HTML design. The question is, do you want to work with an archaic system or do you want to work with something that will help you get what you want done faster, cleaner and more easily maintained? Do you want to be a cog in the corporate wheel or do you want to go out into the world and change it?

Either way, don't take our words for it. Learn a bit of it. Sun's got some good(?) docs on Java that'll hold your hand through the beginning stages.

Also, please don't misinterpret that I'm saying "you shouldn't learn the fundamentals". I don't agree that Java is a fundamental. Learning something like C, ASM or C++ will do worlds to opening your eyes to what's going on inside the machine.

@phantomdata:

"[...] cleaner and more easily maintained?"

Could you cite a study for that? I'm searching for a study about maintenance of > 500KLOC applications comparing the maintenance effort for static reference and dynamic reference, static object type and dynamic object type languages. I'm not aware of such studies.

(Java being a static/static language, Python being a dynamic/static language and Ruby perhaps a dynamic/dynamic language)

"If you want to work for a Fortune 500 you need to know COBOL, Java, ColdFusion and Table-Based HTML design[...]Do you want to be a cog in the corporate wheel or do you want to go out into the world and change it? "

That's a rather cynical view; whilst there will inevitably be legacy systems in use, you'd be surprised at some of the technology and work that is at play in the commercial world. Companies that fail to adapt and evolve will find themselves falling behind to competitors.

"Learning something like C, ASM or C++ will do worlds to opening your eyes to what's going on inside the machine."

10-15 years ago maybe... nowadays, the value and benefit of doing so are extremely marginal both in terms of knowledge and application.

"If you are a good programmer, then the language/syntax you use is largely irrelevant as the concepts are largely transferable. I program in more languages than I care to think about and learning a new one generally takes a week or two"

Whilst to a certain degree that's true, there is more to languages than the mere syntactic sugar. Not only are the paradigm shifts between various languages are significant but a great deal of the detail and investment is in the framework and architecture.

@Mary:

"If you are a good programmer, then the language/syntax you use is largely irrelevant as the concepts are largely transferable."

Exactly, totally agree. Another thing to keep in mind is they may say "Java experience" because they want to know that you have programming experience that goes beyond scripting languages (JS, PHP, etc., oh I'm gonna get burned on that one!) and can think in an OO manner.

If you don't know C or Java or another high-level programming language, I'd suggest getting into one of them just for the experience. Java started me out in my programming "career" and even though I code in PHP/JS now and haven't touched Java in at least 3 years, it got me on the right path and helped a ton.

Please Login To Leave A Comment

Decaflon Sponsors Get in touch if you want in.

Hot Notes (View all »)

 

Decaflon is part of the Chawlk Network of sites.

9 Great Places To Visit, Hang Out, & Meet New People

What's new and interesting at other Chawlk Network sites: