6 ms·
I think I figured out why good Java developers are so hard to find
- shib71 16y agoGood points. But why the quotes around the HN post title?
- ebenezer 16y agoEdited. Sorry. I didn't want to give the impression that I thought I had figured out why good Java developers are so hard to find (I didn't write the post).
- etherael 16y agoInteresting coming from a blog titled I love groovy. I take from that the guy writing it already realises the value of alternative JVM languages and is even a big fan of one, so why hold fast to pure Java? If you want to find good developers on the platform, maybe broaden your scope beyond the aspect of it you're having trouble with. I know plenty of people that use JVM languages and very few of them that wouldn't avoid using pure java if at all possible simultaneously.
- pvg 16y agoThis doesn't help as much as you might expect. To be a decent JVM-hosted language developer, you still need to be a reasonably handy Java developer, even if you aren't writing pure Java. You need to know a fair a bit about the basics of the JVM, the core Java class libraries, the Java ecosystem in general. So, a junior Java developer, which is what the author is looking for in the first place.
- etherael 16y agoPerhaps I explained my position poorly. As an example, I could qualify for this role due to my experience with Groovy and thus Java by extension, but I wouldn't be interested in it because I wouldn't be satisfied in any position where I was restricted to pure Java.
- technomancy 16y ago> I know plenty of people that use JVM languages and very few of them that wouldn't avoid using pure java if at all possible simultaneously. Probably true of Scala/Groovy, but definitely not for JRuby or Clojure. Only ~32% of Clojure developers even know Java, according to the recent community survey.
- regularfry 16y agoI'd bet that while they don't self-identify as "knowing Java," a large proportion of the other 68% would be happy trawling javadocs and getting javac (or Eclipse) to do the right thing. I would argue that's "knowing Java" well enough to get a job writing it, if they wished.
- technomancy 16y agoWell... I can read Java decently and browse javadocs just fine, but the parent was explicitly talking about writing Java, which I've never done and would probably be pretty bad at. I think this is quite common among Clojure developers.
- regularfry 16y agowriting Java, which I've never done and would probably be pretty bad at Something tells me that you could still get a job doing it, it just might not be a job you particularly wanted :-) Seriously, though, clojure devs are a funny group. Clojure isn't anybody's first language at this point, and for the majority it's probably not even their third or fourth language, so they're already selecting for people who not only can, but choose to and enjoy learning new languages which are demonstrably deeper and have more details to learn than Java. Not only that, the language was specifically designed to be easy to learn. What I've found trick with Java isn't the language, though - it's the ecosystem. Just trying to figure out which way is up in a Tomcat installation, for instance, is an absolute bear.
- bad_user 16y agoI'm not buying it. About hosting: I'm in the process of creating a startup. I've chosen Java precisely because I do not have enough money and can only afford a single EC2 or Linode instance. I cannot do too much load-balancing with my current resources. I first learned Java after seeing how PHP was limited to web development, and not doing a very good job either, at the time having to write my own framework of reusable stuff because everything sucked. About video games: that's what got me into programming. I used to do all kinds of shit in Turbo Pascal and then C++ (with the Allegro framework). TPascal was very limited, compiling for the 286-standard mode, and I had to deal with "conventional" memory, extended memory and the 64k segment limitation when allocating arrays. I also had this whole library for graphics rendering, written with inline assembly, by me. It is no wonder kids today don't appreciate the current state of the art, since they take those tools for granted. Today if I were to go back to video games as a hobby, I would choose Java. That's because I want performance without going too low-level. Pygame is nice, but just as I felt about PHP, I don't want to be limited by what the Python interpreter can do. The reason you won't find good Java developers, is the same reason you won't find good developers in general. And WTF are you thinking requesting Java experience? This I'm only expecting from incompetent HR people. In 3 months since you got that job opening you could have retrained someone and be done with it.
- deleted 16y ago[deleted]
- deleted 16y ago[deleted]
- bad_user 16y agoArticle: asked you to create a website that had some dynamic content, but they only had a $10/mo budget for hosting ME: Java hosting is actually cheaper for ME. Yeah, thanks for missing the point and judging me, you obnoxious schmuck. Here's a newsflash: not everyone is living in the US or in Western Europe and can afford EC2 hosting as a student. And here's a free tip, since you have some opinions on doing startups: you don't buy useless crap for a startup that survives on a salary or on a small loan, even if you are a spoiled brat ;)
- julsonl 16y agoJava has a huge open-source ecosystem that you could search for contributors with junior level skills. And some projects are interesting enough to warrant hobbyists to play around with them just for the heck of it. For example, I'm looking to start studying computer graphics and I'm looking into playing around with JOGL instead of getting my hands around C++ (not that C++ sucks, its just that I wanted to ease myself into it). I'm getting pulled into non-Java JVM languages though, so Java doesn't look all too promising for me as a hobby language. At the very least, you could look into somebody having Clojure or Scala skills, they'll probably have knowledge of the JVM and Java would be just easy for them to pick up.
- weaksauce 16y agoopenGL is not that hard and has bindings in most popular languages. I don't know why you would limit yourself to java to learn OpenGL when there are nicer languages to use. But the languages do the same thing so if you actually ship something you are ahead of most people out there.
- heyrhett 16y agoGood anythings are hard to find. People are always asking if anyone knows a good mechanic, accountant, lawyer, dentist...etc.
- jrockway 16y agoAnd then when they find it, they don't want to pay for it.
- rottencupcakes 16y ago90% of dentists are the best dentist.
- jrockway 16y agoThe problem is that only 10% (or something) of programmers are any good. Not 10% in each language community, but 10% overall. When you put out an open position for Java, you are attracting everyone that knows Java -- Java is big for "programming as a career" because there are lots of certifications, and it's mandatory for all college students. So that 10% isn't going to apply to Java, it's going to be 99% people looking to advance their career (read: collect money for clicking buttons in Eclipse), and 1% of people that are actually good at programming. (Honestly, my resume claims I know Java. I do. But I would not be a good fit for your position because I hate Java with a passion. Even though I might interview well and be interested in collecting your huge salary, that just means I am advancing my career, not being a good programmer. And that's what you don't want, but what the word "Java" encourages.) If you pick a less popular language keyword to search on, though, you might get better results. We added the keyword "Scala" and got a lot better resumes. Nobody learns Scala because they think it's "good for their career". They learn it because they like programming. That's who you want to hire. (Incidentally, this does make it good for your career.) I've found that this works in a variety of language communities; C++ is popular in industry, so ask for C instead. Java is popular, so ask for Scala instead. OO Perl is popular, so ask for Moose instead. This is not as good as knowing who you want to hire and just asking, but in a field with 1000s of landmines, you want to minimize your chance of blowing your leg off. Yeah, you are going to eliminate a lot of great Java programmers when you search only for Scala. But the people that you do interview are a lot more likely to be good at programming.
- vlisivka 16y ago> C++ is popular in industry, so ask for C instead. Java is popular, so ask for Scala instead. OO Perl is popular, so ask for Moose instead. Ah, you missed my favorite languages. :-) I hate programming in any 3/4GL language - lot of typing and too hard to reuse.
- jrockway 16y agoI always get this sort of reply to my hiring-related comments. Basically, I don't get to pick what open positions my department is hiring for. I can't micromanage the projects that aren't my own, but I do get to interview people for those projects. So that's what my experience is based on. Trust me, if I had my own company, I would not be looking for Java or C++ developers.
- lukeschlather 16y agoI had the idea to build a photo mosaic program rolling around in my head for a while, and was looking at a handful of languages to use for it, as a fairly recent college grad. I did look at Java, since there's a lot going for it on an abstract level. However, I looked at step one (Read in a bunch of images and scale them down so they fit in memory) and naturally blew the stack. So I was left with two choices: 1. Learn how to micromanage Java's garbage collector so it actually freed images I'm done with... 2. Use a language that manages memory directly: http://github.com/lukeschlather/ImageWeave http://github.com/lukeschlather/ImageWeave For less ambitious projects, I use PHP (if off-the-shelf solutions exist) and Python (if I need to build it.)
- thomas11 16y agoThere is no need, nor even a way, to "micromanage Java's garbage collector". Once the heap size approaches the limit, GC runs and it will free what can be freed. So as long as you design your data structures in a way so that they don't hold on to objects you don't need anymore, you should be fine. Of course, in C(++) you can design much more memory-efficient data structures through pointer arithmetic. But that's independent of GC.
- vlisivka 16y agoMicromanagement of GC is possible using Soft/Weak/Phantom references, see http://weblogs.java.net/blog/2006/05/04/understanding-weak-references http://weblogs.java.net/blog/2006/05/04/understanding-weak-r... . > Of course, in C(++) you can design much more memory-efficient data structures through pointer arithmetic. Yeah, you can reinvent the wheel in C++, C or even in ASM.
- pvg 16y agonaturally blew the stack. You mean the heap, right? The GC isn't going to help you with running out of stack. And the solution is usually to tell java to increase the default max heap limit.
- bartl 16y ago>I’ve been looking for a junior java developer with about 3 years of experience who knows java and sql. That’s it. Maybe that is the problem? Good programmers will never stick to just one tool. But if they know more than just Java, they'll expect to be paid more.
- rb2k_ 16y agoI think it's because Java is just plain and simple a boring language. Most people would agree that Java is a tad verbose and over-patternized. It doesn't do any "fancy" stuff like functional programming, it doesn't have a lot of "sexy" libraries and the community arround it is pretty much stuck in a fixed big-enterprise mindset ("I don't care that it's easier to do it with tool x or y! We can't maintain anything else but Z!") and a lot of Java developers have only experiences with Java which limits the way they try to solve problems. The worst example of this was when I had to witness a friend of mine having to code a prototype for a handheld device in Apache Struts because "that's what we know and we can enhance if you're not there". He had to basically implement most UI interactions in Javascript so it was even close to usable. If you would ask any Ruby/Python/Scala/Erlang/... developer about other languages or new technologies (noSQL databases, node.js, ...), chances are they will at least know something about it because they love their craft. Most "only Java" people I've met so far simply aren't particularly interested in anything that isn't directly related to their work. p.s. this doesn't mean that there aren't great developers that use Java, I've met some amazing people that are fluent in Java, but for them it was just "another language" that they used, not "the language".
- tkahn6 16y agoI think it's because Java is just plain and simple a boring language. I agree for the most part. I make my college programming projects fun by finding uses for the Reflections API. Check out 'invoke'. http://download.oracle.com/javase/1.4.2/docs/api/java/lang/reflect/Method.html http://download.oracle.com/javase/1.4.2/docs/api/java/lang/r...
- rb2k_ 16y agoThat's cool, but the sad part is that this is a common feature with most other languages and not just some added library. Still great that you show what's possible :) Also: does anybody know why Java core classes don't have examples in the documentation? (compare: http://ruby-doc.org/core/classes/String.html http://ruby-doc.org/core/classes/String.html )
- 16y ago
- davidnelson 16y agofunny, I was bummed python came before java on app engine. and what about gwt? that's java! who would want to write their javascript in javascript anyway ;-) and yes, I agree that the mindset of learning new things in your free time (and bonus for open sourcing work) is the way for a software engineer to stay gainfully employed. worked for me.
- discreteevent 16y agoWhy is he limiting his scope to people with only three years experience? There can only be one reason.- cost. This kind of mistitled post has been around for years. "I can't get good developers" should read "I can't get good cheap developers". To put it politely, its misinformation and I am surprised at the ranking it got here on HN.
- scrame 16y agoIf you are hiring a developer who has been working professionally for 3 years and is applying for a junior position you should not be surprised that they don't know sql.
- DjDarkman 16y agoOkay I may get bashed for this but: Java feels that it is intended to restrict the programmer, because apparently the programmer is stupid and we need to restrict him so that the programmer will not make mistakes(think mandatory exception handling as an example). Java forces it's class-y style on you. Creative people don't enjoy being locked down, they wan't freedom and expressing power like what they can get with JavaScript and jQuery and they don't want to be saved by Java.
- hga 16y agoWell, worse, it's explicitly designed to implement programs you've already designed in full (there's a Gosling quote to this effect). It might be good for that niche, but as you note it's rather restrictive in its quest for safety (although GC is fine by me) and another thing that falls out of this is that it's not so good for things that need to change. It was designed for things like set-top boxes, appliances, etc., not what we're using it for today....