Slashdot Mirror


Only 32% of Java developers really know Java

prostoalex writes "Research firm Gartner draws attention to the fact that less than a third of people who put Java on their resume actually know their stuff. The knowledge gap between someone who can successfully write a System.out.println() and someone capable of designing and implementing a complex Java system brings to companies being back-logged with pending projects."

220 comments

  1. How shocking... by davegaramond · · Score: 4, Insightful

    How shocking this news is to me, because it confirmed a survey report I just read yesterday: that 68,015% people lie in their resumes!

    1. Re:How shocking... by mystran · · Score: 1
      Add to that the fact that most people that claim know how to program don't know a shit, and you start wondering how they came up with such a HIGH percentage.

      Now, there's a reason of ofcourse, and reading the article explains it quite well: if they accepted any lower percentage (so as to come closer with reality) they'd have to accept that the products advertised in the "article" have awfully low possible market-shares. But then again, the people who ACTUALLY knew their stuff won't need those projects anyway.

      --
      Software should be free as in speech, but if we also get some free beer, all the better.
    2. Re:How shocking... by Anonymous Coward · · Score: 0

      Impressive, that's even more than 100%!

  2. They all know Java by davegaramond · · Score: 4, Funny

    Actually, the report is wrong. They just don't read the resumes carefully. The other 68% actually know *Javanese* Java, not Sun Java.

    1. Re:They all know Java by TheLink · · Score: 1

      Nah. It seems more likely that those 68% know *coffee* java...

      Working knowledge of java? Sure. Enterprise java beans? Of course - the company they last worked for probably had nice grinders for those too.

      --
  3. Only 0% of editors proofread their articles. by Anonymous Coward · · Score: 5, Funny

    "The knowledge gap between someone who can successfully write a System.out.println() and someone capable of designing and implementing a complex Java system brings to companies being back-logged with pending projects."

    We also would have accepted: Only 26% of submitters to Slashdot can create proper sentences.

    1. Re:Only 0% of editors proofread their articles. by saden1 · · Score: 3, Interesting

      Was I the only one that got the feeling that they were trying to sell me OptimalJ? Although I agree with the lack of "skilled" Java develoeprs I really can't their numbers seriously as they are quite lacking in the credibility department.

      --

      -----
      One is born into aristocracy, but mediocrity can only be achieved through hard work.
    2. Re:Only 0% of editors proofread their articles. by mrlpz · · Score: 3, Insightful

      I agree, I have stopped taking the Gartner group seriously because too many of their reports in the past are highly skewed, and wreak of funding from some party interested in the "findings" leaning in their favor.

      And as for the sales pitch, you could almost tell it was coming from the moment they brought up Compuware.

    3. Re:Only 0% of editors proofread their articles. by Anonymous Coward · · Score: 0

      Also, only 14% of web-based article authors understand the concept of the paragraph.

    4. Re:Only 0% of editors proofread their articles. by Anonymous Coward · · Score: 0

      The Gartner report is about coding skills, right? Not architecture modeling (i.e. UML) skills, which is an entirely different thing.
      I can pretty much f**k up any decent UML model with bad code and, honestly!

    5. Re:Only 0% of editors proofread their articles. by j_rhoden · · Score: 1

      I had to use OptimalJ in one of my college classes, and I have to say that I didn't really like it all that much.

  4. In other news... by sepluv · · Score: 4, Funny
    Researchers suggest that "less than a third of people who put something on their resume know anything about it". News at 11...

    Also "99% of researchers and statisticians have no idea what they are talking about and don't know what research means"

    --
    Joe Llywelyn Griffith Blakesley
    [This post is in the public domain (copyright-free) unless otherwise stated]
  5. Sad but true (in my case, at least) by FricassedMonkey · · Score: 3, Informative

    It really is sad.. I've been dealing with Java for years, and I know that I couldn't bring myself to bother messing with a 'complex' project... Of course, I'm not going to be putting 'Java' on my resume anytime soon, either...

  6. Not at all suprised by smari · · Score: 5, Interesting

    Java was the popular thing of it's time. If you didn't know it at the apogee of the internet bubble, you didn't get a job in the computer idustry; it's a lot easier to say that you know it, and hope that you never have to use it. I for one hope that I don't have to write Java code again...

    Now things are pointing similarly towards C# and .NET - buzzwords rule the market from the big business' point of view.

    However, those who really know their stuff normally stick to the older languages... hype is good in some ways, but in the grand scheme of things, it's the older, better stuff that will prevail.

    1. Re:Not at all suprised by krymsin01 · · Score: 2, Insightful

      So true, that's why most people walk where they want to go, actually write letters, and live only off what the land provides for them.

      --
      stuff
    2. Re:Not at all suprised by pfraser · · Score: 3, Funny

      hype is good in some ways, but in the grand scheme of things, it's the older, better stuff that will prevail.

      Yes, just like MS-DOS has prevailed...

    3. Re:Not at all suprised by mrlpz · · Score: 1

      don't be a clown....you have no idea how much "DOS"(or slight derivatives of it) is still VERY much in use around you...every single minute of every single day. Get real....just because M$ spends more money in advertising .NET, or Sun in Java, doesn't mean that older technologies aren't still very much in use.

    4. Re:Not at all suprised by Anonymous Coward · · Score: 0

      hype is good in some ways, but in the grand scheme of things, it's the older, better stuff that will prevail.

      So when are people finally going to abandon C++ in favour of the older, better language Lisp?

    5. Re:Not at all suprised by 4of12 · · Score: 4, Insightful

      those who really know their stuff

      More than buzzword compliant resumes, I've been more interested in people who could show me nice looking code and explain it intelligently to an audience that includes people with varying levels of expertise.

      I figure that anyone sharp enough to have picked up one language and set of libraries and used it well can just as well do it again.

      That said, I can see the temptation to use stupid HR tactics to try to screen out smokeblowers. Problem is that it's difficult to devise a system that simple, where a non-expert in HR can turn a crank and cull the dolts from the field with perfect accuracy (it's like defending against spam). You're likely to let posers through the gates (false positives) and cull out an occassional gem that looks unpolished (false negative).

      There's a good reason people resort to informal social networks for recruiting (that is, asking around if anyone knows anyone that's good and looking for a new position) - it's because the crank turning procedures are so unsatisfying.

      --
      "Provided by the management for your protection."
    6. Re:Not at all suprised by Anonymous Coward · · Score: 0

      Well, if for some strange reason you consider MS-DOS a programming language (I don't understand how you could) than you could say the language is still around.

      Start --> Accessories --> Command Prompt

    7. Re:Not at all suprised by Anonymous Coward · · Score: 0

      the older stuff that keeps on giving us buffer overrun exploits?

      Lets face it, theres no reason to write almost anything in c these days. Its slow to write, difficult to debug, and is host/os centric.

      C++ is better, but i've been working as a professional programmer & systems designer for about 15 years, and have only ever met a handful of c++ programmers who _really_ know what they are doing. Basically its just too hard for most people who attempt to write it.

      Java may not be the ultimate language, but it has a hell of a lot going for it. Its pretty quick too, in case you C zealots didn't bother looking...

      The older stuff is not better. You might give it more kudos in your c scripting clubs, but thats up to you....

      I used to write realtime 68k for a job, now i design global financial systems, and I've done c,c++, python, perl, and java in between, so i've got an idea about what i'm talking about.

    8. Re:Not at all suprised by aled · · Score: 1

      You know, the reverse is also true; marketing doesn't mean the technologies aren't good.

      --

      "I think this line is mostly filler"
    9. Re:Not at all suprised by aled · · Score: 1

      You know, people also lie in their resume about older languages...

      I just hope I don't have to see a C++ template again in my life.

      --

      "I think this line is mostly filler"
    10. Re:Not at all suprised by AJWM · · Score: 4, Insightful

      I figure that anyone sharp enough to have picked up one language and set of libraries and used it well can just as well do it again.

      Close but not quite. You're as likely to find that they end up using whatever new language you throw at them as if it were some weird dialect of the only one they know well.

      My rule of thumb if I'm looking for someone that needs to be able to pick up a new language is to find someone that knows at least three different ones (and I wouldn't count C++, Java and C# as three -- one and a half, maybe), or two if they're different enough.

      My first two computer languages were Algol and APL, I've since been paid to write programs in about a dozen other languages and written toy programs in another ten or so. Heck, except for short term contract jobs, I've often ended up developing software in some language other than the one I was originally hired for.

      It's tough being on the hiring end too -- if I've got project deadlines looming and I'm given a foot-high stack of resumes to look through to pick out a few candidates to interview, I'm sorry but my first pass through the stack is to going to be to find any reason at all to not look at a given resume any further, so I can shrink the pile that I actually have to read and think about. I may end up throwing out a gem but as long as there's still one left in the pile I look at, that doesn't matter. (Well, not to me, I know it matters to the one I threw out.)

      Yeah, the whole resume/HR/interview process sucks, and it's one of the least efficient ways to find a job (or a good candidate), but alas most tech types are even worse at social networking, at least with the kind of people one needs to to get the job.

      --
      -- Alastair
    11. Re:Not at all suprised by KevMar · · Score: 1

      What is the best way to list languages on a resume that you have minimal skill in.

      When listing programming languages, is it best to describe your skill at each one or just list them all.

      If I were to put JAVA on my resume, I would be in that percentage that doesn't realy know it. Yeh, I took a few classes and I should mention it, but how?

      --
      Im a gamer, not a grammer major. This post is full of spelling and grammer mistakes.
    12. Re:Not at all suprised by AJWM · · Score: 3, Interesting

      I've seen some people do a skills matrix -- list each language (or other computer related skill, like system administration or particular packages) and give a level of experience for each, sometimes also with a "last used" date.

      I used to categorize them in groups, something like:
      Highly skilled in: C, C++, Java
      Experience in: Python, PL/SQL
      Some exposure to: Ruby, Coral 66, BF

      If I'd just done a couple of classes, it'd be in the "some exposure to" category. Anything less I wouldn't bother mentioning. (Hey, I've done the equivalent of "hello world" in a lot of obscure languages, and (like a lot of programmers) I can read more than I can write code in.)

      These days I have enough trouble cramming my resume into just three pages, so I don't bother listing anything I'm not prepared (by both knowledge and inclination) to immediately sit down and start coding in. If there's some other language that might also be relevant to the job, I'll mention it in the cover letter. And there's stuff I leave out -- I've been an APL resident expert, even taught courses in it, but I don't mention it on my resume because (a) I'm very rusty and (b) I have no particular desire to do develop in APL again (and I guess (c), there's no demand for it). Now, if someone were looking to convert an APL application to Java, say, I might be interested.

      (And on one job, despite never having claimed any knowledge of COBOL and even actively denying any knowledge of it, the boss stuck me with extending a COBOL application, over my protests, saying "it's easy, you'll pick it up". (Fortunately I managed to put it right back down again after that project ;-)

      --
      -- Alastair
    13. Re:Not at all suprised by Phouk · · Score: 1

      "Java was the popular thing of it's time. If you didn't know it at the apogee of the internet bubble[...]

      Let me guess, you are one of those who still think Java is mainly about applets, right? (OK, maybe you are not, but it's such a nice rhetorical opening question ;)) Boy, are you wrong...

      Here's a quick google statistic (mostly bogus, of course, as are most statistics) which, I hope, might shake your belief a little:

      • "Applet": about 3.4 million hits
      • "Java": about 61 million hits
      • "Servlet": about 10 million hits
      • "C#": about 4.4 million hits

      From where I sit, Java on the server side (Servlets + JSPs) is the mainstream, applets are just a niche, and even C# is not there yet.

      --
      Stupidity is mis-underestimated.
    14. Re:Not at all suprised by JanneM · · Score: 2, Interesting

      Hm. Ok, this kind of "statistics" is of course just fo fun, and have very little relevance. That said:

      "java" - 60 million hits

      but

      "java -coffee -island" - 9.3 million hits

      Still quite a lot, but not as huge as the first search made it out to be.

      --
      Trust the Computer. The Computer is your friend.
    15. Re:Not at all suprised by repetty · · Score: 2, Insightful

      "Java was the popular thing of it's time."

      I'm unemployeed so I spend A LOT of time looking at job listings.

      In Austin, Texas, at least, it is STILL Java's time. Maybe things are different in Iceland.

      --Richard

    16. Re:Not at all suprised by Mr.+Slippery · · Score: 1
      What is the best way to list languages on a resume that you have minimal skill in.

      My resume says "C and C++; also some PHP, Perl, LISP, Bourne and C Shells, Pascal, SQL". I'll probably move PHP to a more primary position soon since I've been working primarily in it since last year.

      I don't recommend getting more specific than "these I'm pretty good at, these I've had some exposure too".

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    17. Re:Not at all suprised by mrlpz · · Score: 1

      True...but Marketing is meant to emphasize the positives and de-emphasize any negatives....so you have to make your own assessments

    18. Re:Not at all suprised by Anonymous Coward · · Score: 0

      C++ absolutely fucking sucks for library development. Let me repeat that: if you are designing infrastructure for a huge software package and not crappy one-off disposable application, C++ is the worst language you can pick! To experience the problem with C++ and libraries, try this:
      1. Create a DLL with one class in it.
      2. Create an executable application linking to your class DLL and have it instantiate the object, do something with it, and then delete the object.
      3. Pretend like you are updating the class DLL and add a new datamember to it.
      4. Recompile your DLL.
      5. Now try running your executable again.

      Well, maybe your program ran fine, maybe it didn't. However, this is for sure: modifying the object you created will corrupt your application's memory space!

      Moral of story: C++ is for tinkerers, not for people who have to build huge business applications that need to run reliably.

    19. Re:Not at all suprised by spellraiser · · Score: 1

      Some exposure to: Ruby, Coral 66, BF

      Wow - now I finally have a way of putting Brainf*ck on my resume. Thanks!

      This opens so many possibilites. Like, I think I'll put my 5 years as a pothead down as 'joint development' After all, I did progam something too, I ... think ....

      --
      I hear there's rumors on the Slashdots
    20. Re:Not at all suprised by AJWM · · Score: 2, Funny

      Heh!

      Those were, of course, merely examples. The closest I've come to Brainfsck is reading stuff on the web, and somewhere around I think I have the Coral66 reference.

      Then there's the guy I worked with who should have put "Team Lead" on his resume. Pronounced "led", as in sinker or dead weight...

      --
      -- Alastair
  7. Well, I'm relieved... by Green+Light · · Score: 4, Funny

    I see that I'm not the only one!

    --
    "Send an Instant Karma to me" - Yes
    1. Re:Well, I'm relieved... by Cynikal · · Score: 1

      you laugh, but alot of the "developers" i've met actually don't code their apps from the ground up. Many of them couldn't even if they tried. It's almost become accepted practice in some circles to just google for source code that does something similar to what you need and then cut and paste the parts into your app, then recode it (change variable names, subs/functions) to work together with the whole program...

      is this what they had in mind when they brought out the whole idea of reusable code? or is it a good concept gone to extremes?

  8. It's True. by dmorin · · Score: 5, Insightful
    I am the first line interviewer at my company. I ask Java programming questions that I consider easy (like tricking people into trying to store a primitive in a collections object, or knowing how to determine if a bit is set). Sad to say most people fail. Some fail spectacularly.

    For the record I do NOT ask those boring certification style questions that you'd only know the answer to by memorizing the spec. All the questions we ask start with "here's a problem, now solve it with real Java code, please." If I've learned one thing, it's if somebody groans and complains that writing code is so trivial you shouldn't even ask it, then sit there and force them to write code because chances are they can't.

    1. Re:It's True. by rluberti · · Score: 1

      when I was interviewing candidates, most of them was failing when asked to write the code for converting a string in a number.....and they couldn't draw a class diagram from very simple specs. I believe people has less time to improve their knowledge on what they already know....because they are pushed to move forward with new "cool" stuff every month.

    2. Re:It's True. by GypC · · Score: 5, Insightful

      The real skill is recognizing and choosing the best ways to solve problems with a computer in a given paradigm (OO, Functional, etc). Languages are easy to pick up, and almost all programmers (except maybe C) have a manual on their desk.

      Memorizing the nitpicky details or anything more than basic syntax is worthless. I'm sure Dr. Knuth would fail your little test. He wouldn't bother memorizing stuff that is easy to look up.

      I managed to get a job doing BASIC programming with little knowledge of BASIC. I knew C, C++, PASCAL, Perl, Python, and sh. It took me maybe 2-3 days to become comfortable with BASIC. Now I'm one of the best programmers they've ever had, and I'm cleaning up a lot of their old crap code written by people who sure knew BASIC, but couldn't design a readable program to save their own lives. I'm talking GOTOs every other line.

      Every good programmer with a background in OO languages worth hiring would be able to pick up Java in a very short time. You're probably weeding out a lot of real talent.

      Now go back to pretending you're a real programmer and getting your jollies mocking people who can't write a bunch of Java code off the tops of their heads without a manual to look at, yet dare to apply for a developer postition!

    3. Re:It's True. by DeadSea · · Score: 1

      Your company must suck. I'd hate to work there.

    4. Re:It's True. by Jmstuckman · · Score: 5, Insightful
      Now, I'm assuming that the original poster was giving this test to people who put Java on their resume. (Otherwise, why bother?) The first example he gave (testing a bit) could be done with simple boolean operators that are the same in many other languages. (there might be a better way but this is one...) The second problem (boxing/unboxing) is something that any Java developer with experience should be able to do in their sleep, because it is a VERY common operation.

      If I'm appling for a C++ development job and I put C++ on my resume, isn't it fair to ask me to, say, write a simple class definition without looking up the syntax? If I can't do it, then I must not have programmed in the language much at all, and I have no business putting C++ on my resume. In theory, the resume's supposed to be for languages you know, not languages that you could learn.

    5. Re:It's True. by humblecoder · · Score: 3, Interesting

      I have been on both sides of the interviewing table, and in my experience, the best technical interviews are language-agnostic, regardless of what language is used in your shop. All of the questions that I ask start with "here's a programming problem, now solve it in whatever language you want". I am more interested in seeing a person's thought process as they go through the steps of solving the problem than their syntactic recall for a particular language.

      My rationale is that a software developer who has excellent problem solving skills can transfer their skills to any language. However, someone who knows the syntax and tricks of a language cold may or may not be a good problem solver.

      The only exception to this is that if I want someone with OO skills, I will ask language-agnostic questions about OO design and development concepts (ex: define polymorphism, state why it is useful, and give an example of how it can be used).

      Also, a question that "tricks people into trying to store a primitive in a collections object", doesn't seem like a very useful question. First, you are testing for knowledge of a Java syntactic quirk. Secondly, even if a person didn't know about this quirk right off the bat, any developer worth their salt certainly would figure it out the first time they tried to compile the progam.

      In fairness, I do like the question about determining if a bit is set, although I wouldn't hold it against the person if they didn't have the Java bit operators memorized. As long as they understood the CONCEPT of bit manipulation, I'd be happy.

    6. Re:It's True. by Anonymous Coward · · Score: 0

      yeah, and when the job postings out nowadays include everything but the kitchen sink of programming, you're going to find the perfect candidate like that HotJobs commercial. I'm not a Java expert, but I've rewritten enough code by supposed experts who I went to work for to know that just because you can answer questions on an interview doesn't necessarily make you a good programmer.

    7. Re:It's True. by TheLink · · Score: 1

      I'm not really a programmer, I don't know all those algos, language gotchas, APIs etc, so I'd just ask them what they've written recently for fun, and what noteworthy things they can tell me about it.

      They haven't written a program recently for fun? Better give a very good reason then, if they want a programming job. They have but can't describe it or say anything interesting about it? Yeah right... Hello world = fun for them? Woohoo.

      Why hire a person who's going to start work already having little joy with programming?

      Sure, the joy will be milked out of them gradually, but they need to have some joy first right? (j'king!).

      Not sure if this is really such a great filtering method.

      Maybe it's unfair that prospective programmers weren't informed that they should have written an interesting program or two for _fun_ within 6 or so months before the interview.

      Any better ideas?

      --
    8. Re:It's True. by wfeick · · Score: 1

      I think it's important to do both, actually. I used to just talk with the candidate at the high level about design and OO issues, but then I had a guy slip through who'd completely snowed me.

      Since then, I still hit on high level understanding, but I also insist on covering some of the nuts and bolts. I have a list of language features, and I make the candidate describe each feature, and where they've used it in one of their own designs.

      I also make them walk through some example code, and explain what's going on (e.g. C++ constructor/destructor ordering, virtual function behavior, exceptions, memory allocation leaks, etc.). This isn't "reverse the linked list" sort of stuff, it's just demonstrating a knowledge of the capabilities of the language, and ensuring they can identify some rookie mistakes in the code.

    9. Re:It's True. by sfjoe · · Score: 1



      Of course most people fail. Do you really think an interview-style situation is one where people can regurgitate Java 101 answers to questions?
      When I hear things like this it makes me really glad I have a job. I remember one interview I went on where I was given a set of five questions to answer. I answered 3 out of 5 questions "correctly". I missed two of the questions because the interviewer had the wrong answer. It was funny when she said, "that's OK everyone I've interviewed has missed that question".

      --
      It's simple: I demand prosecution for torture.
    10. Re:It's True. by Anonymous Coward · · Score: 0
      Actually, about half of the people I interviewed for programming positions used to fail the following test: Write a program to display the text "Hello World" in a language of your choice.

      Now we have a better screening process. However, what I find amazing is the number of people applying for Java programming jobs who are unable to use Java threads. These are people who have taken the trouble to write "Java threads" on their resumes, but if they have ever heard of thread waiting and notification, do not know how to use them. I'm not talking about failing complex programming tests. I'm talking about shaking heads when asked how to improve on a busy wait. I don't think I'm an unfair interviewer. If someone doesn't know something, I move on and look for their strong points. But if they claim to know something and turn out not to, their credibility goes right out the window.

    11. Re:It's True. by LordLucless · · Score: 0

      It depends how pinickity you're going to be - expecting someone to write even a 20-line code snippet and getting it to compile straight off is a bit tought. Would I fail the exam for missing the semi-colon at the end of a line, or miss-spelling one instance of a variable name?

      Any test that involves writing code without the help of a compiler (or interpreter, depending on the language) is just stupid - you're never going to be in that sort of situation, so why test it?

      --
      Just because you're paranoid doesn't mean there isn't an invisible demon about to eat your face
    12. Re:It's True. by Anonymous Coward · · Score: 0

      Here in my Uni exams are on paper. We are supposed to memorize the stupidest details of Pascal (the original standard) and how Turbo Pascal (the implementation used at uni) differs from it. Neither of these would be used in a real job (not in one 99% would care to do, in any case).
      On top of that, a friend of mine who /teaches/ (as an aid, doesn't actually give classes), told me she's worried she doesn't have any practical experience because she has only done what uni asks.
      Another friend and I used to correct (among ourselves, not speaking out loud) the mistakes the professors did while writing code on the blackboard. It was trivial code. And we weren't correcting the syntax, but the algorithms themselves.
      Which goes to show, people who concentrate on keeping everything on memory usually can't do the real thing.

    13. Re:It's True. by Anonymous Coward · · Score: 0

      Why not C? C does include the C standard library, and I don't know anyone who remembers the exact details of every function there. It's important to know what's available, though, a typical example (which I saw myself) is quicksort, it's available in the standard C library, small things like that save a lot of time.

    14. Re:It's True. by GypC · · Score: 1

      Point.

    15. Re:It's True. by iabervon · · Score: 2, Informative

      You can store a primitive in a collections object in Java 1.5; haven't you read JSR 201? (Well, okay, it actually automatically boxes them for you, and you have to declare it as "Collection" instead of "Collection", but the compiler error message is reasonably informative, and it's trivially caught at compile time.

      I'm personally more worried about people who claim to know Java, but think that it is a good idea to keep pools of objects and reuse them. Aside from all of the programming hassles this creates for anyone trying to use the stuff, it messes up the garbage collector, which can't optimize dealing with objects that live forever and reference a ton of unrelated short-lived stuff over time. The problem is not the people who can't actually write any Java; the problem is the people who can write Java, but just make things slower and harder to maintain.

    16. Re:It's True. by Jmstuckman · · Score: 1

      You're right -- if I for some reason wanted to give someone such a test, I would at least give them an IDE with some kind of keyword completion. However, if they can't even remember the name of the Integer class or they don't remember which operator is the logical AND, then their knowledge of the language probably doesn't extend beyond the 2 hours of coding they did to get on the weekend to get it on their resume.

    17. Re:It's True. by jmv · · Score: 1

      Well, what you say i true in general, except that sometimes you want someone who's not only a good programmer, but really knows a particular language. Becoming really good at C++ or Java still takes a lot of time because you always need to adapt the way you actually think about problems.

    18. Re:It's True. by dmorin · · Score: 1
      You can store a primitive in a collections object in Java 1.5; haven't you read JSR 201?

      Of course I have. And every now and then a candidate references this as well -- but rarely. If they don't, I ask. If they do, we discuss whether this makes the language any more efficient or if it is just syntactic sugar to make the programmer's life easier.

      My original point was to give an example of a pretty simple problem -- really only one step removed from "How do you tell if a number is even or odd" or "How can you simulate a 'round' method using only 'floor'?" -- to illustrate that some people can't even do THAT. If you're going to complain that it is a bad question, but you can't complete it, then your opinion really has no standing with me. Complete it and tell me it's a stupid question, fine. I've had people do that, and we move on. But I've also had candidates for whom I've had to ask, "Now...how do you tell if a number is even or odd?" and had one guy write "int x ; if (x/2 == whole number)..."

    19. Re:It's True. by DataSquid · · Score: 1

      In theory, the resume's supposed to be for languages you know, not languages that you could learn.

      How about languages you have learned, used and then forgotten?

      --

      DataSquid.net, a little about me.
    20. Re:It's True. by Anonymous Coward · · Score: 0

      Sounds pretty reasonable to me. Maybe I'm out of touch with the real world, but I would think all programmers write at least something to make using their computer easier/better.

    21. Re:It's True. by alex_tibbles · · Score: 1

      IANAJE (I am not a Java expert), but I thought that the soon-to-be-released JDK provided autoboxing which meant that you no longer had to arse around doing this junk manually...
      It's nice to see a language clean up it nasty bits. (There are people who claim that knowing C++ just is knowing a long list of nasty bits to avoid... they havn't all been cleaned up).

    22. Re:It's True. by Anonymous+Brave+Guy · · Score: 1
      They haven't written a program recently for fun? Better give a very good reason then, if they want a programming job.

      Dear Mr Potential Interviewer,

      I am a professional software developer. I wrote my first program when I was about five, and my first program for significant money when I was in my early teens. Throughout my time at school I wrote programs for fun. Throughout my time at university, I wrote programs to help me with my work. I have been a full-time professional for around five years, and in two successive jobs, I have been the person my colleagues turned to with tricky technical questions or for a second opinion on a programming book, because I've probably read it already.

      Today, I'm 26, and as well as being a full-time developer, I volunteer around 20-30 hours per week helping to run a large club relating to one of my hobbies, I have a long-term girlfriend, and I have several other hobbies besides. I am a geek's geek, in the sense that I enjoy my field and keep abrest of new developments in computing generally and programming specifically. In the past two years, I have learned enough Perl to write reasonably involved scripts at work and a CGI interface to a MySQL database for the club, enough XML/XSLT to overhaul a 50+ page web site almost single-handed in my off hours so that it can be maintained by non-techies, and a fair bit of background on Python and various functional programming languages just for fun.

      Unfortunately, there are only 26 hours in my day, and the last time I wrote a program just for fun was several years ago, so I'm afraid I won't be able to accept a job at your firm. Thanks for your time.

      Yours sincerely

      Someone Who Will Never Work For You

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    23. Re:It's True. by hyc · · Score: 1

      As a programmer who takes pride in my work, I pay attention to details. Paying attention to what one is doing is one of those worthwhile expenditures of effort that means you may not have to keep re-doing it umpteen times down the road.

      If you can't be bothered to get 20 lines of code absolutely correct on an employment test, then why should I trust you to get 2,000 lines of code correct in a production environment? If you can't write 10 lines of code correctly without needing a compiler or IDE to check your syntax for you, then you're just lazy, and I will happily toss your resume' in the trash, cursing the time I wasted interviewing you.

      Good tools certainly help you to work more efficiently. But I would rather give a good developer a set of tools that makes him stellar, than take a poor/mediocre developer who churns out "just passable" code.

      --
      -- *My* journal is more interesting than *yours*...
    24. Re:It's True. by troon · · Score: 2, Funny

      All of the questions that I ask start with "here's a programming problem, now solve it in whatever language you want".

      OK, I choose Whitespace as my language of choice. My solution is on the other side of the page...

      --
      Ydco co ,df C erb-y go. a Ekrpat t.fxrapev
    25. Re:It's True. by LordLucless · · Score: 1

      It's your own loss.

      If you pass over a competant software architect because he dropped a semi-colon, and instead employ a code monkey, who can write basic code with no mistakes but never has an original thought, you deserve what you get.

      That's not saying that the best employee would not be one who could both design software and was finnicky about details, but if you throw away a good architect for the sake of a minor detail in an unrealistic assesment, then you're probably the sort of guy I wouldn't want to work for.

      --
      Just because you're paranoid doesn't mean there isn't an invisible demon about to eat your face
    26. Re:It's True. by hyc · · Score: 1

      You have a valid point about people who slavishly follow rules and never have an original thought.

      But still you must learn to walk before you can run. If you haven't mastered the basics then you haven't earned the right to be an architect yet.
      If you're unwilling to demonstrate your mastery of the basics in an interview, then you're probably too contrary to be a reasonable employee.

      If you'd prefer to BS your way through the interview by demonstrating architectural ideas, well - lots of people can talk a good game. Anybody can think about a problem and say "I would solve it by doing X, Y, and Z" but few people actually have what it takes to write the actual code.

      Now, you might think that missing a semicolon in a 20-line code snippet is too trivial to really worry about. But really, if you can't (or rather, *won't* make the effort to) formulate a correct answer to a small problem, I still doubt your ability to handle a larger one.

      As for who you'd like to work for, and who I'd like to hire - no loss either way. Just like other human relationships, some things just aren't meant to be.

      --
      -- *My* journal is more interesting than *yours*...
    27. Re:It's True. by TheLink · · Score: 1

      Like I said, give a very good reason. And we'd talk some more.

      Still, if you're really a decent full time developer I'd find it hard to believe you haven't written at least one little nifty/interesting program for fun, whether work related or not. Shouldn't take very long to write something cool if you're good and using an effective programming language that suits you. Not talking about mid/big fancy stuff or programming competition type problems- just stuff you consider cool/nifty (then I'd have a better idea of what you like to do and could possible do in a pinch[1] - heck if you like programming competition problems that's fine too :) ).

      As it is, you seem to have enough time to post to Slashdot, despite your very packed schedule.

      But still not enough time to code one little program[2] for fun. Heck make a winamp visualization plug-in for your girlfriend if she'd like that.

      So I'd probably say, thanks for your precious time.

      (Next!).

      [1] e.g. some idiot in Sales spent hours entering address book info into some free online db and has recently left the company, now a boss wants it all locally and a copy in his Palm PDA. Another boss has a PDF document containing records he wants to shove into a database (or do a mailmerge with). So which task can I give to who?

      [2] Even to glue a made in dunno where router to dyndns.org? or a driver to talk to a no name UPS? Or write acme::bleach? Or play a stupid online game automatically[3]? Or [insert whatever]?

      [3] Two people I know were playing a stupid hack+slash web based online game with programs - mildly competing with each other for number 1 spot (just automatically whacking dumb monsters). The rest of the players weren't very happy. Both did quit after a few days - in which time their program controlled characters zoomed from newbs to the top ranks (I think one of them got number 1).

      --
    28. Re:It's True. by LordLucless · · Score: 1

      I think we're really arguing the same side.

      When I read in your post that you wouldn't accept anyone who did not get "20 lines of code absolutely correct" on a test, I assumed you meant that if those 20 lines would not compile, you would simply ignore the applicant. Having satisfied myself that the applicant could actually code, I'd then want to see if they could actually analyse a large problem, instead of just implementing someone else's solution.

      I'd say that as long as those 20 lines showed a thorough grasp of syntax, structure and an understanding of whatever paradigm they're using (procedural, OO, functional), then that's good enough. I'd act on the assumption that missing semi-colons, closing brackets or slightly mis-spelt variable names would be corrected in about 30 seconds after they tried to compile it.

      When you talk about formulating a "correct" answer, well, there's a number of ways to interpret "correctness", and it depends on what you're testing. If you're testing general programming skills, I'd say as long as their solution is algorithmically correct, then that's satisfactory. If I were testing for knowledge of a particular language, I'd ask that their syntax be mostly correct for that language, but I could forgive the odd missing jot or tittle.

      --
      Just because you're paranoid doesn't mean there isn't an invisible demon about to eat your face
  9. It's worse than this by dhk42 · · Score: 3, Interesting

    My real world experience tells me it is much less than 32%. 15% at best (though another 15% THINK they know java - this is where the real danger lies).

    If you require knowledge of complex topics like sensible J2EE architecture or multi-threading it falls into the single digits.

    The second half of the article recommends Model Driven Architecture for the masses as the solution. This amounts to putting complex tools into the hands of idiots. Tools that go out of their way to keep people ignorant, while simultaneously giving them the power to commit their sins on a grand scale. Brilliant.

    dhk

  10. Only 2% of English speakers know English. by Futurepower(R) · · Score: 2, Funny


    "Only 32% of Java developers really know Java."

    An old Digital Equipment Company manual for technical writers said that only a small percentage of people really know English. And here is an example of not knowing English, in the Slashdot story:

    "The knowledge gap between someone who can successfully write a System.out.println() and someone capable of designing and implementing a complex Java system brings to companies being back-logged with pending projects."

  11. 32% are any good? by bluGill · · Score: 5, Informative

    Knowing Java is very different from knowing programming. If you can't do a complex project in Java you can't do a complex project in any language. If you can do it in any language, you can do it in Java. The first step might be learning Java, but any good programmer can handle that in a short time. Now granted I'd want someone who knows all the tricks on the team so I don't re-implement the wheel, but a complex project by definition requires many people so that isn't an issue.

    HR is far too hung up on what you have already done, not realizing that the data structures and algorithms are what counts, and they are the same in any language.

    1. Re:32% are any good? by peterdaly · · Score: 4, Insightful

      I agree with your statements if a distinction is added between procedural and object oriented languages.

      I have seen too many "old school" developers who havn't the foggiest idea about OO who think they can code in Java because they know the syntax.

      All languages are not equal.

    2. Re:32% are any good? by esme · · Score: 1
      HR is far too hung up on what you have already done, not realizing that the data structures and algorithms are what counts, and they are the same in any language.

      i think the problem is that it's very hard to tell from someone's resume and an hour or so of interview whether they actually know their stuff, much less whether they can learn new stuff. so most people just rely on job experience to determine whether people can actually be productive using a given tool or language.

      i ran into this problem when i got my first job (not in programming, but as a tech writer/illustrator). i didn't have any experience using their drawing program (freehand) because i'd mostly worked with art produced by someone else. luckily, they let me sit down with it and reproduce someone else's work to show that i could learn it very easily. of course i'd told them (and everyone else i'd interviewed with) that i could learn anything, but they didn't believe it until i'd actually done it.

      on the other hand, i've been bitten by this once or twice when interviewing candidates. they all say they can learn whatever language you need (wouldn't you?). but sometimes you hire them and they just don't, and they become an enormous drag on your team because you have to work around their lack of skills.

      -esme

    3. Re:32% are any good? by Captain+Rotundo · · Score: 1

      "old school" I know java, somewhat. But I would definately have to say that its the OO stuff that catches me, because I am a C coder by trade... I like functional programming because its what I do 5 days a week eight hours a day (the few things I do that I can use java with afford me the opertunity to work on my OO principles)

      oh and I'm 26 and have only be coding professionally for 5 years. So much for your "old school" idea.... people will always be better at what they are used to working with. Ganted I have met many people that know OO and won't admit or realize it affects their design, and vice versa.

      The key is being able to see the shortcoming and work on it, the problem is the vast numbers of people that don't think they have to.

    4. Re:32% are any good? by GigsVT · · Score: 1

      If someone's resume doesn't use one capital letter, that's a good hint.

      BTW- At least they didn't sit you down in front of Quark, the interview might have turned out differently. :)

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
    5. Re:32% are any good? by Haeleth · · Score: 4, Informative

      I am a C coder by trade... I like functional programming because its what I do 5 days a week eight hours a day

      Um, if you're a C coder, then you are not doing functional programming, you are doing procedural programming. Functional programming means languages like Lisp, ML, and Haskell.

    6. Re:32% are any good? by Godeke · · Score: 1

      Perhaps he is doing functional programming: the original REBOL code was written in C with closures in the functional style. It is just *harder* to write functional style in C than a language specifically geared for it.

      --
      Sig under construction since 1998.
    7. Re:32% are any good? by Anonymous Coward · · Score: 0

      There is not such thing as complex projects, what really exist are bad application design principles, debuging/creating a project with 1000 classes doesn't make the project complex neither better (or just because it includes every new thing on the net), what it makes is a bad application hard to mantain or refactor. You always have to design your applications with re-usability and simplicity in mind, the basics of OO programming.

      For the bunch of WANNA BE supervisors that replied to this thread the only question you have to make is how your potential programmers document their code and if they give more value to readability than being 31337, for languaje specifications and details there are things called BOOKS and GOOGLE (if your company can afford a decent dedicated internet connection), a programmer without books at hand is a "cut and paste con", if as a supervisor you rely on the knowledge of a small part of a languaje specification you limit the approach to the many possible solutions a problem could have (as always the simple one is the best), no doubt why there are so many applications full of bugs out there (and the ones to come from india :)), thanks to mediocre supervisors who think they know it all.

      And a rule of thumb the lazier the programmer the better the final product he makes, read on the perl design specification and you'll see what to look in a potential programmer.

    8. Re:32% are any good? by Repugnant_Shit · · Score: 1

      Or perhaps he considers C "functional" in that the basis for blocks of code is a function, as opposed to Java's basic block the class. Better words are procedural (as you say) or maybe function-oriented :)

    9. Re:32% are any good? by Monkelectric · · Score: 1
      You are correct my good man, java is about knowing your classes hardcore and knowing what interfaces to extend, implement, etc so your code is the most flexible.

      One of the problems with OO programming is you can't always anticipate how an object might be used :) An interface you implement might be perfectly acceptable for your purposes, but there could be another interface which provides the same functionality for your software, and more functionality for another purpose of which you are not aware.

      --

      Religion is a gateway psychosis. -- Dave Foley

    10. Re:32% are any good? by tylers · · Score: 1
      I have seen too many "old school" developers who havn't the foggiest idea about OO who think they can code in Java because they know the syntax.

      As one who has done some Java programming and studied OO methodologies a bit, I am currently running into this very problem. I'm tutoring a friend who is taking a Java course at a local university. Her professor most definitely falls into the above category.

      Examples:

      • He started out the semester having them run everything statically from the main() method
      • He taught them JavaDocs that the javadoc tool wouldn't even accept
      • He got mad when we used the jdk1.4 instead of his beloved 1.3, even though 1.4 has been out for 2 years already
      • He taught them (by example) to use magic numbers instead of named constants
      • And many more...

      I go to the tutoring sessions dreading to hear the latest fallacy she has been taught. I don't doubt that the prof's a great C programmer, but he shouldn't be allowed to touch Java with a ten foot pole.

      Tyler

    11. Re:32% are any good? by ClosedSource · · Score: 1

      I disagree. Some projects are more complex than others by their very nature. A bad solution can add additional complexity, but an elegant solution cannot reduce the complexity below that which is inherent in the problem.

    12. Re:32% are any good? by ClosedSource · · Score: 1

      "I have seen too many "old school" developers who havn't the foggiest idea about OO who think they can code in Java because they know the syntax."

      I guess what you meant was that these "old school" developers don't take full advantage of OO capabilities. If they know Java syntax, I think that pretty much means they can code in Java. Since any Java program that produces an output uses objects, they must be doing OO programming as well.

    13. Re:32% are any good? by Pieroxy · · Score: 1

      If you can do it in any language, you can do it in Java

      Hmmm, let's think over something here. I want to do a simple project: A time sychronization client. Well, I connect to a trusted time source, and I set the system clock to that.

      Can't do that in Java, because there is no API to set the system date. Pretty stupid, if you want my feeling.

    14. Re:32% are any good? by angel'o'sphere · · Score: 1

      In C the basic block of code is NOT a function. And thats why it is not functional. In Java the basic block is a class, thats true, but: interesting are the objects.

      So back to C. In jave every "value" is a object(or a primitive). What are values in C? Primitives or addresses(pointers).

      In C a function can not be a value, except that you can take the address of a C-function and pass that address around.

      In a functional language values are functions, in a object oriented language values are objects and in procedural languages values are primitves or addresses/pointers.

      Interesting is with more elaborated languages like C++ you can emulate functional languages with objects, in Java you can only do that partly as you see allways the class syntax shining throough(no operator (), which you could overload).

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    15. Re:32% are any good? by Anonymous Coward · · Score: 0

      Magic numbers instead of named constants? I'd say he's not a great C programmer. He sounds like a bad programmer, that mistake is unforgivable. The others don't help, either.
      That aside, yes, many procedural programmers can't program OO yet believe they do.

    16. Re:32% are any good? by Anonymous Coward · · Score: 0

      In a class situation, there certainly are cases where you might use magic numbers because it can make the example more concise and thus more understandable.

      It's also true that how "magical" a particular number is depends on the context it appears in and what you assume is already known in the problem domain. Taken to an extreme you could argue that no numeric value can be used outside a define statement.

    17. Re:32% are any good? by Anonymous Coward · · Score: 0

      That's not true. I remember downloading a ntp client written in Java once. You had to allow it to set the system time, but after that it worked fine.

    18. Re:32% are any good? by Pieroxy · · Score: 1

      Yes, I remember the thing. 95% java + 1 dll to install. Not pure Java. There is no ntp server 100% java, for the very reason I mentionned.

    19. Re:32% are any good? by Miserkordi · · Score: 1

      I am a C coder by trade... I like functional programming because its what I do 5 days a week eight hours a day

      Um, if you're a C coder, then you are not doing functional programming, you are doing procedural programming. Functional programming means languages like Lisp, ML, and Haskell.


      Ocaml rocks. It takes a little getting used to, but it's a lot of fun, and forces you to rethink your programming style.

      I think you should go back to school if you're confused on functional vs procedural programming.

  12. Less than 5% of Java professionals by photon317 · · Score: 0, Troll

    could code their way out of a paper bag in any language.

    --
    11*43+456^2
  13. Code-completion interviewer by Latent+Heat · · Score: 4, Interesting
    I am of the mind that asking technical questions are fair interview questions -- I mean what are you supposed to ask in an interview for a technical job?

    On the other hand, most of us mortals don't store all the details of API's in our heads. Back in the Stone Age we used manuals and in the Information Age we use the SUN Web site. If your interview objective is to see how someone would get the information to solve the problem, that is fine, but if your objective is to see if that person already has some narrow set of information, you are going to exclude some capable people.

    I am mainly a Delphi developer (I should say a Delphi component developer), and my Java experience is only 4 months old, and gee, my Java experience is limited to using JNI to allow a Delphi ActiveX component to invoke an extension module written in Java and using a class loader so that extension module can be reloaded while the ActiveX component is still running.

    I don't know the answer to your question about Java collection objects without looking it up, although I have enough sense to know that you have to use Object wrappers for value types in collections and then have to cast those objects back to their original types when you pull Object references out of collections -- I know that from "wasting" time reading Slashdot.

    I guess I would fail your interview.

    1. Re:Code-completion interviewer by dmorin · · Score: 1
      I don't know the answer to your question about Java collection objects without looking it up,

      Basically I set up a situation where I want to create a hashmap of numeric counters such that I am going to increment a million times, but only store 100k keys into the table, and ask people to write me the structure to do it. Some just try to stick an int into a Hashmap and do a put(key, get(key)++) which shows a horrible lack of understanding of java objects. The better answer is when they know they have to store an Integer, get the intValue(), increment that, then create a new Integer object and store that.

      The *better* answer is creating your own MyInt wrapper that stores a mutable int and enables you to easily increment it.

      It's never about getting a perfect answer. What I love are the ones who swear up and down how easy it is, and then do it wrong.

    2. Re:Code-completion interviewer by Pfhreakaz0id · · Score: 1

      personally, I'd say "why don't you give me a real business problem, and I'll solve it."

      The hardest thing to do in this business is understand the problem and come up with a solution that is maintainable, easy to code and scalable. If I want to know how to solve a specific algorithm like that, I'll google. Someone, somewhere has already solved it. I should waste my time trying to find the best solution. Instead, I should spend time trying to understand the business.

    3. Re:Code-completion interviewer by sahala · · Score: 2, Insightful
      The hardest thing to do in this business is understand the problem and come up with a solution that is maintainable, easy to code and scalable. If I want to know how to solve a specific algorithm like that, I'll google.

      I don't consider myself a Java developer (I design/build UIs) but I would be pretty dismayed if I saw a self-proclaimed Java developer resort to looking up that "algorithm" on google. Granted, the parent post's wording is a little ambiguous but that shouldn't stop an interviewee from asking a few clarifying questions, then writing out half-decent code that avoids a few blatant obstacles, in this case the requirement for Collections to store primitives. The parent is really referring to candidates not being able to live up to their own talk, which I think is a valid statement. If someone groans about writing a snippet of code in an interview, wouldn't that make him look like a crappy potential co-worker who groans about writing code for production?

    4. Re:Code-completion interviewer by sahala · · Score: 1
      in this case the requirement for Collections to store primitives

      I meant to say, the requirement for Collections to store objects.

      Oops...

    5. Re:Code-completion interviewer by Anonymous Coward · · Score: 0

      "It's never about getting a perfect answer."

      The problem is that near perfect answers are exactly what you need for real, full-up problems and aren't likely to be found in the amount of time taken for an interview.

      I wonder if those candidates that are fast on their feet during the interview are also the ones that dive into coding before they've had a chance to consider the whole problem.

      I think the interview process is typically more about marketing than engineering, even when technical questions are used.

    6. Re:Code-completion interviewer by Anonymous Coward · · Score: 0

      "If someone groans about writing a snippet of code in an interview, wouldn't that make him look like a crappy potential co-worker who groans about writing code for production?"

      The obvious answer is "No". This is an interview, not work. Should you reject a doctor because he doesn't want to give you a free exam as part of your interview process? Peolple want to be judged based on their professional work, not on bullshit interview problems. That doesn't mean that most people won't do it, it just means they won't like it.

    7. Re:Code-completion interviewer by Anonymous Coward · · Score: 0

      interesting , but the in the case of an exam, the examinee is actually getting something out of it. wereas the interviewer is not, except the obvious sign of competnancy.

    8. Re:Code-completion interviewer by C10H14N2 · · Score: 2, Interesting

      I had an interview recently where they were looking for someone who "knew" VB, a VERY obscure piece of middleware that runs both VB and Java, and Websphere. Ok, got all of the above. However, my working Java experience is limited to J2EE, you know, the sort of Java that's relevant to the aforementioned systems. The interviewer look utterly blank when I explained that, even though his job description did not explicitly say anything about Java that it was necessarily implied and that, yes, I have J2EE experience but not Swing/AWT GUI design, so please fortheloveofgod, make sure the Java you don't know you are asking for does not involve blasted Java GUIs. Sure, I *could* do it, but I've NEVER needed to and I don't want to. Ever. I hate AWT and Swing. Blech. Conversely, I know quite a few people who "know" Java in the sense of building pretty applications in Swing. God bless them, but they don't know the first thing about J2EE. Unfortunately, HR types wrap the whole thing up in "knows Java." That's as useful as "Knows C." Ok, now somewhere between "can write 'hello world'" and "can write nuclear power safety systems" we must find a usable definition of "knows," because if all you need is someone to write accounting functions and you've got a nuclear engineer across the desk, or vice versa, even "has the entire API committed to memory" is not a sufficient yardstick to work with.

    9. Re:Code-completion interviewer by haystor · · Score: 2, Insightful

      You probably wouldn't fail his interview. Even when a person gets a question wrong, you can tell if they know the language or now.

      Interviewing should be an interactive process. If you try to store primitives in a Collection the interviewer should say that Collections only store Objects. A java programmer will respond, "oh yea, that's right" and throw in a few wrappers. Someone that just put java on their resume will still be lost.

      At least that's been my experience. I look for comfort level with the material. Experienced programmers can miss easy questions, particularly because they have developed methods for avoiding those very questions. For instance, I may occasionally not be completely sure of order of operations, so I just slap on some extra parentheses or split a large equation up over more than one line.

      --
      t
    10. Re:Code-completion interviewer by sahala · · Score: 1
      The obvious answer is "No". This is an interview, not work. Should you reject a doctor because he doesn't want to give you a free exam as part of your interview process? Peolple want to be judged based on their professional work, not on bullshit interview problems. That doesn't mean that most people won't do it, it just means they won't like it.

      By the time a candidate steps into an interview room a good interviewee already has a good feel for the following, either by fine-toothing the resume or conducting a preliminary phone-interview:

      • General technical background (technologies, APIs).
      • Listing of applicable experience.
      • Credentials (education, certification, IP awards, etc etc)

      Notice that at the time of interview the hiring manager should have already judged a candidate's professional work and background. Good interviewers will proceed to validate and qualify the claims made in the resume, and more importantly, explore whether the candidate appears to be a good teammate. It's not uncommon for companies to assign a candidate's potential future co-workers to be interviewers. So why not do this by simulating a day-to-day shop discussion? The interviewer wouldn't be asking the candidate to check in some code for the next release -- that would be retarded -- but tossing a few questions in the air and working on a whiteboard seems pretty par for the course.

    11. Re:Code-completion interviewer by Tukla · · Score: 1
      ::scribble, scribble:: ...Hashmap...Integer...intValue()...MyInt wrapper....

      Hey, thanks! ::/me adds "Java" to resume::

    12. Re:Code-completion interviewer by Tukla · · Score: 1
      I know quite a few people who "know" Java in the sense of building pretty applications in Swing.

      Aren't "pretty" and "Swing" mutually exclusive?

  14. Makes sense by Oz0ne · · Score: 1

    I've dealt with java on dozens of project. I've never claimed once to know it, nor will I ever.

    I've never seen a situation where java was a good solution. I've seen plenty of places where java could be used.. but with the very very few people who are good with it (even fewer than those that "know" it) it's just inviting bugs and an ongoing project.

  15. And the coding style is even worse by peterdaly · · Score: 2, Insightful

    And just because they may know the syntax, that does not mean they can write code worth a crap. I took over a project where a guy wrote his own xml parser while there were tons of free ones on the market. That was a disgusting mess the ended up being easier to convert to real parser rather than fix some parsing problems. He also used count to 1 billion loops when spawning external processes because he didn't know about waitFor(). At first we could not figure out why his code was so slow. Add on top this was all done in static void main, which no other methods or calls.

    He has moved on to writing web application in RPG for another department, where every new group of pages gets deployed on a new port...they seem lost on the whole url concept

    Knowing Java is like knowing English (or any language.) Just because you know the language does not mean you are any good at writing poetry.

  16. This article is just an advertisement... by tcopeland · · Score: 4, Insightful
    ...for Compuware's software. For example, from the article:

    "Highly skilled and experienced Java developers are quick to recognise the value of MDA..."

    where "MDA" is Compuware's acronym for "buy our software and generate all your code". And since "highly skilled developers recognise the value", anyone who doesn't "recognise the value" and buy their product is an unskilled dolt.
    1. Re:This article is just an advertisement... by Anonymous Coward · · Score: 0

      Isn't valueing their software as "not worth even one cent" also recognising the value?
      I was even very quick at recognising that value so I guess I must be a highly skilled and experienced Java developer... better ask my boss for a raise (after all; look at the money I just saved him).

  17. Resume by illuminatedwax · · Score: 3, Insightful

    This brings up the point:
    What do you have to know to put a computer language on your resume? Let's say that I put "Java" on my list. Am I expected to, say, know all of the built-in functions for a vector, or string, during my interview? If I put Python down on my resume, am I expected to know the names of built-in function overloaders for classes or the functions and parameters for the re module?

    Basically what I'm asking is, if I put a computer language down on my resume, should I be expected to code something at an interview immediately without looking at any references? This doesn't seem unreasonable, if the program were simple, but I could imagine employers asking for more complex things. How complex is too complex and how much specific information should a computer programmer retain about a certain language, say, after not using it for 3 years (he was doing VBScript just until he could pay off his debt, I swear)?

    I think it's more important to know "how to program" rather than "how to program in X" because the skills you learn in one language are usually easily transferrable to another, as long as you have lots of experience in different kinds of languages: functional, procedural, OO, assembly language, etc.

    As a side-note, it looks in the article like by saying that 68% of employees don't understand Java, he really means that 68% of employees have never heard of MDA and have no idea what the hell it is, or don't quickly "recognise the value of MDA," since, of course, all highly-skilled Java programmers do.

    --Stephen

    --
    Did you ever notice that *nix doesn't even cover Linux?
    1. Re:Resume by metamatic · · Score: 3, Interesting

      I've been writing code for (thinks) over 20 years now, and whatever the language I always need to make extensive reference to documentation for simple things like names of API calls and order of arguments. For instance, in spite of writing C for over 20 years, I still need to refer to the man pages to check the parameters for fopen. Any employer who expected me to write code at an interview and get the syntax correct would be in for a big disappointment.

      So I have a big problem with syntax. That's why I like Scheme and hate C++. To me, syntax seems like a silly arbitrary distraction. I wish more languages took the Smalltalk approach to function arguments, too.

      I'd have no problem with questions about architecture, abstraction, the development process and design trade-offs though.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    2. Re:Resume by Anonymous Coward · · Score: 0

      I only include the languages I've been using a lot *recently* on my resume. This way, I have a list of only three to five languages, but I could jump in and start coding with them on the first day on the job.

      Of course, I'm not exactly getting flooded with job offers, so take my advice with a grain of salt!

    3. Re:Resume by Felonius+Thunk · · Score: 1

      I solve this by listing what I used at each job in the experience part of the resume, and listing practically everything I've ever used in the skills part. Then it's clear to anyone slightly technical that I don't really know much java, but I have used it before for some particular task. I put it on the list of things I "know" closer to the end. HR folks get buzzword compliance, hiring managers see better what I actually can and can't do. Rating skills never works either, though I seem to remember some of the job sites trying that.

      It seems a bit silly to only list the things you know inside and out on your resume. It gives a distorted picture, provides no way for junior programmers to list anything at all, and would leave things like "communication" and "writing/reading specs" off of pretty much everyone's resumes.

    4. Re:Resume by rossifer · · Score: 1

      What do you have to know to put a computer language on your resume?

      Like many issues, knowledge is not black and white. To clarify the claims on your resume, you should qualify them. For instance, on my resume I would claim:

      Programming Language Skills: Java (Guru), C++ (Expert), C (Expert), Perl (Novice), Python (Novice), Visual Basic (Novice), C# (Novice)

      This provides an opportunity for the interviewer to read my claims of knowledge along a scale of how confident I am. If my terminology is not clear enough, we have an opportunity to discuss what I mean by "Guru" or "Expert" and then the interviewer can gauge the veracity of my claims quite precisely.

      Other interesting datapoints about your knowledge would be the number of years using/learning the skill and the number of years since you last used the skill.

      As a side-note, it looks in the article like by saying that 68% of employees don't understand Java, he really means that 68% of employees have never heard of MDA and have no idea what the hell it is, or don't quickly "recognise the value of MDA," since, of course, all highly-skilled Java programmers do.

      The article is a shill for a code-generation product similar to Rational Rose or TogetherJ. Tools to reduce the quantity of boilerplate you have to write have been around for a long time and are slowly getting better and better. However, this method of marketing is really bad form. I really dislike Gartner for their inability to separate paid advertising from the actual research they do... Hmmm... I just had a mental "category shift" happen... Does Gartner actually do *anything* I should call research?

      The real problem with code-gen tools is that the boilerplate isn't the hard part of development, so those tools don't *solve* much of anything. The tough part is analyzing the problem and understanding the requirements well enough to design an object model that handles the requirements you know about and is flexible enough to deal with the requirements you know are coming. Once they solve that problem, I'll be out of a job, but until then I feel fairly secure in the value I can contribute to employers.

      Regards,
      Ross

    5. Re:Resume by Trejkaz · · Score: 1

      What I'm doing at the moment is when I list my skills, I break Java down into the various APIs I have been exposed to and list each of them with relative competencies. So I have things like J2EE (familiar), JDOM (guru), and so forth.

      It would be the same in any language, of course. If you know C it doesn't necessarily mean that you know Gtk back to front, which is just the same as knowledge of Java not implying knowledge of Swing.

      And every time I look at the letters MDA, I still see a drug. I guess that's why I wait a few seconds during interviews before giving my answer to a question.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
  18. Compuware by bartok · · Score: 1

    Ok so most of this article looks like marketing for Compuware's OptimaJ product.

    I recently had an interview at Compuware in Canada. I have only done one Java application so that's about 3 months of Java on my resume but I have 3 years of OO development experience in C++... and I was not hired.

    Compuware are looking to hire only senior level programmers and when they say there's a lack of Java programmers, they actually mean "5 years of J2EE, knowledge of WebSphere, BEA and a load of other stuff".

    Big development houses like them no longer invest in hireing people who know the technology but are not seniors. It's a catch 22 IMO. If no one wants to hire a J2EE developer that doesn't have at least 5 years of experience, then they shouldn't lament that "Java developers" become hader and harder to find as time advances.

    1. Re:Compuware by nickos · · Score: 2

      I'm a C/C++ coder who's just been roped (against my wishes) into a J2EE project that's using OptimalJ to save time. It seems to me that J2EE is totally over engineered and that something like OptimalJ is needed to make J2EE development competitive (developer time wise) with ASP or PHP. OptimalJ is woefuly inefficient in the Java code it creates, but is very powerful - you can make an entity relationship diagram, click a few buttons and you've got a fully working website ready for deployment. I can see all web development going this way soon...

    2. Re:Compuware by Frequanaut · · Score: 1

      "It seems to me that J2EE is totally over engineered and that something like OptimalJ is needed to make J2EE development competitive (developer time wise) with ASP or PHP"

      I think that pretty much hits the nail on the head. Frankly I'm sort of surprised people are still using J2EE.

  19. Whooha! Gartner is right this time! by KamuSan · · Score: 5, Insightful

    This is exactly my experience. I've been developing in Java for about 8 years and I think I met just 10 other people who really know their Java. And of those 10 people just about 2 or 3 are able to design an enterprise class application.

    It's not just Java developers, in the booming years a lot of people were hired by IT consulting firms here (NL) that shouldn't be near any computer at all. I've seen system engineers who studied politicology and got an MCSE who don't know the most basic thing about Windows and are not able to solve any problem at all. I've met tens of 'project managers' who don't know anything about IT and even less about software development and are too stubborn to listen to people who do know their shit.

    The worst of all are VB 'programmers' who are just able to point and click a basic application, but don't have any feeling for what a programmer should be able to do.

    The worst is title inflation. Every donkey is a 'software engineer' these days, and if you are able to actually design a piece of software you should call yourself 'architect', otherwise people won't take you seriously.
    Because 'programmers' are seen as monkeys that type and are doing a trick that every other monkey can do. :-(

    1. Re:Whooha! Gartner is right this time! by tjmsquared · · Score: 2, Funny

      The worst of all are VB 'programmers' The worst is title inflation So, the absolute worst is a VB Programmer who calls himself a Software Architect?

    2. Re:Whooha! Gartner is right this time! by hsoft · · Score: 2, Interesting

      The VB thing is absolutely right. And I was *lucky* enough to have this type of guy as my project manager. He first started the project with Delphi (which rules, as everybody know), and when I was hired there, I started talking about refactoring the whole thing after 3 months (Trust me, the project really needed (and still needs, since that refactoring has never been done ) it.), and this guy said: "I think we should rewrite the whole thing in VB".

      I then knew that I needed to work under another project manager. I had to argue a lot before he finally gave up about VB. Darnit, this guy programmed 8 years with delphi, and has absolutely no clue about what OOP is (He knows that he must add code in the OnClick events).

      I don't call these guys "programmers", I call them "barely-over-the-average users how can effectively point-and-click-and-sometimes-even-type-stuff". Hopefully, a lot of these guys are laid off because of the india outsourcing.

      There was a great comment about VB on ask.slashdot.

      --
      perception is reality
    3. Re:Whooha! Gartner is right this time! by Anonymous Coward · · Score: 0

      An equally meaningless statement would be: "The worst of all are those C programmers who are just able to type and ctrl-type a basic application, but don't have any feeling for what a programmer should be able to do."

      The proof is in the product, my friend, not in the language used and certainly not in the method used to input information to the compiler.

    4. Re:Whooha! Gartner is right this time! by forkazoo · · Score: 1

      >This is exactly my experience. I've been >developing in Java for about 8 years and I think I >met just 10 other people who really know their >Java. And of those 10 people just about 2 or 3 are >able to design an enterprise class application.

      Huzzah. I'm one of those 60+% of guys who will put Java on their resume because we've coded some stuff in it. If anybody asks me, I'll gladly explain that I've worked in it a bit, a few years ago. You know the old adage about how you can write Spaghetti C in any language? That's how I write Java. It all looks like C. I'm not especially ashamed of it, but I recognise that there are very few guys who really are able to fit the program with Java like a glove. It looks like C, so it's easy to get frustrated when it doesn't work exactly like C. The good Java guys are the ones who really grok object orientation and stuff.

  20. Not a surprise. by g_lightyear · · Score: 1

    I mean, let's be honest. If you write JSPs, you think of yourself as a java programmer; if you go to university and take a Java 101 course, you think of yourself as a java programmer.

    The first time you end up in a real project, you're doomed. The idea that 68% of the people who identify themselves as java programmers either wrote a bunch of JSPs, or took a few java courses and did the coursework for it, isn't exactly shocking.

    And given that it's Gartner we're talking about, a group of people who, throughout the dot com boom, exaggerated in the *extreme* the potential markets of a broad range of subjects, I wouldn't be surprised to find that the numbers are actually not as pessimistic as those made out; but that's just the nature of reports like this and those of other research groups - they're research. They represent reality in the same way as every other abstraction: they're a generalisation.

    The truth is probably more complicated and interesting.

    --
    -- A mind is a terrible thing.
    1. Re:Not a surprise. by cpex · · Score: 1

      I do think though that after graduating from a cs/ce program you have enough expereince to at least be a junior member on a java dev team (ok not every cs grad, some are pretty bad). You may not know all the real world aspects but can pick them up real quick. the whole J2EE concept may be foreign also but just need to get your feet wet. And then over time you can become a more seasoned professional.

  21. Imagine the statistics for C++ by metamatic · · Score: 2, Insightful

    The studies I'm familiar with showed that it took 5 years to become competent in C++, and that was before they added STL. So I suspect the statistics for the number of alleged C++ programmers who actually know the language would be even worse.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    1. Re:Imagine the statistics for C++ by Screaming+Lunatic · · Score: 3, Insightful
      The studies I'm familiar with showed that it took 5 years to become competent in C++, and that was before they added STL. So I suspect the statistics for the number of alleged C++ programmers who actually know the language would be even worse.

      I have been programming with C++ for 6 years now and I am competent with it and very productive. I would say 5 years is an overshoot if you're trying to gauge competence.

      I'm not sure what your definition of "knowing the language" is. If someone asked me to rate my C++ skills from 1 to 10, I would give myself a 4 or a 5. Anyone that rates themselves a 7 or higher is either named Sutter, Alexandrescu, Glassborow, or Stroustroup. Or is either grossly unfamiliar with the scope of C++ or flat out lying.

      Their were people that thought they new the language cold until Alexandrescu wrote Modern C++ Design and turned the C++ on end.

      I'm still trying to add policy-based design, template metaprogramming, and generics for more than just containers to my C++ arsenal.

      Give me 6 more years and I'll "know the language cold" until someone else writes a book on how to exploit a language feature of C++ in an absolutely different way.

      However, that is not a bad thing because C++ does not punish you for features that you don't know.

    2. Re:Imagine the statistics for C++ by e-Motion · · Score: 1

      I'm not sure what your definition of "knowing the language" is. If someone asked me to rate my C++ skills from 1 to 10, I would give myself a 4 or a 5. Anyone that rates themselves a 7 or higher is either named Sutter, Alexandrescu, Glassborow, or Stroustroup. Or is either grossly unfamiliar with the scope of C++ or flat out lying.

      Wow, you're allocating the top 40% of the scale to less than 1% of the C++ programmer population? Don't you think that's a bit extreme? Those guys are all 10s, IMHO. What good is a scale from 1-10 if interviewees can only use the lower 1-6?

    3. Re:Imagine the statistics for C++ by Anonymous+Brave+Guy · · Score: 1
      If someone asked me to rate my C++ skills from 1 to 10, I would give myself a 4 or a 5. Anyone that rates themselves a 7 or higher is either named Sutter, Alexandrescu, Glassborow, or Stroustroup. Or is either grossly unfamiliar with the scope of C++ or flat out lying.

      I'd give myself at least an 8, and I'd stand by that and justify it in an interview. C++ isn't that complicated, it just requires more than trivial "what I did at the office today" effort to learn what it can really do.

      Their were people that thought they new the language cold until Alexandrescu wrote Modern C++ Design and turned the C++ on end.

      No, he didn't. He introduced a neat idiom in policy classes, and showed some applications of design patterns using that idea. He also did a bit of work on template metaprogramming. While his book is impressive -- certainly I'll take nothing away from him in that regard -- concepts like template metaprogramming aren't rocket science, and have been well discussed among the on-line C++ community for years.

      In fact, a great many of the "advanced" ideas in C++ development today are just nicked from what's routine in other languages, particularly where emulating higher-order functions or closures are concerned. Some of the implementation tricks talked about by the experts are neat, but the concepts are nothing radical, and don't require some sort of ueber-guru badge to understand.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  22. Memorization vs Knowledge by Prien715 · · Score: 2, Insightful

    I don't really know what it means to "know" java. The language's entire approach is to be an object zoo rather than using a few elegant commands to do most anything. Therefore, most of Java programming is looking things up in the docs. That my friend, is the most important skill.

    There's a few main types of programming styles: Object Oriented (Java), Functionally Oriented (C), Procedurally Oriented (LISP), and hybrids (C++, Perl). Once you learn how to think in the way required by each of these styles, all that's left is memorizing syntax and commands. And that's what man pages are for.

    --
    -- Political fascism requires a Fuhrer.
    1. Re:Memorization vs Knowledge by kenthu · · Score: 1

      here's a few main types of programming styles: Object Oriented (Java), Functionally Oriented (C), Procedurally Oriented (LISP), and hybrids (C++, Perl). Once you learn how to think in the way required by each of these styles, all that's left is memorizing syntax and commands. And that's what man pages are for.

      I believe you had a typo in there. LISP is functional, and C is procedural.

    2. Re:Memorization vs Knowledge by TyrelHaveman · · Score: 1, Informative

      Just for clarification... your second paragraph is slightly confusing. I know you're talking about programming *styles*, not the languages themselves; but, anyway, my clarification:
      C is not a functional programming langage. It is a sequential programming language. Scheme, LISP, Haskell, etc. can be functional programming languages, although their implementors love to sneak in sequential stuff too.
      Functional programming languages only have functions. No loop structures. Your programs are just deep calls to functions (very often recursive). Examples I know are Scheme and Haskell. I assume LISP is too.
      Sequential programming languages can have functions, but they also have loops and are told to execute functions one by one in sequence. Examples of sequential languages are C, C++, BASIC, Java, VB, Perl, PHP, ...

    3. Re:Memorization vs Knowledge by Prien715 · · Score: 1

      Yeah, sorry. Typo. Though in all honesty, LISP (common lisp anyway) now has loops and objects and with structs, you could write object oriented C. Most languages include flexibility. The exception is Java, which pretty much forces you to go for OOP.

      --
      -- Political fascism requires a Fuhrer.
  23. Re:Why do people keep making excuses for Java? by the+eric+conspiracy · · Score: 2, Interesting


    It doesn't work well for an applet in a browser, and it doesn't work well for stand alone apps.

    Yes, and those are not the areas where Java has been very successful. However there are others, like server programming where Java is clearly the best choce.

    I think most Java programmers are like me, they played with it enough to find out it's not worth the trouble.

    I hope so. That will make it easier for those of us who actually understand Java and where it is appropriate to charge high hourly consulting rates.

  24. 32% Sounds Too High To Me by the+eric+conspiracy · · Score: 1


    From my experiences with the resume and hiring process I would put the number at more like 2%.

    And that applies not to just Java, but ANY programming language or computer skill. After all, how many people who put HTML on their resume can actually code clean standards compliant HTML 4.01? How many know when CSS layout is appropriate, and when it is not, and can successfully blend table and CSS layout in an optimal fashion?

    1. Re:32% Sounds Too High To Me by photon317 · · Score: 1


      Tables and CSS are orthogonal devices for laying out content anyways, a given project can use either extensively or not-at-all, and the use of one doesn't inhibit the use of the other.

      --
      11*43+456^2
    2. Re:32% Sounds Too High To Me by Trejkaz · · Score: 1

      Easy. Tables are for tabular data. CSS is for box layout, i.e. what 90% of the world, including Slashdot, still use tables for. ;-)

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
  25. And just what does this say to the Interviewee? by mosel-saar-ruwer · · Score: 2, Insightful

    Basically I set up a situation where I want to create a hashmap of numeric counters such that I am going to increment a million times, but only store 100k keys into the table, and ask people to write me the structure to do it.

    I have [or have had] a fairly extensive knowledge of the J2EE Collections Framework, and I don't have a clue what that "sentence" is supposed to say. In fact, screw the "sentence"; let's concentrate on the clause create a hashmap of numeric counters such that I am going to increment a million times, but only store 100k keys into the table. What does this mean? "Numeric counters" of what? "Increment" what? "Keys" into whose "table" of what?

    If I were the interviewee, and my prospective boss couldn't explain himself any better than that, then I'd give some serious thought to alternatives such as bagging groceries, hanging drywall, or pushing a mop.

    PS: You can make upwards of $20/hr hanging drywall; of course, if you don't wear a mask, the dust might take its toll on your lungs, but hey, we're young and we're gonna live forever, right?

    1. Re:And just what does this say to the Interviewee? by Anonymous Coward · · Score: 0

      Spot on, I have had bullshit interviews like that and I don't even waste the effort to answer properly because I know immediatly that working for a tight-ass like that would suck big time. I know how to solve real world problems and they take time, thought, planning and research. I don't know what a hashmap of numeric counters is, nor do I care.

    2. Re:And just what does this say to the Interviewee? by Repugnant_Shit · · Score: 1

      Yes, what on earth is that problem supposed to say? In the first post I realized that some people who are new to Java don't know that you can't store primitives in collections. But with the longer explanation I'm thoroughly confused.

    3. Re:And just what does this say to the Interviewee? by DrSchlock · · Score: 1

      create a hashmap of numeric counters such that I am going to increment a million times, but only store 100k keys into the table He means, map 100k keys to integers, then repeatedly ("a million times") access and increment those integers.

    4. Re:And just what does this say to the Interviewee? by dmorin · · Score: 1
      If I were the interviewee, and my prospective boss couldn't explain himself any better than that, then I'd give some serious thought to alternatives such as bagging groceries, hanging drywall, or pushing a mop.

      And if you honestly think that I spend as much time typing responses into a Slashdot thread as I do speaking with potential employees, you realllllly need to get a life.

    5. Re:And just what does this say to the Interviewee? by Anonymous Coward · · Score: 0

      You're a programmer. You should know what a hash table is what it's used for... You obviously haven't taken a data structures class, which is usually taught in the first year or two college.

      I don't blame the guy for wanting to weed you out.

      You're clearly not a proficient Java programmer, let alone a programmer up to par with college sophomores.

  26. functional by ArmorFiend · · Score: 1

    It is possible to program functionally in C, just avoid side-effects like you would in Lisp.

    1. Re:functional by Trejkaz · · Score: 1

      Look out for deep recursion too. You wouldn't want to compute something like 1000000! in C. :-)

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    2. Re:functional by ArmorFiend · · Score: 1

      I'm sure there are plenty of bignum libraries for C if you need them. And c++ is a language /designed/ to make bignums look & feel like ints.

    3. Re:functional by Anonymous Coward · · Score: 0

      I think he was referring to the likely result of calculating that recursively: stack overflow.

    4. Re:functional by ArmorFiend · · Score: 1

      Many C compilers do the tail-call recursion optimization.

  27. Please be satisfied with fantasy mod points. by mosel-saar-ruwer · · Score: 1

    I logged on this morning and discovered that my brief reign as a moderator had come to a screeching halt, but if I still had the points I had yesterday, I'd be in a real dilemma as to whether I'd call you Informative, Insightful, Funny, or what.

    They need to invent some uber-Adjective that means "All of the above."

  28. Is it any worse... by fm6 · · Score: 2, Insightful
    ...than employers demanding 5 years Java experience -- 2 or 3 years after the language was invented?

    But it is mind-boggling what people can get away with on their resumes. Knew a guy who claimed to have graduate degrees from schools whose names he couldn't spell. You'd think employers would spot that, but no -- he actually held a couple of director-level jobs at the height of the bubble.

    I really should get a little more creative with my resume. People who see it always ask why I don't mention where I got my 4-year degree. Answer: I don't have one. Which is a pain -- some companies won't even talk to me because of it. I could fudge up a degree from Whatsamatter U (double major, computer engineering and journalism). I'm sure nobody'd check. But I'm too much of a coward to pull off that kind of fib!

    Oops. Just had a thought. I know Java. My credentials are impeccable: I wrote the JDK release notes for almost a year, and I once played a video game with James Gosling! But I've never worked as a Java programmer, being absolutely the worst coder on the planet. But if the shortage of Java programmers is that bad, maybe that's not such a problem!

    1. Re:Is it any worse... by Hektor_Troy · · Score: 1

      So you'd do stuff like
      System.out.print("H");
      System.out.print("e");
      Sy stem.out.print("l");
      System.out.print("l");
      Syst em.out.print("o");
      System.out.print(" ");
      System.out.print("w");
      System.out.print("o") ;
      System.out.print("r");
      System.out.print("l");
      System.out.print("d");
      System.out.print("!");
      S ystem.out.print( \n);

      ?

      --
      We do not live in the 21st century. We live in the 20 second century.
    2. Re:Is it any worse... by fm6 · · Score: 1
      Well, I'm not that bad. I'm almost sure I could do better. Wait! You only need one print()!
      Output = "H" + "e" + "l" + "l" + "o" + " " + "W" + "o" + "r" + "l" + "d" + "\n";
      System.out.print(Output);
    3. Re:Is it any worse... by Trejkaz · · Score: 1

      Now if there were really a shortage, the headhunters would be out in force, offering me much more money than I'm worth for a job far easier than I already have. Yet, no headhunters until one called just ten seconds after I wrote that sentence, and even they didn't have a specific job.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
  29. "know Java" vs "programming java" is still legit by Anonymous Coward · · Score: 2, Interesting

    I list Java among my skills, even though I cannot write Java code worth a damn. And I'm not lying to the resume reader.

    I know what Java is, I know how to use the Java commandline to turn on Debugging, manage memory usage, turn off GC, etc. I know more about idiosyncracies in Java VM versions on 6 different platforms then most programmers.

    I never said I knew how to program Java.

  30. there is technology underneath it all by hak1du · · Score: 3, Insightful

    buzzwords rule the market from the big business' point of view.

    Java did represent an important step for industry beyond C++: it was the first widely accepted language with runtime safety, garbage collection, and reflection. Those aren't just buzzwords, they make a real difference.

    On the other hand, Java has failed to keep up: Sun's irrational insistence on insulating programmers from the underlying platform, their intellectual property claims and licensing strategy over Java, and their failure to evolve the language mean that Java has remained a poor choice for many applications.

    C# improves over Java in several of these areas: it is "just" a language (Microsoft actually doesn't seem to want you to use third party .NET implementations they don't control), it is an open standard, it has excellent facilities for interfacing efficiently with native code, and it addresses some serious limitations of the Java language. This is progress. However, even C# is still years behind the state of the art in programming language technologies.

    However, those who really know their stuff normally stick to the older languages... hype is good in some ways, but in the grand scheme of things, it's the older, better stuff that will prevail.

    You mean, older languages like Lisp, Modula-3, CLU, Smalltalk-80, Algol-68, Prolog, and Scheme?

    Or do you mean older languages like Visual Basic, C, and Fortran?

    There are good, well-designed older languages, and there are poorly designed older languages. Many people seem to stick with poorly designed older languages out of habit and because they don't know any better.

    If you are referring to C and C++, they are, in fact, relative newcomers as far as languages go, and they represent a significant step back over the languages that preceded them. And both C and C++ were enormously overhyped at their time.

  31. nonsense by hak1du · · Score: 1

    Knowing Java is very different from knowing programming. If you can't do a complex project in Java you can't do a complex project in any language

    This "languages don't matter" argument comes up again and again, and it is bogus. Yes, you do need to know programming in order to do well at programming, but that is not sufficient. You also need to know a language and its libraries inside and out in order to be able to design and implement large projects in it effectively.

    HR is far too hung up on what you have already done, not realizing that the data structures and algorithms are what counts, and they are the same in any language.

    In most real-world applications, algorithms and data structures are irrelevant: all the algorithms and data structures needed are implemented either in the standard library or the underlying database. The time isn't far off in which knowledge of algorithms and data structures will be about as relevant to 99% of the programmers as knowledge of VLSI design. That may be sad, but it is the way things are going.

  32. Because OO design is a fricken MESS by Tablizer · · Score: 0, Insightful

    OO design is all over the map. It is all based on opinions and different "gurus" have different opinions. I find very little consistency in OO designs. You might as well just slap classes and objects together until it works. Perhaps this is why Extremem Programming is becomming popular: it at least formalizes the trial-and-error incremental hacking process needed to get OO to work.

    On the other hand procedural + a big database is a lot more consistent. You group code mostly by tasks or events, and a normalized relational database becomes the river that connects all the individual tasks/events. The size of a given task/event stays relatively the same regardless of "system size". However, OO just turns into a big sea of speghetti classes interlinked in a pointer-like mesh such that you have to grok the entire system to know how any one peice works. Relational is more logical and refined than pointers. (Past bad procedural code was often caused by limited languages and/or lack of a database.)

    If there is a consistency to OO design, I have not seen it and/or OO fans don't agree on what it is. It just turns into an endless buzzword contest. OO has been the biggest boon for buzzword snakeoil salesmen in decades. Some say OO design is about modeling human interaction/resposibility, others say it models "little machines that interact" (Simula-style), and other say OO is something else altogether.

    The problem is not Java, but OO design. It is bankrupt. It has no center, no solid rules, and no consistency from guru to guru. Mod me down if you must, but it is the ugly truth.

    1. Re:Because OO design is a fricken MESS by TheSunborn · · Score: 1

      But what about all the task where you can't use a database at all? Things such as Photoshop, 3d studio, webbrowsers, compilers and so on.

      But the real problem with OO is that most people owerdo it, but I think it all come back to the fact that 2/3 don't really know how to code and design software, and no amount of language/tool support can solve that problem.

      And just to be a bit offtopic:
      Say I have a relational databaes, and an application used to access data in the database. The application is a "desktop" type application running at several people at the same time.

      Now say A fetch data from the database and view it in a table. Now B update the database that A views. Thus A has stale(old) data. How does B tell A that A need to fetch the new data from the database. B can't signal A directly because A and B don't know each other.

      The best solution would be if an application could register itself as a "listener" in the database to be notified when specified data changed, but I have newer seen a database that allow that. An other solution is not to allow the applications direct access to the database, but insted have all requests go to an task running at the databaseserver, but this seems as a bad solution too because you can't send sql to this application so you end up writing far more code then what should be needed)

      Martin

    2. Re:Because OO design is a fricken MESS by SlowMovingTarget · · Score: 1

      I've been wondering what you might think of n-tier EJB / EDOC style systems. Those styles of systems are actually procedural designs (sad but true). They are task and table oriented, they just happen to be implemented in an OO language.

      Well-designed OO code does not degenerate into spaghetti, any more than well-designed procedural code does. So much depends on the quality of the people creating the code that we often forget that the tools they use are less relevant than the skills they leverage.

      If there is a consistency to OO design, I have not seen it and/or OO fans don't agree on what it is.

      You've written a whole site on "Procedural-Relational Patterns" as a response to the GoF Design Patterns, so you must know that your statement here just sounds like you're ranting. I'll concede that I haven't always seen design, analysis, or architectural patterns applied consistently, but that again comes down to people.

      My take on OO? Well it depends on what view of the system you take. You can take an OO conceptual design and implement it in a procedural architecture with an OO language (the typical approach for EJB). You can go completely OO from the UI (NakedObjects)to the underlying language (Java) to the database (I prefer O/R mapping to OO databases myself). This often works quite well in keeping the code small and understandable. I have a background in Pascal but Java is currently my language of choice as I find I'm more productive with it. And no, I don't particularly like EJB.

      You mentioned Extreme Programming, a practice which orients the developer to producing small, loosely-coupled, tightly-cohesive modules. And if the code isn't that way the first time you create it, it adds a set of practices that aid the developer it putting it into that condition.

      This has little to do with "incremental hacking" but rather factors human cognitive progression (we gradually understand a problem and its solution) into the software creation process. You can apply agile processes to procedural or functional programming just as easily, although you'd be hard-pressed to find an "agile" book with C, Pascal, or COBOL examples in them.

      You group code mostly by tasks or events, and a normalized relational database becomes the river that connects all the individual tasks/events.

      So how many times must you encode the rules for "contributing" to the river consistently? Relational data constraints often cannot handle complex decisions based on individual values in a record or a set of related records. Business consistency must then be enforced with code in every task accessing the data. You must repeat code, or at best, explicitly call it without fail, to ensure 'the river' does not become polluted. In cases like this, OO languages provide more powerful tools to represent this knowledge and ensure its consistent application.

      Of course, there's no guarantee that a given developer will design with these tools (have a look under the covers of your average large EJB application and you'll see what I mean).

      Happy coding (or, seeing as how I work on Compuware's OptimalJ, happy generating (grin)). BTW: MDA != OO, although you can produce one with the other.

      Michael Murphree

    3. Re:Because OO design is a fricken MESS by cherberos · · Score: 1

      Consider me a noob, but I consider OO design to be a gift from heaven. It is easy to separate different aspects of a given job. You call functions from classes with a meaning. I still prefer the good old direct approach when the need is there (just now have a project to handle a weird ADC, which acts more analog then digital...), but that too can be wrapped in C++, in a function that disregards all OO-paradigms.

      And when all comes together, I dislike Java because it denies me the direct control over the hardware and memory, and I dislike C because it becomes a mess...So C++ is the answer.
      Still like to see a usefull combination (ie like combining the primitive 'native' cals in Java with C++, in a useable manner. Java is just too nice to leave alone).

      And no, I don't need any guru's to tell me what to do. The guru's can give pointers...(no phun intended). To give a peronal favorite: Bruce Eckel, with his Java and C++ books.

      --
      So "used" cases that used "unused" could break, though older compilers in essence used "unused" to mean both "used" and
    4. Re:Because OO design is a fricken MESS by SlowMovingTarget · · Score: 1

      I suspect you'd like C# then. It has C/Java-like syntax, a strong OO paradigm with escape hatches for direct memory manipluation (among other things). If you don't like Microsoft, that's OK too, as the Mono project has made some serious progress in producing an open source C# / .Net platform.

    5. Re:Because OO design is a fricken MESS by Tablizer · · Score: 1

      Well-designed OO code does not degenerate into spaghetti, any more than well-designed procedural code does. So much depends on the quality of the people creating the code that we often forget that the tools they use are less relevant than the skills they leverage.

      Well, if they are so good, they fail to turn it into words. I guess I believe that good design principles can be documented and put into rules of thumb without turning into a 700 page volume. If you cannot fit your design principles into about 3 pages or so, then something is wrong with your principle. (Of course, examples may take longer.)

      So how many times must you encode the rules for "contributing" to the river consistently? Relational data constraints often cannot handle complex decisions based on individual values in a record or a set of related records. Business consistency must then be enforced with code in every task accessing the data. You must repeat code, or at best, explicitly call it without fail, to ensure 'the river' does not become polluted. In cases like this, OO languages provide more powerful tools to represent this knowledge and ensure its consistent application.

      I would like to see a specific example, past claims that procedural "repeats" or fails have failed to be true when scrutinized. Encapsulation does NOT better protect data. That is an urban legend.

    6. Re:Because OO design is a fricken MESS by Tablizer · · Score: 1

      But what about all the task where you can't use a database at all? Things such as Photoshop, 3d studio, webbrowsers, compilers and so on.

      Those are generally not the domain of Java anyhow (at least not yet). I would note that I have considered the idea of a table-oriented interpreter as an experiment. Speed aside, I think it would be great idea.

      Say I have a relational databaes, and an application used to access data in the database. The application is a "desktop" type application running at several people at the same time.....Now say A fetch data from the database and view it in a table. Now B update the database that A views. Thus A has stale(old) data. How does B tell A that A need to fetch the new data from the database. B can't signal A directly because A and B don't know each other.

      Generally the user knows their view is stale, and to press the Refresh button to get fresh data. However, one can implement polling on an update flag/file/record, or simply refresh every X seconds if auto-updates are needed.

      I would need more info about the nature and context of such an app to choose the best approach. There are multiple approaches to solving such an issue. It can be confusing and problematic to change data in the middle of viewing or editing anyhow in my experience. A "snapshot in time" is generally cleaner anyhow, as long as the user has the OPTION of refreshing. But there are exceptions, and I have dealt with them.

    7. Re:Because OO design is a fricken MESS by Tablizer · · Score: 1

      and I dislike C because it becomes a mess...So C++ is the answer.

      I don't like C either (nor C++). It is too primative for my tastes. It might be fast and portable, but not very programmer friendly IMO. But C is not the pinnacle of procedural, I would note.

    8. Re:Because OO design is a fricken MESS by Anonymous Coward · · Score: 0

      Mod me down if you must,...

      Somebody took that as a literal challenge it seems.

    9. Re:Because OO design is a fricken MESS by SlowMovingTarget · · Score: 2, Informative

      You're correct, of course. The principles should be simple. They should be fairly compact, and like all principles, they should come from the well of experience. The principles for good OO design are fairly simple:

      Don't Repeat Yourself: knowledge should be represented only once in the system.

      Tell, don't ask.

      Classify objects in your systems by the messages they respond to, and the responsibilities they hold.

      An object should only call features of: a: an object passed into it as an argument, b: an object it creates, or c: itself (I think this is the correct form of the "Law of Demeter")

      Prefer short methods.

      Apply design patterns according to the problems they are intended to solve.

      When using design patterns, find the pattern that sets the context, this will help you identify other companion patterns that typically apply to the problem (or related problems).

      Design your code to be tested, or better, write test code to help flush out the design.

      Keep a nostril open for code smells, use refactorings and tests to fix the problem.

      ...

      Always remember these are principles and not rules.

      Now explaining those principles with code and narrative will fill up 700 pages if you give the whole history of how they came to be. Or you can just visit the pragmatic programmers' web site and read a bit less than 700 pages.

      I also agree that the typical notion of encapsulation doesn't necessarily protect the data. When most people think of encapsulating they think of putting a barrier of functions between a data consumer and the provider (I was revolted when I first saw this in Java, I think C# and Delphi do this better with the first class notion of property). But the other meaning for encapsulation is "to embody" the data. I think that ends up being a more powerful concept when properly applied than publishing getters and setters for attirbutes that might as well be public. The idea that some other object must consume (get) the data is the first warning sign that the design is deviating from the OO way of thinking (OK, OK, paradigm, there I typed it again). When an object embodies the data, encapsulation can, in fact, protect it. But I was actually thinking that polymorphism provides a better way to ensure consistent handling of data in an OO system.

      Ironically, MDA is closer to your concept of TOP than OOP is, as MDA is metadata-intensive and oriented to the creation of purpose-built syntaxes (modeling languages), although it is not specific to relational database access.

      You might find this flabergasting, but I'm tempted to believe that relational databases aren't all that necessary any more. Most modern relational database hold nearly all of their data in memory. That's the only way they can achieve the performance they do. Take Oracle databases for example. In my shop the Oracle instances we run typically hold 98% of their data in memory (we have big Solaris boxen). So why not use some sort of memory snapshot system like Prevayler? The answer, of course, is that too many developers find this scary. The other argument against this is 'reporting tools.'

      No, I'm not suggesting we all throw out our relational databases. But I do think there is life beyond relational data.

      Also, I didn't build an example of a bad procedural system for this post. I apologize. As you know, that takes a lot of effort. Instead, as a consolation, have a look here: http://www.nakedobjects.org/section6.html Their discussion is actually about the pitfalls of task-oriented UI design, but their arguments apply to this discussion. Task-oriented UI design typically goes hand-in-hand with transaction script architecture and falls prey to the same issues (I'll even add an 'IMHO' to that). I think you'll like their spaghetti diagram a bit of the way down the page.

      Thanks for the response, and the discussion.

      Michael Murphree

    10. Re:Because OO design is a fricken MESS by Tablizer · · Score: 1

      Don't Repeat Yourself: knowledge should be represented only once in the system.

      Not specific to OO.

      Classify objects in your systems by the messages they respond to, and the responsibilities they hold.

      I find these often artificial. In the real world the relationship between operations and nouns is often many-to-many and dynamic in the longer run, and OO is generally crappy at many-to-many relationships.

      Prefer short methods.

      Results in too much "packaging" IMO. One spends all their time managing interfaces instead of code that actually does something. Too wordy and bloaty for me.

      You might find this flabergasting, but I'm tempted to believe that relational databases aren't all that necessary any more. Most modern relational database hold nearly all of their data in memory.

      RDMBS and disks are generally orthogonal. A database is more than something to keep information if somebody trips over the plug. Disk versus RAM has almost nothing to do with the reasons for using a RDBMS.

      Prevayler's tend to be too language and/or paradigm specific. In the real world one often needs to share information with many systems, languages, and tools. Prevaylers are too insular.

      And they tend to reinvent the navigational DB's of the 1960's. Almost nobody complained about their demise until OO proponents tried to resurrect them for OO.

      Their discussion is actually about the pitfalls of task-oriented UI design, but their arguments apply to this discussion.

      I did not see any specific "failure scenarios" raised. Perhaps I missed it.

      Thanks for your feedback. Perhaps we can take this offline if it gets longer.

    11. Re:Because OO design is a fricken MESS by SlowMovingTarget · · Score: 1

      DRY is indeed not specific to OO. Design by responsibility and collaboration, on the other hand, tends to be.

      Many-to-many relationships between classes (verb-to-noun) are often handled the same way you handle many-to-may relationships in a relational database; with an intermediate entity (class) that serves as a go between.

      Good point about Prevayler and navigational / network DBs, but as for sharing data, or preferably services, with other applications, messaging protocols can accomplish this.

      It might not have been on that page but I thought they discuss problems in changing or repurposing code bases built with a transaction script style (or perhaps I read it somewhere else). I've actually seen such problems in practice (with both procedural and OO implementations), and it's usually the result of bad initial design. So we're back to people again.

      Regards,

      Michael

    12. Re:Because OO design is a fricken MESS by Tablizer · · Score: 0

      Many-to-many relationships between classes (verb-to-noun) are often handled the same way you handle many-to-may relationships in a relational database; with an intermediate entity (class) that serves as a go between.

      But you are then reinventing the database in your application code.

      Good point about Prevayler and navigational / network DBs, but as for sharing data, or preferably services, with other applications, messaging protocols can accomplish this.

      Same issue. Reinventing a query language.

      I like to say: let databases do what they do best, and code does what it does best. OO tends use app code to manage taxonomies/classfications, lots of attributes, and relationships between entities. This is not what it does well. At the very least, each programmer does it differently. RDBMS inject (somewhat) standardized ways to handle that kind of stuff. There is too much room for Picasso-ing around in OO.

    13. Re:Because OO design is a fricken MESS by Anonymous Coward · · Score: 0

      >>The best solution would be if an application could register itself as a "listener" in the database to be notified when specified data changed, but I have newer seen a database that allow that.

      Did that exact thing in a real-time control system that used the DB as a hub for the other processes. When a DB table was updated, the other processes that were registered as interested in that table got a IPC message.

      Check out FairCom's C-Tree. Small, fast, source code available. Not inexpensive.

  33. Troll? You must be joking... by Graelin · · Score: 3, Insightful

    Java is a very strict OO language. You cannot get anything done in Java without a myrid of class extensions and "implementations." This has the great benefit of allowing lots of developers to work on very specific parts of a project and not run into eachother very often. This has the very negative effect of discouraging creativity in the individual programmers work since so much is set in stone.

    Most Java programmers end up as class monkeys, taking very specific directions from a select few who determined the entire arcitecture of the system. This is not programming as an art. This is monkey work. Put them in a position where they need to use Java (or any language) to solve a real problem and they will fail.

    Java has had the misfortune of a gigantic hype machine pushing it. Because it could not live up to the hype in some areas a lot of people have dismissed it. This is probably less Java's fault and more the fault of those who consider it "dead." For they should look at the language and realize where it's strengths are.

    Java in the browser - DOA. It sucked. Still sucks. And nobody uses it anymore (or nobody SHOULD...)

    Java as an App - So it turns out that the whole "corss-platform" thing was a joke. Multiple JVMs across multiple OSes made for far too many variables. Write-once, run-anywhere it most certainly is not. And these days you have multiple GUI implementations and their VM/OS-specific quirks.

    Java on the Server - Ok, this has a future. Cross platform doesn't matter. Speed isn't an issue nearly as much. And there are a slew of components already available (J2EE) that do the hard part for you. ...Yes, that was two rants in one. It's twofor day here on /.

  34. Re:Why do people keep making excuses for Java? by Fizzl · · Score: 0, Troll

    All I can say is...
    Amen.

  35. Which is why standard C++ should be avoided by Ars-Fartsica · · Score: 1
    Never was a language so misued, so abused, so misunderstood, and more likely to cause a project to derail badly. For systems programming you are far likely to have greater success using plain C. It may be uglier but at least you will get the thing done.

    A better middle ground perhaps is like what the Mozilla folks have done - adopt C++ but make it understood that only a subset would be used.

    As for the anything-goes C++ approach...I advocate this strongly, for my competitors.

  36. Was this an article... by azuroff · · Score: 4, Insightful

    ... or an advertisement for OptimalJ?

    This has resulted in a tremendous backlog of projects," says Aad Van Schetsen, Compuware sales director for application development and integration solutions in the Europe, Middle East, Africa region.

    Ben van Niekerk, Compuware SA product manager, says locally the backlog is mainly in projects to integrate new applications into Java legacy code.

    Van Schetsen says the key to the success of tools such as Compuware's OptimalJ is their use of a model-driven architecture

    Tools like OptimalJ ensure best practices and standards as well as enable companies to leverage the core capabilities of their developers by allowing them to focus on applications and not the underlying technologies.

    "Although we are still in the education phase, particularly with less experienced Java developers and development companies, momentum is gradually growing with OptimalJ sales increasing threefold in the past financial year."

    1. Re:Was this an article... by jjct1 · · Score: 2, Insightful

      I think there are some people who say they know Java but are not that skilled, but I think 32% is way low. Maybe 65 to 70% of developers really know Java. This is just marketing fluff to try and sell a tool based on MDA which isn't going anywhere fast.

    2. Re:Was this an article... by SlowMovingTarget · · Score: 1
      "... Compuware... Compuware... Compuware's OptimalJ... OptimalJ... OptimalJ..."

      Uhhh... Thanks for all the free advertising, azuroff.

      (ducks)

  37. Schools teach it now by bangular · · Score: 0

    One of the reason there's so many people claiming to know java is because it's being widely taught in schools. They can write a rolling dice program, have the user prompt how many dice they want rolled, format results double spaced, and other practice problems from their book, but that's not real programming. When it comes to programming in school, almost nothing you learn applies to the real world. Taking a semester of java and then not programming in it again for 4 years doesn't make you a java programmer.

    The other problem is, java's been such a damn hype language. A lot of companies want java programmers, but they don't know _why_ they want java programmers. In reality, java isn't a good language and it's rarely the right tool for the job. It's marginally faster than Perl/Python (in real world applications, not looping benchmarks) and MUCH slower than c or c++. Swing is so slow it's almost useless, JSP lacks the rich text processing it needs to actually be a safe/useful cgi langauge, it's still relativly immature and incomplete, I could go on all day.

    But that's what the business world feeds off of, hype. So that's exactly what they get, vaporware applicants.

    1. Re:Schools teach it now by aled · · Score: 1

      JSP lacks the rich text processing it needs to actually be a safe/useful cgi langauge, it's still relativly immature and incomplete, I could go on all day.

      I beg to differ. What text processing capabilities do you find missing? A lot of people uses JSP for all kind of web apps without any troubles.

      And for inmaturity: Servlet/JSP have a third or four generation spec (2.4/2.0). One could guess the spec is very complete by now.
      There are many open source and commercial implementations of Servlets/JSP servers, most notably Apache Tomcat at version 5.0.19 (after the last few years 4.x and 3.x).
      If the standard isn't enough there are lots of tools, frameworks and libraries like Struts, Taglibs, Velocity (templating), etc. Most are de facto standards like Struts that implements a model-view-controller framework for JSP.
      Don't forget the usefulnes of standards to stop reinventing the wheel every time, something that some C/C++ programmers seem to prefer. Standards help lower the cost of development.
      If I would do my app in perl or python, how many options of compatible servers can I find? Just one each? IDEs? what about portable binary database drivers that don't force me to recompile my server or my app?
      If I would code in C for speed, how would I get database independent, portable code? And the text processing capabilities of C are nearer assembler than any modern language. But who does web projects in C these days?

      Java has a very nice fit in a big domain of problems, and does it fast enough.

      --

      "I think this line is mostly filler"
    2. Re:Schools teach it now by JohnKerry+(troll) · · Score: 0, Offtopic

      A lot of companies want java programmers, but they don't know _why_ they want java programmers.

      Companies want java programmers because of the lies of the Bush administration. When I ascend to the office of the presidency, I will ensure that companies use only 100% slashbot certified languages and platforms.

      --
      Give America's leadership back to the rest of the world - KERRY 2004
      Mod me up to show support.
    3. Re:Schools teach it now by bangular · · Score: 1

      >If I would do my app in perl or python, how many options of compatible servers can I find?
      Any server that supports cgi.

      >But who does web projects in C these days?
      No one, but I didn't suggest doing web projects in c either. I was speaking of non web projects.

      >And the text processing capabilities of C are nearer assembler than any modern language
      C's PCRE implementation of regular expressions and java's are almost exactly the same. So to say c's text processing is nearer to assembly is to say so is java's.

      >Don't forget the usefulnes of standards to stop reinventing the wheel every time, something that some C/C++ programmers seem to prefer. Standards help lower the cost of development.
      More libraries are written in c than in any other language. If a c programmer chooses to reinvent the wheel, that's their own problem. More than likely the needed library has already been written. And ANSI has been standardizing C since the 80's.

    4. Re:Schools teach it now by aled · · Score: 1

      >Any server that supports cgi.
      Isn't cgi kinda left behind the first generation of web apps? I wouldn't want to do a medium/complex web app with cgi for what I remember of it. CGI was simple though.

      >C's PCRE implementation of regular expressions and java's are almost exactly the same.
      It is not, because Java has a real String class in the language without the convoluted ways of C that only knows pointers and char arrays.
      I still would like to know what text processing you think Java is missing.

      >More libraries are written in c than in any other language.
      Absolutely true, but Java libraries are easier to reuse and put togheter even in binary format on any platform. C/C++ libraries usually requiere recompiling and/or some messing with data types at least. In C you have the added problem of poluted namespace, while in C++ each compiler makes a different name decorating.

      --

      "I think this line is mostly filler"
    5. Re:Schools teach it now by aled · · Score: 1

      Someone is going to have some months of free vacationship in Guantanamo it seems. You'll beg to be let write in Visual Basic.

      --

      "I think this line is mostly filler"
    6. Re:Schools teach it now by Anonymous Coward · · Score: 0

      In reality, java isn't a good language and it's rarely the right tool for the job. It's marginally faster than Perl/Python (in real world applications, not looping benchmarks) and MUCH slower than c or c++.

      What type of crack are you smoking? Much slower than C or C++? Except for load time (and especially since the Java runtime isn't preloaded when Windows boots like most MS's Windows apps), I find that Java code runs faster than C or C++, even considering that the Java class libraries are generally much more thread safe than your C/C++ libraries.

  38. I dont get Java like too many techies by mnmn · · Score: 1

    In college when they were trying to teach me Java, I wiggled my way out by proving I knew both C++ and pascal really well. I'm also allergic to C++, and will use it happily only if the API is QT (not MFC).

    I played with QBASIC for many years, made many little pascal apps, did quite a bit of Visual Basic, but was always a little allergic to C++. There were too many things I couldnt even conceptualize. C is so clean and easy, you can make tiny C programs, then read the assembly language and you understand everything. C++ seperates you from the hardware.

    Now Java takes that to another limit. Everything is in nicely packed boxes, you program and end up with something thats relatively slow. I know portability is a bid deal, which is why I'm a big fan of making sure my code is ANSI C 89 or 99 with no warnings, and I test it with gcc, borland c, visualc, forte, and intel compilers. Heck gcc compatibility alone will guarantee portability to Java's extent.

    Java does allow larger projects, but with too many developers who dont have a clear larger picture in their heads, the project will have the quality of Windows95 and changing the whole model becomes increasing difficult (think of how easily a new linux kernel version is released with everything rewritten, now think of the same in windows). I'm not bashing OO programming, I just think it has its place and that place is not EVERYWHERE.

    Java has really become a way to put the half-a-techies colleges are spewing like theres no tommorw to work. You put 20 of them in cubicles and give them parts of the project and they'll deliver. But is it the same as a good C/C++ developer who will understand everything in the project?

    --
    "Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
    1. Re:I dont get Java like too many techies by shibbie · · Score: 2, Insightful

      You seem to be a very much "old school" programmer whereby you don't adapt to new tech. This isn't a bad thing, especially if what you know works well but how long do you think you can afford to not learn new skills like Java? The OO programming paradigm is an evolution of programming languages designed to make it easier to replace parts of code that need changing (new GUI, database code etc) and aid ease of reading and understanding. OO should be used everywhere imho as its good programming practice. On a final note, you don't want ONE developer knowing a huge project. What happens if that developer dies? It will take a new dev ages to learn all of that code, not only that but what if that one developer is actually somebody who writes poor code? I'd rather fix a few objects than rewrite an entire system. P.S. Java is no longer slow, its evolved a lot since 1.1 days. After a few minutes on a server it can actually run faster than native code due to the VM containing a runtime optimizing compiler.

    2. Re:I dont get Java like too many techies by Anonymous Coward · · Score: 0

      OO... designed to make it easier to replace parts of code that need changing

      And therein is one of the areas where OO has massively failed to deliver, most of all in the form of Java - one could argue that perl (in OO and non-OO forms) has been most sucessful at code reuse/plugability, python, ruby, C++ even - but this is part of the hype that OO would create widespread code reuse and as far as I can tell Java and OO have delivered on that but the Free/Open Source community has in terms of projects that can be snapped together like legos to essentially fulfill the code reuse promise.

      not only that but what if that one developer is actually somebody who writes poor code?
      What many people here are talking about, and what I've seen is large groups of programmers who write poor code not just one. Unfortunately, my bad experiences are mostly with Indian Java programmers... one example, a project where we paid (not my choice and against my protest) over $1.5 million for a project and all the deployed jhtmls (they were afraid to use jsp's at the time) had the sample header code because none of the Java programmers knew or bothered to find out what code was OK to remove and they had more than 20 people on the project.

      In my experience I have found that Java and VB programmers seem almost equally inept, except that the Java programmers seem to come in larger groups.

    3. Re:I dont get Java like too many techies by Anonymous Coward · · Score: 0

      "as I can tell Java and OO have delivered on that but the Free/Open Source community has in terms of projects that can be snapped together like legos to essentially fulfill the code reuse promise.
      Projects aren't designed to snap together. Libraries are."

      Don't like Xerces? Use Crimson etc.... Likewise with GUIs (AWT, Swing, SWT, Thinlet etc). This is all code reuse, some can be done at an class level. What part is not reusable? If you mean replacing classes, this is done all the time and always has been, e.g. the eclipse core doesn't change much between revisions (relatively speaking). Plugins, bugs fixes and improvements mean minor class changes rather than vast rewrites - I'd say OO was a success in open source software.

      "I have found that Java and VB programmers seem almost equally inept,"

      There is a slight difference between VB and Java programmers I find. VB creates the application for you, just point and click, want a media player? Don't code any glue, just drag and drop. Java developers however need to have some idea of how to program, VBers generally do not (my last MD was not a developer but he could use Visual Studio...)
      Einstein once said "Intelligence is not the ability to store information, but to know where to find it." Of which poor VB programmers know neither.

  39. Re:Why do people keep making excuses for Java? by Anonymous Coward · · Score: 0

    Java is excellent in the server arena, especially with the (fairly) recent addition of the NIO package for high scalability IO.

    I think it also has a place for certain types of cross-platform GUI utilities. Swing ain't half bad now once you know some tricks, and IBM's SWT is looking even better. You exaggerate VM differences.. they're pretty consistent in their adherence to the Java Lang Spec. And I'm sorry but the statement "The entire VM concept is flawed." is just ridiculous.

  40. And... by Ieshan · · Score: 2, Funny

    78% of all statistics are made up. //smirk

    1. Re:And... by dicepackage · · Score: 1

      33% of all people will tell you that

  41. Thanks for helping preserve my sanity... by Anonymous Coward · · Score: 0
    Thanks to everyone here who has confirmed what I have been through at every job where there are Java (and VB) programmers. I don't know about everyone else, but I find in companies of any size, the problems that require solving revolve more around:
    • Satisfying constantly changing business requirements.
    • Hooking up legacy systems, data feeds, user supplied data in the form of spreadsheets, FilerMaker db's, etc and linking that crap into your system and then spitting out the data in a variety of forms.
    than any pure, stand-alone coding (in any language). I have never found any of these java programmers to step up and bring creative, out of the box solutions for any business need beyond displaying vailla web pages and even then there was non-stop bitching about how much work that was.

    Java was generally never the best tool to solve sticky problems, in part because the spectacular inertia associated with doing anything in Java (in my experience caused by the programmers and the language/libraries, even Java apologists admit that the JDBC libraries are a giant mess), we used sh, cgi, sql, perl and db utilities like bcp/sql-loader to build anything complex, needing non-http connectivity to something or needing timely implementation and we used Java for simply displaying things from the db usually in predigested form from tables denormalized by non-Java processes. Weblogic sucked, waddling along like some 400 lb sloth trying to make their way down the aisle of an econo class airliner. It did exactly two things, session ids and db connection pooling - and we paid dearly for those two things, we didn't need any of the other crap, but got it anyway.

    Whenever there was a pressing need for something that worked, and needed to be done fast, I wrote some cgi's that ran on thttpd. The business users in most places quickly figure out who to go to for real help getting things done, if they have a choice and if the "rules" don't prevent them from accessing those people.

    I am glad to see that there are still some people who haven't drown themselves in the OOD/P KoolAid (tm). I foresee a resurgence of simple paradigms, simple programming, and hopefully simple protocols and standards that can actually work rather than crap like UDDI and other new standards that are impossible to comprehend, much less implement. I think Aspect Oriented (AOP) will probably become more popular but I think its only a bandaid.
  42. I blame schools by miyako · · Score: 1

    ...more specifically, I blame my school and schools like it.
    Right now I'm attending a large university (formerly an "institute of technology") for a degree in Computer Information Systems, the main programming language they teach is Java (we also have to take classes on VB, PHP and COBOL, no C or C++ though)
    I like to think that I have a pretty solid understanding of programming (I had 5 years experience with C++ before I started school), but I had never used Java before, I am probably about average in it now (average for the people who actually know the language anyway). The quality of the classes at my school (and I suspect other similar types of school) is absolutely horrid, I mean I know a guy who got an A in the first level java class and was unable to write a console application to convert between farenheit and celcius, even when he was given a class to read input from the keyboard so he didn't have to use BufferedReaders or anything like that. I know people who are graduating this term, have 3.5s and 4.0s and were absolutely amazed at a simple app I hacked together in a couple hours to allow me to remotely manage the MySQL database that runs behind my website (yeah I know I could have done that in PHP, but I'd never had java connect to a database before and I thought it would be fun to write a java app to do so).
    What it comes down to is that there are a lot of degree factories that let people leave honestly thinking they know something about $subject when in reality they only know enough to be able to use a few of the right keywords in their resume.
    I don't know how many of these people I've just looked at square in the eye and informed them that they need to do some heavy personal-time learning or they might as well just quit, because with their knowledge the only thing they will be doing is getting outsourced to india 6months after they find a job. And yes, I realize that ALL of our jobs are in danger of being outsourced, but I would like to think that it is the clueless code-monkies (people who's entire skill set involves turning a comprehensive UML diagram into really shitty code) who are really in danger of losing their jobs, and not the serious programmers (people who understand how to actually solve problems, how to write good code, understand the subtle nuances of the various languages, etc).

    --
    Famous Last Words: "hmm...wikipedia says it's edible"
  43. This is even more chocking!! by Anonymous Coward · · Score: 1, Interesting

    I got my first Java job without any knowledge of Java at all!! chock!. Only after several days working with Java did I understand the basic packages java.lang, awt, applet, net and text!!

    Turns out a lot of the "very experienced/but selftaught java programmers" in that company didnt really understand object orientation and still wrote code that was completely unmaintanable even after several years!! but on their resume they can truthfully state that they know most of the language and api.

  44. This is nothing new... by tsvk · · Score: 4, Funny

    As long as there are people putting "I know CHMOD and Upload/Download" on their resumes, I guess anything is possible....

  45. 'Knowing' Java by cavalierlwt · · Score: 2, Interesting

    At what point does a person *know* java? I graduated a few years ago, and I listed Java on my resume. I had taken two semesters (Introduction and Client/Server) and felt like I should list it. I would venture a guess that no project done for a class rivals the complexity of a real world project, but are college students supposed to leave their resumes blank? Naturally I didn't list Java under the experienced listings,but under languages known. Maybe there should be industry standardized tests for each language, not unlike A+ certifications or Redhat Linux Certifications.

    1. Re:'Knowing' Java by Mongoose+Disciple · · Score: 1

      For what it's worth, Sun does have testing/cerifications for Java Developers. I'm too slothy to re-dig up the link at the moment, but I'm sure you can find it somewhere on java.sun.com

  46. Why just JAVA? by vatsal · · Score: 3, Insightful

    #) Isn't this true for every langauage....

    #) Building complex systems requires experience(on large projects and exp in a particular domain),no matter which language you are using....

    #) One good way to identify someone's love for a langauge or platform is to check for his participation and contribution to FLOSS. that loves ensures his personal interest and can be a pointer to the fact S/he is inquizitive and likes exploring more (not just learning the basic sytax required to do the job).

    --
    Linux: Self-mutilation is a snap.Be a geek!!!
    1. Re:Why just JAVA? by easter1916 · · Score: 1

      Nonsense. Not all, or even the majority, of good developers contribute to FLOSS.

  47. Re:Troll? You must be joking... by Anonymous Coward · · Score: 0

    Monkey-work is why Java is so big. It's designed to allow a select few [Sun...architects...32% who know Java] to dictate to the monkeys.

    So who cares if only 32% know Java. We 32% need the monkeys to do the work. That's why Java has so many restrictions and safety-catches on shotguns.

  48. Re:Troll? You must be joking... by BiggerIsBetter · · Score: 1

    Programming *shouldn't* be an art! Not if you're being paid to do it. The last thing I want on my projects is individual programmers getting creative. All that unmanaged creativity does is screw up the design we've spent hundreds of man-hours writing the spec for, testing the requirements of, and documenting in painful detail.

    "Monkey work" is the bread and butter that makes real applications happen. "Monkey work" is what we need to keep large projects managable. "Monkey work" is what can turn software development from a craft into engineering. If the design is good then it works damn well.

    /rant over

    --
    Forget thrust, drag, lift and weight. Airplanes fly because of money.
  49. It's like this... by BiggerIsBetter · · Score: 2, Insightful

    Remember the Matrix, when Keanu says "I know Kung Fu"? It's like that, only with Java. It doesn't mean you can puddle your way through a toy app, it means you make the language your bitch. It does what you want, when you want it, how you want it. Maybe you don't remember all the classes and their methods, but you know the common ones, and you can find the rest from the API in a flash.

    --
    Forget thrust, drag, lift and weight. Airplanes fly because of money.
  50. using OO language != doing OO programming by mattpalmer1086 · · Score: 1

    I think you need to examine your logic a bit here. Just using an OO language to accomplish a task does not make you an OO programmer, even if the language or compiler imposes some OO onto your fundamentally non-OO code. OO isn't about a language, or what a compiler does with the language. It's a way of deconstructing problems into objects and the way they interact. If you aren't doing that, you're not doing OO programming.

    1. Re:using OO language != doing OO programming by ClosedSource · · Score: 1

      Perhaps, you're not considering the difference between OO programming and OO design? Admittedly, the situation described barely qualifies as OO progamming but I think it squeaks by.

      In any case, this whole discussion is about putting Java on your Resume when you don't really know it. The post I was commenting on claimed that you didn't know Java unless you were doing OO programming (as he understood it). I disagree.

      You can know Java and successfully write code in in it without doing OO design. I wouldn't recommend it, but someone who does has the right to put Java on their Resume. They don't have the right to put OO design on their Resume, however.

    2. Re:using OO language != doing OO programming by mattpalmer1086 · · Score: 1

      You make a valid point about the difference between design and programming, but I'm still inclined to stick with my point ;)

      Few designs are going to specify every class and interface required. If you're an OO programmer, you will use OO constructs in realising a design. If you're a procedural programmer you'll use procedural constructs. In my book, this doesn't make you an OO programmer - just a programmer using an OO language. But we're arguing semantics here.

      You're right that the main discussion is really about putting Java on your CV. It's on mine, and while I can read the code, I couldn't write it in an interview situation. I have years of experience specifying systems written in Java and J2EE, as well as in many other systems and languages.

      I think part of the confusion is because Sun named both the platform and the language Java. I know the platform - but I can't code the language without a reference manual sitting by me.

      Matt P.

  51. Not true by Anonymous Coward · · Score: 0

    You can program "object oriented" in almost any language. You can program "functional" in almost any language. You can even program "declarative" in many languages. For some real abuse see Meta programming in C++ templates -- using compiler constraints to do calculations and actually making it halfway readable! Another similar abuse are programs written entirely in C preprocessor directives.

    And don't assume it is always ugiler. It may be a little akward sometimes but I've seen some nicely object oriented C programs.

  52. That's Jawa to you... by aapold · · Score: 1

    The indonesians renamed their islands (or various portions of them) from what we normally call them. So Java = Jawa, Sumatra = Sumatera New Guinea = Irian Jaya etc. But the main tragedy is we can no longer make puns about procreation in the Celebes Sea, as that island is now Sulawesi. Sincerely, the wild man of Kulimantan.

    --
    "Waste not one watt!" - CZ
    1. Re:That's Jawa to you... by zero_offset · · Score: 1

      But WAIT! That means these are the same Jawas that sold us R2 and 3PO!

      --

      Slashdot quality declines as the number of hot grits posts decreases. - Provolt's Law, Apr-09-2005

  53. Some Companies Encourage Lies by dicepackage · · Score: 1

    I remember reading postings on Monster, Dice, and Careerbuilder that asked for something like three years of C# experiance when it had just come out.

  54. Aku bisa berbahasa Jawa. Sedikit. by Anonymous Coward · · Score: 0

    Bahasa Jawa tidak sama Bahasa Indonesia.

    Give me job. :)

  55. Re:Troll? You must be joking... by DA_MAN_DA_MYTH · · Score: 1

    I agree that Java could be considered DOA on the browser because no one wants to deal with AWT classes.

    However checkout Thinlets , if this ever got widespread adoption I think we would start seeing more and more applets popping up. Being able to define interfaces with using xml allows people to just rip through and create interfaces likity-split, and the speed amazing.

    I guess the need for applets isn't as important anymore for rich-client applications due to the ease and success of Java Web Start.

    --
    "It takes many nails to build a crib, but one screw to fill it."
  56. Someday I should learn Java again by Animats · · Score: 1

    The language is straightforward enough. But I tried to do a few things in the early days, and between the AWT/Swing transition, discontinued development products, and Sun's annoying tendency to releaase huge half-implemented class libraries (remember Java 3D?), and the general realization that you don't write applications in Java, I got fed up and left.

  57. wreak / reek by Anonymous Coward · · Score: 0

    'wreak' to cause destruction, as in to wreak havoc
    'reek' to smell of, stink of, as in to reek of vested interests.

    You wanted the second spelling, I think.

    1. Re:wreak / reek by mrlpz · · Score: 1

      You're right..I did..thanks for the catch, I was perhaps just finished playing SoCom, and it must've still been on my mind...oh well..

  58. This is an advertorial by richard_za · · Score: 2, Informative

    This article is an advertorial, I am in the development industry in south africa and itweb.co.za is often used to dispense stuff like this. In fact some software products I have written myself were paid for and featured on itweb.

  59. Re:Troll? You must be joking... by wdnspoon · · Score: 1

    I think Java GUI's will make a huge resurgence now that SWT is gaining popularity.

  60. Death of Java by randall_burns · · Score: 2, Interesting
    Java from the start was _way_ overhyped IMHO. The big thing that Java was supposed to do early on:
    provide a development platform by which developers could do applications applications that would run either on the client or the server. The big problem is that Java never really delivered on the client end. Applets run, but they are so poorly engineered, in the words of Marc Andreeson "client side java is dead'--and Javascript has take much of the role it was anticipated that Java would take on the client.


    I previous poster made legitimate points that Java brought garbage collection, reflection and runtime safety into the popular eye. However, there are other widely used, well-standardized languages with those same features, namely Javascript.


    C# may be better in key respects than Java, but I have trouble conceiving of C# as a really open standard. The ECMA standard for Javascript is already supported by a variety of companies(i.e. IBM, Lotus, Microsoft, AOL/Time/Warner/Netscape) in a variety of products.


    The folks at have shown that they can extend Javascript quite a bit-even in browser implementations.For all of the talk of C#, one thing that is interesting about .Net IMHO is the they've provided an interesting platform for server side Javascript. If mono takes off at all on Linux, I'd expect we'd see a growth in the server-side Javascript community and the promised that were made for Java early on would start to be delivered through a different language.


    I'm a DBA and Perl/Python programmer. I've used Java for class projects at CMU. Java and C# both strike me as overly complicate for most of the work I do on a day by day basis. Javscript isn't there yet-but I can see that it might get there. There is a real niche for a well standardized, universally available scripting language that just hasn't been filled yet. If a small fraction of the engineering effort applied to Java were applied in this direction, I'd expect big benefits.

    1. Re:Death of Java by pcardno · · Score: 1

      Personally, I've continually found Javascript development to be the bane of my life - it's almost nonsensical at times and difficult to debug. But that may just be my lack of skill!

      Pretty much any client side language is difficult if you're trying to make it cross platform, but I think Java does a reasonably good job of it..

      Oh - and I'm on of the people who put Java on their CV and can REALLY do it! :-)

      --
      --- Band: Joey Ultra
  61. Re:"know Java" vs "programming java" is still legi by theghost · · Score: 1

    Your version of "knowing" java is like saying that the ability to hook up a power supply, motherboard, processor, and hard drive and install Windows on it makes you a system administrator.

    You know how to administer a Java app, but you don't know Java. If that's not what it says on your resume then you are lying. Your skills are needed and they're non-trivial - i'm Sun certified in Java programming and i don't know all the stuff you know - but if an employer says they want someone who knows Java then you're just wasting their time.

    --
    The only thing necessary for the triumph of evil is that good men do nothing.