• (cs) in reply to GoatCheez
    GoatCheez:

    What pisses me of the most is that he somehow doesn't know that he is completely incompetent when it comes to computers and programming. Sometimes people REALLY piss me off.


    Really, that's what incompetence is all about; not having that little bit of "self-check" software in your brain, that constantly asks yourself "am I doing this right? What are the cause of my problems? Is it me?"

    I remember when I was at college (almost a decade ago), there was really incompentent jerk.  It was our data structures class (i.e..... data structures in c++) and the stuff was hardly taxing; writting our own btree's, linked lists, stacks...that sort of thing.

    The thing is, the guy just didn't get it.  Our lecturer must have spent more time with him than anybody else in the class.  And one day, he comes out with the most beautiful comment.  He says;

    "I don't get it! I'm the smartest guy in the class! They must be teaching this stuff wrong, because I don't understand it".

    Umm...yeah. I promptly went back to writting my software rasterizer (told you the class was a breeze) pondering if I should threaten him with physical violence should he EVER talk to me again.
  • (cs) in reply to obediah
    obediah:
    ammoQ:


    Simply not true. At least in my experience (I have two kids, 4 and 7 years old). I always find the time to learn something if I want to.


    I envy your lack of hunger for knowledge. I couldn't learn everything I want to even with a bottomless trust fund and no personal relationships. Right now, I spend less time with hobbies than I plan on spending with my children, so spending less time developing professionally/academicly is unavoidable.

    Nonsense. Sorry pal, but all you have is just a vague imagination of what your life might be with kids. I have 7 years of hands-on experience in that topic. And you are absolutely wrong if you diagnose me with "lack of hunger for knowledge". I read lots of books, magacines, articles on the web etc.
    Whether or not someone is willing to take a risk is more a matter of personality. People who are unwilling to take a risk probably do not have kids anyway.


    Part of being a good parent is providing for the well being and future of your children.  As someone without children, I could take the risk of giving my two weeks notice, knowing I'd have a few months to find a new job before I felt a crunch.  The likelihood of running out of money before I find a job is low, and the consequences are mainly financial. If you add a child to the equation, the risk skyrockets. The chances of a child needing health care while I'm without insurance are much higher, also the consequences of losing my house etc, are much worse when I have a child's welfare to worry about.

    Again, you are wrong. Healthcare for my kids is not an issue, since I live in Austria. And while the consequences of failure are larger, so are the possible relative gains of taking a risk. Let me explain that in detail. Currently, here in Vienna, as an employee, I might have a net income of 2000-2500 EUR per month. Without kids, maybe even living together with a significant other who works fulltime too, this is enough money to live very well and put 1000 EUR aside every month. Where is the incentive to take a risk for those people?

    On the other hand, for a family with two kids and a housewife, it's just enough to live, but you are always short on money. Taking the risk of beeing a freelancer - who makes 3000-4000 EUR per month, but with less security - gives me 1000 EUR more per month. Those 1000 EUR matter. If I started a real company, the risk would be even bigger, but in contrast to the childless guy, it's my only way to ever get a Porsche in my life.
  • (cs) in reply to Rodyland

    Those people go to www.cs.mdx.ac.uk. "Don't have what it takes" is an unattainable goal for the vast majority of students there.

  • Gijs P (unregistered) in reply to ammoQ
    ammoQ:
    Anonymous:

    Care to offer a helping hand to a Java-impoverished reader?



    Well, let's take a lot at he source. <font color="#ff0000">Red</font> = error, <font color="#ffa500">Orange</font> = questionable.

    public <font color="#ffa500">abstract</font> class HomePage extends BasePage
    {
    <font color="#ff0000"> try
    {
    <font color="#ffa500"><font color="#000000"> public abstract Integer getCount();
    </font> <font color="#000000">public abstract void setCount(Integer </font><font color="#000000"><font color="#ff0000">int</font>);</font></font>
    }
    <font color="#ffa500"> catch (Exception e)
    {
    // catch (Exception e)
    }</font>
    </font>}

    abstract... well, of course there are many reasons when and why to declare abstract classes, but the first hello-world program is usually not abstract.

    try... The try block should appear in a method. It doesn't. Thus, the program cannot compile. Should be removed.

    public abstract Integer getCount(); ... looks ok (without the try {} around it)

    public abstract void setCount(Integer int); ... int is of course a reserved word, cannot be used as a parameter name
     
    catch block.... well, it does nothing and I wonder what the // catch comment should mean



    Hmmz, don't agree with all of that.

    First, if the try{} is an Error, so is the catch{} block.... mark it red. (No catch without a try first).

    And the getCount() method does not look ok to me. Since this is not an Interface but a Class, you need to implement a method body for it (and for the setCount too obviously). Also abstract is probably not what you want (allthough, with the entire class being abstract, you're screwed anyway).


    The real WTF here is of course the interview commitee. How can you hire such a guy. Next time throw in a few tech questions (what's the difference between a class and an interface would have been a nice one here ;-) )
  • (cs)
    Alex Papadimoulis:
    Some of the female readers (3 out of the 7 total, I believe), felt it was a bit sexist: come on, one of the worst programmers ever, and she just happens to be a girl?


    The Paula incident didn't make me worry about female programmers a single bit - everyone writes dumb code every now and then, and everyone is an utter newbie at one point.

    Besides, Paula was SO much more competent than this programmer. Not only did the Brilliant Paula Bean compile, but it also did something.
  • (cs) in reply to Gijs P
    Gijs P:


    Hmmz, don't agree with all of that.

    First, if the try{} is an Error, so is the catch{} block.... mark it red. (No catch without a try first).


    I've considered that, but since it is not a new error, but the continuation of the "try"-error, I decided not to do that. But that's a matter of taste.

    And the getCount() method does not look ok to me. Since this is not an Interface but a Class, you need to implement a method body for it (and for the setCount too obviously). Also abstract is probably not what you want (allthough, with the entire class being abstract, you're screwed anyway).


    Wrong, wrong, wrong. An abstract class can of course have abstract methods. Abstract methods cannot have a body.
  • (cs) in reply to ammoQ
    ammoQ:
    I always find the time to learn something if I want to.


    ammoQ:
    And you are absolutely wrong if you diagnose me with "lack of hunger for knowledge". I read lots of books, magacines, articles on the web etc.


    You simply can't have it both ways. Either you have time to lean everything you want, and therefore your hunger for knowledge is sated. Or you have a hunger for knowledge, which would result from not learning as much as you'd like.


    Again, you are wrong. Healthcare for my kids is not an issue, since I live in Austria. And while the consequences of failure are larger, so are the possible relative gains of taking a risk. Let me explain that in detail. Currently, here in Vienna, as an employee, I might have a net income of 2000-2500 EUR per month. Without kids, maybe even living together with a significant other who works fulltime too, this is enough money to live very well and put 1000 EUR aside every month. Where is the incentive to take a risk for those people?

    On the other hand, for a family with two kids and a housewife, it's just enough to live, but you are always short on money. Taking the risk of beeing a freelancer - who makes 3000-4000 EUR per month, but with less security - gives me 1000 EUR more per month. Those 1000 EUR matter. If I started a real company, the risk would be even bigger, but in contrast to the childless guy, it's my only way to ever get a Porsche in my life.


    You know your life better than I do. But I've known enough people at various stages in parenthood to know that not becoming more adverse to risks is very atypical - except for teenage parents.  It could be that because of your social structure and what not being a freelancer really isn't that risky for you. Or perhaps you're a little less sure about starting a real company than you would be otherwise, I assume the consequences of such a venture failing are greater with children? Regardless, good luck on the Porsche!
  • (cs) in reply to Unkown Coder
    Anonymous:
    We take though around 10% of the prescreens and 40% of the people we interview in person.


    Which 40%? Do I get to save my balls?
  • Hugh (unregistered) in reply to Erick

    Not just pliers - waterpump pliers!  Presumably for connecting up the coffe machine

  • (cs) in reply to obediah
    obediah:
    ammoQ:
    I always find the time to learn something if I want to.


    ammoQ:
    And you are absolutely wrong if you diagnose me with "lack of hunger for knowledge". I read lots of books, magacines, articles on the web etc.


    You simply can't have it both ways. Either you have time to lean everything you want, and therefore your hunger for knowledge is sated. Or you have a hunger for knowledge, which would result from not learning as much as you'd like.


    Using this interpretation, I would be hungry with or without kids, no matter how much I learn, my hunger would not be sated. But what really matters is: If you are (say) a C# programmer when your kids arrive, that doesn't mean you have to be a C# programmer for the rest of your life.


    You know your life better than I do. But I've known enough people at various stages in parenthood to know that not becoming more adverse to risks is very atypical - except for teenage parents.

    You have to compare those people with childless people of the same age.
    Are they (on average) more willing to take a risk?
    But of course "risk" means a different thing with kids. For example, without kids , it would not be risky at all for me to buy a decent house. Because the 2K p.m. income I can always get as an employee are more than enough to pay the mortgage of 1.1K EUR and still live. With kids, buying the house is a risk.

    It could be that because of your social structure and what not being a freelancer really isn't that risky for you. Or perhaps you're a little less sure about starting a real company than you would be otherwise, I assume the consequences of such a venture failing are greater with children? Regardless, good luck on the Porsche!

    For me personally, the consequences of a venture failing are the same - I'm broke. Of course it would affect my family too, but well, here in Austria the wellfare net is tight enough not to worry too much. So why haven't I started my big venture yet? Well, you know, the space inside a Porsche is a little tight for four persons ;-) Honestly, I don't feel ready for that adventure yet.
    And there is one problem with having kids: starting a new venture is a task that requires many hours of work per week, much more than the normal job of an employee or freelancer (except those working in a startup, maybe).
    It would be a problem for my family if I had to work 80 hours per week, for at least two years, to get the company running. Seems like my Porsche has to wait...
  • Adam (unregistered) in reply to po_pimp

    BS-ing a technical interview is easy

    I don't think so. A good technical interview should include specific questions such as "explain the concept of pure virtual functions" or what exactly does the "explicit" keyword do. These things are not in C++ 101.

    Of course coding tests are even better but this particular guy would have fallen if asked specific tricky Java questions.

  • Adam (unregistered) in reply to Brad
    Anonymous:


    <font color="#a9a9a9">The guy comes up with a code snippet that makes Paula's appear brillant (hers compiled) proving that the "15 years" was almost certainly a complete fabrication, yet the technical interview detected not a whiff of this.

    Conclusion: Paula must have conducted the interview!
    </font>
    The interview is the wtf.  Imagine what a riot it would be to watch a video of it.  Many ridicule "technical" interviews, but the fact is that no 2 "technical" interviews are the same: some may be very good, others more like Paula's.


    Actually this guys puts it even better, what I was just trying to say :)
  • (cs) in reply to ammoQ
    ammoQ:

    public abstract void setCount(Integer int); ... int is of course a reserved word, cannot be used as a parameter name


    WTF kind of language has both an int and an Integer?
    According to this you can't make a vector of int or use it as a key for a map!
  • (cs) in reply to danio
    danio:
    ammoQ:

    public abstract void setCount(Integer int); ... int is of course a reserved word, cannot be used as a parameter name


    WTF kind of language has both an int and an Integer?
    According to this you can't make a vector of int or use it as a key for a map!


    I guess it's for speed reasons. Autoboxing/Unboxing partially cures this artificial separation.
  • (cs)

    hahahahahaha, ain't that a keeper :P

    I mean, he only had 15 years of programming experience and my good, didn't he make a super duper job on that page ;)

  • (cs) in reply to danio

    danio wrote the following post at 08-25-2006 12:11 PM:
    WTF kind of language has both an int and an Integer?
    According to this you can't make a vector of int or use it as a key for a map!

    Even better, if a method has a parameter of some primitive type (such as int), you can still invoke the method using java.lang.reflect.Method.invoke() but you won't find it using java.lang.Class.getMethod().  At least it used to be this way, I don't know if this automatic boxing and unboxing in Java 1.5 might take care of that particular problem.

  • (cs) in reply to GeekMessage
    GeekMessage:

    Even better, if a method has a parameter of some primitive type (such as int), you can still invoke the method using java.lang.reflect.Method.invoke() but you won't find it using java.lang.Class.getMethod().  At least it used to be this way, I don't know if this automatic boxing and unboxing in Java 1.5 might take care of that particular problem.



    This is not true. But, there is a little pitfall: You have to specify "Integer" in the parameterTypes array where you expect the "int".
  • MurdocJ (unregistered) in reply to Gorobei
    Anonymous:
    Damn straight.  How did he pass the tech interviews?

    We keep them simple:  in depth discussions of linked lists, hashtables, or whatever.  It's a rare candidate that can nail these topics... the poseurs wash out by the second question, the good guys start sweating at around the fifth or so.  The guys we want to hire start saying "that's really interesting" at around question seven.





    Funny... when I interview for a job, it runs more along the lines of "tell me why I should work for you" and "prove to me that your organization isn't dysfunctional".  So around the 2nd question I see my interviewers starting to sweat.
  • (cs) in reply to ammoQ
    ammoQ wrote the following post at 08-25-2006 1:34 PM:
    GeekMessage:
    Even better, if a method has a parameter of some primitive type (such as int), you can still invoke the method using java.lang.reflect.Method.invoke() but you won't find it using java.lang.Class.getMethod().  At least it used to be this way, I don't know if this automatic boxing and unboxing in Java 1.5 might take care of that particular problem.
    This is not true. But, there is a little pitfall: You have to specify "Integer" in the parameterTypes array where you expect the "int".

    Nope, it still doesn't work with Java 1.5 either.  Or did I do something blatantly wrong?

    <FONT face="Courier New" size=2>D:\Projects\ExploreJava\DailyWtfReflect>del *.class</FONT>

    <FONT face="Courier New" size=2>D:\Projects\ExploreJava\DailyWtfReflect>set PATH=C:\Program Files\Sun Microsystems\jdk1.5.0_04\bin;%PATH%</FONT>

    <FONT face="Courier New" size=2>D:\Projects\ExploreJava\DailyWtfReflect>type DailyWtfReflect.java
    import java.lang.reflect.Method;</FONT>

    <FONT face="Courier New" size=2>public class DailyWtfReflect
    {
            public void TestMethod(int i)
            {
                    System.out.println("Welcome to TestMethod()");
            }
            public static void main(String[] args)
            {
                    try
                    {
                            DailyWtfReflect obj = new DailyWtfReflect();
                            Class cls = obj.getClass();
                            Integer i = new Integer(0);
                            Class[] params = new Class[1];
                            params[0] = i.getClass();
                            Method method = cls.getMethod("TestMethod", params);
                    }
                    catch(NoSuchMethodException x)
                    {
                            System.out.println("NoSuchMethodException:  " + x.toString());
                            x.printStackTrace();
                    }
            }
    }</FONT>

    <FONT face="Courier New" size=2>D:\Projects\ExploreJava\DailyWtfReflect>javac DailyWtfReflect.java</FONT>

    <FONT face="Courier New" size=2>D:\Projects\ExploreJava\DailyWtfReflect>java DailyWtfReflect
    NoSuchMethodException:  java.lang.NoSuchMethodException: DailyWtfReflect.TestMethod(java.lang.Integer)
    java.lang.NoSuchMethodException: DailyWtfReflect.TestMethod(java.lang.Integer)
            at java.lang.Class.getMethod(Class.java:1581)
            at DailyWtfReflect.main(DailyWtfReflect.java:18)</FONT>

    <FONT face="Courier New" size=2>D:\Projects\ExploreJava\DailyWtfReflect></FONT>

  • (cs) in reply to rusty
    rusty:
    GoatCheez:

    What pisses me of the most is that he somehow doesn't know that he is completely incompetent when it comes to computers and programming. Sometimes people REALLY piss me off.


    Really, that's what incompetence is all about; not having that little bit of "self-check" software in your brain, that constantly asks yourself "am I doing this right? What are the cause of my problems? Is it me?"

    I remember when I was at college (almost a decade ago), there was really incompentent jerk.  It was our data structures class (i.e..... data structures in c++) and the stuff was hardly taxing; writting our own btree's, linked lists, stacks...that sort of thing.

    The thing is, the guy just didn't get it.  Our lecturer must have spent more time with him than anybody else in the class.  And one day, he comes out with the most beautiful comment.  He says;

    "I don't get it! I'm the smartest guy in the class! They must be teaching this stuff wrong, because I don't understand it".

    Umm...yeah. I promptly went back to writting my software rasterizer (told you the class was a breeze) pondering if I should threaten him with physical violence should he EVER talk to me again.


    Uhhhhhh were we in the same class? A couple things you said rang some bells in my head lol. Was this at Duke by any chance?
  • levi_h (unregistered) in reply to GeekMessage
    GeekMessage:
    ammoQ wrote the following post at 08-25-2006 1:34 PM:
    GeekMessage:
    Even better, if a method has a parameter of some primitive type (such as int), you can still invoke the method using java.lang.reflect.Method.invoke() but you won't find it using java.lang.Class.getMethod().  At least it used to be this way, I don't know if this automatic boxing and unboxing in Java 1.5 might take care of that particular problem.
    This is not true. But, there is a little pitfall: You have to specify "Integer" in the parameterTypes array where you expect the "int".

    Nope, it still doesn't work with Java 1.5 either.  Or did I do something blatantly wrong?

    <font face="Courier New" size="2">D:\Projects\ExploreJava\DailyWtfReflect>del *.class</font>

    <font face="Courier New" size="2">D:\Projects\ExploreJava\DailyWtfReflect>set PATH=C:\Program Files\Sun Microsystems\jdk1.5.0_04\bin;%PATH%</font>

    <font face="Courier New" size="2">D:\Projects\ExploreJava\DailyWtfReflect>type DailyWtfReflect.java
    import java.lang.reflect.Method;</font>

    <font face="Courier New" size="2">public class DailyWtfReflect
    {
            public void TestMethod(int i)
            {
                    System.out.println("Welcome to TestMethod()");
            }
            public static void main(String[] args)
            {
                    try
                    {
                            DailyWtfReflect obj = new DailyWtfReflect();
                            Class cls = obj.getClass();
                            Integer i = new Integer(0);
                            Class[] params = new Class[1];
                            params[0] = i.getClass();
                            Method method = cls.getMethod("TestMethod", params);
                    }
                    catch(NoSuchMethodException x)
                    {
                            System.out.println("NoSuchMethodException:  " + x.toString());
                            x.printStackTrace();
                    }
            }
    }</font>

    <font face="Courier New" size="2">D:\Projects\ExploreJava\DailyWtfReflect>javac DailyWtfReflect.java</font>

    <font face="Courier New" size="2">D:\Projects\ExploreJava\DailyWtfReflect>java DailyWtfReflect
    NoSuchMethodException:  java.lang.NoSuchMethodException: DailyWtfReflect.TestMethod(java.lang.Integer)
    java.lang.NoSuchMethodException: DailyWtfReflect.TestMethod(java.lang.Integer)
            at java.lang.Class.getMethod(Class.java:1581)
            at DailyWtfReflect.main(DailyWtfReflect.java:18)</font>

    <font face="Courier New" size="2">D:\Projects\ExploreJava\DailyWtfReflect></font>



    No, AmmoQ was wrong:

    <font face="Courier New" size="2">public class ReflectionTestCase extends junit.framework.TestCase {
        public int pow (int x) {
            return x * x;
        }

        public void testFindingT () throws Exception {
            java.lang.reflect.Method pow = getClass ().getMethod ("pow", Integer.TYPE);

            assertNotNull (pow);
            assertEquals (4, pow.invoke (this, 2));
        }
    }</font>

    You can also use <font face="Courier New" size="2">int.class</font>, but that's being frowned upon.
  • (cs) in reply to GoatCheez
    GoatCheez:

    Uhhhhhh were we in the same class? A couple things you said rang some bells in my head lol. Was this at Duke by any chance?


    Not, I'm afraid not.  That means there are TWO of these idiots in the wild. Qick! We must cull them before they breed!
  • (cs) in reply to GeekMessage
    GeekMessage:
    ammoQ wrote the following post at 08-25-2006 1:34 PM:
    GeekMessage:
    Even better, if a method has a parameter of some primitive type (such as int), you can still invoke the method using java.lang.reflect.Method.invoke() but you won't find it using java.lang.Class.getMethod().  At least it used to be this way, I don't know if this automatic boxing and unboxing in Java 1.5 might take care of that particular problem.
    This is not true. But, there is a little pitfall: You have to specify "Integer" in the parameterTypes array where you expect the "int".

    Nope, it still doesn't work with Java 1.5 either.  Or did I do something blatantly wrong?




    You are unfortunately right and I am wrong, I must have confused it.
    Anyway, here is the REAL solution: Use Integer.TYPE as parametertype for getMethod().



    import java.lang.reflect.Method;

    public class DailyWtfReflect
    {
            public void TestMethod(int i)
            {
                    System.out.println("Welcome to TestMethod()");
            }
            public static void main(String[] args)
            {
                    try
                    {
                            DailyWtfReflect obj = new DailyWtfReflect();
                            Class cls = DailyWtfReflect.class;
                            Integer i = Integer.getInteger(null,0);
                            Class[] params = new Class[1];
                            params[0] = Integer.TYPE;
                            Method method = cls.getMethod("TestMethod", params);
                    }
                    catch(NoSuchMethodException x)
                    {
                            System.out.println("NoSuchMethodException:  " + x.toString());
                            x.printStackTrace();
                    }
            }
    }

  • (cs) in reply to levi_h
    levi_h:


    No, AmmoQ was wrong:

    <font face="Courier New" size="2">public class ReflectionTestCase extends junit.framework.TestCase {
        public int pow (int x) {
            return x * x;
        }

        public void testFindingT () throws Exception {
            java.lang.reflect.Method pow = getClass ().getMethod ("pow", Integer.TYPE);

            assertNotNull (pow);
            assertEquals (4, pow.invoke (this, 2));
        }
    }</font>

    You can also use <font face="Courier New" size="2">int.class</font>, but that's being frowned upon.


    Damn, you were faster than me :-((
  • cleek (unregistered) in reply to Captcha

    > one can still be an "expert" and not know a great deal about "protected".

    exactly.

    in the absence of inheritance, private and protected are essentially equivalent - and in my experience, even simple inheritance is uncommon. so i'm happy when i see protected or private at all. it tells me the programmer was at least trying to show the rest of us which member vars are open for external manipulation and which are for internal state, instead of making us guess...

    Get/Set functions? icing on the cake.

    not using a member variable in a derived class with the same name as one in the base class ?  priceless.

  • Mikko (unregistered) in reply to rusty

    Universities and jobs set absolute standards to competence, but by large, competence is a relative concept. The guy who wrote text adventures as a kid but couldn't make it through the c++ data structures class is considered incompetent by the guys who code software rasterizers for fun, but at the same time the software rasterize whizzes are considered incompetent by the global illumination gurus, and so on.

  • dave (unregistered) in reply to Richard Nixon

    I said: the photo of a vaguely puzzled-looking grey-haired programmer is kind of ageist, don't you think?

    Richard Nixon said in response: If it had been a woman in the photo, do you think it would be sexist? Or if it had been a black in the photo, do you think it would be racist?

    ----

    See, back there in the original article to which we're all replying, Alex mentioned that some women had previously complained that singling out the brillant Paula as 'one of the worst programmers' was a bit sexist.

    So, by analogy, illustrating the present article about a crap programmer with a picture of an older guy should invite accusations of ageism from the grey-haired programmer community (of which community I am a member).

    This was an attempt at a 'joke'. Maybe not a successful attempt, but an attempt nevertheless.



  • Grovesy (unregistered) in reply to cleek

    Anonymous:
    > one can still be an "expert" and not know a great deal about "protected".

    exactly.

    in the absence of inheritance, private and protected are essentially equivalent - and in my experience, even simple inheritance is uncommon. so i'm happy when i see protected or private at all. it tells me the programmer was at least trying to show the rest of us which member vars are open for external manipulation and which are for internal state, instead of making us guess...

    Get/Set functions? icing on the cake.

    not using a member variable in a derived class with the same name as one in the base class ?  priceless.

     

    I do not understand how someone could be an expert in a OO language, and not understand 'protected'. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>

    Protected and private would only be the same thing is the class was declared as sealed, many compilers will give you a warning if you have a protected member in a sealed class.<o:p></o:p>

    Perhaps not in your work place, but I have worked in many industries from banking to currently the online services group of a major software house, inheritance has been very common-place through out all. A rough example in a bank I was with several months back as a freelancer. We had the concept of abstract Products and Schemes. The Scheme and Product classes have several classes derive from them which were the actual concrete schemes and products which could be brought. <o:p></o:p>

    Coupled with polymorphism this becomes very handy when for example having to list all Schemes or Products, regardless of their actual concrete type.  <o:p></o:p>

    If we we're hiring even an ‘expert’ developer, as OO languages are our primary tool currently they would not get past the telephone interview if they could not accurately explain all off the main OO principles and give working examples. (Unless of course they were a DB dev, at which point they would be grilled on relational theory and algebra and asked to fully explain each and every normal form). Of course they would have to also display other traits such as problem solving, the correct aptitude, creative thinking and so on, though we are known for having one of the hardest interview processes, possibly with exception of Google. <o:p></o:p>

    If they we’re coming in as a junior developer, then the above would be very different and we would be looking much more at their aptitude and ability to solve basic puzzles over actual technical skills. <o:p></o:p>

     

  • (cs) in reply to dave
    dave:

    See, back there in the original article to which we're all replying, Alex mentioned that some women had previously complained that singling out the brillant Paula as 'one of the worst programmers' was a bit sexist.

    So, by analogy, illustrating the present article about a crap programmer with a picture of an older guy should invite accusations of ageism from the grey-haired programmer community (of which community I am a member).

    This was an attempt at a 'joke'. Maybe not a successful attempt, but an attempt nevertheless.


    This is a test. For the next sixty (or thirty) seconds, this forum will conduct a test of the Programmer Comedy System. This is only a test.

    If this had been an actual joke, you would have instinctively laughed due to the comical text that was presented.

    This concludes this test of the Programmer Comedy System.

  • Anonymous (unregistered) in reply to ammoQ

    abstract methods CAN have a body, but it's not mandatory...

  • (cs) in reply to tiro
    tiro wrote the following post at 08-24-2006 9:04 PM:
    It's a guy looking confused at a wrench, which is a very <FONT color=#ff0000>basic</FONT> tool.  Get it?

    Oh, so the real WTF is that he never bothered to learn Basic!

  • (cs) in reply to Gamer
    Anonymous:

    Actually, having kids just requires the applicants to pass a usually <font color="#ff0000">quite short </font>practical exam.



    Three points:
    1. You clearly do not have kids, nor have you tried to have them.
    2. I feel sorry for your partner.
    3. You're doing it wrong.

    Nothing personal. I just can't let a setup like that go unanswered.
  • (cs) in reply to levi_h
    levi_h wrote the following post at 08-25-2006 3:08 PM:
    <FONT face="Courier New" size=2>       java.lang.reflect.Method pow = getClass ().getMethod ("pow", Integer.TYPE);</FONT>

    Thanks, that's of course a lot easier than my WTF solution of calling <FONT face="Courier New" size=2>getMethod<FONT color=#ff0000>s</FONT>()</FONT> to get all of the methods, calling <FONT face="Courier New" size=2>toString()</FONT> on each of them in a <FONT face="Courier New" size=2>for</FONT> loop, and invoking the one that had <FONT face="Courier New" size=2>"TestMethod(int)"</FONT> in its description.

  • ARussell (unregistered) in reply to Brad

    He's giving us all the finger if you look closely ;)

  • (cs) in reply to themagni
    themagni wrote the following post at 08-25-2006 5:24 PM:
    Anonymous:
    Actually, having kids just requires the applicants to pass a usually <FONT color=#ff0000>quite short </FONT>practical exam.
    Three points:
    1. You clearly do not have kids, nor have you tried to have them.
    2. I feel sorry for your partner.
    3. You're doing it wrong.

    Of course, there can be quite lengthy sessions of interviews and negotiations before it gets to the practical exam stage.

  • (cs) in reply to Anonymous
    Anonymous:
    abstract methods CAN have a body, but it's not mandatory...

    Not in Java. Doesn't make sense anyway.
    My java compilers (jikes and javac) do not compile the following source file:



    public abstract class FooBar {
            public abstract void foo();
            public abstract void bar() { }
    }




    [erich@localhost erich]$ jikes FooBar.java

    Found 1 semantic error compiling "FooBar.java":

         3.         public abstract void bar() { }
                    ^----------------------------^
    *** Semantic Error: The declaration of the abstract or native method, "void bar();", must not contain a method body.
    [erich@localhost erich]$ javac FooBar.java
    FooBar.java:3: abstract methods cannot have a body
            public abstract void bar() { }
                                 ^
    1 error
    [erich@localhost erich]$
  • (cs) in reply to Anonymous

    Anonymous wrote the following post at 08-25-2006 5:12 PM:
    abstract methods CAN have a body, but it's not mandatory...

    <FONT face="Courier New" size=2>D:\Projects\ExploreJava\DailyWtfAbstract>javac DailyWtfAbstract.java
    DailyWtfAbstract.java:3: abstract methods cannot have a body
            public abstract void dummy()
                                 ^
    1 error</FONT>

  • (cs) in reply to Anonymous

    Anonymous wrote the following post at 08-25-2006 5:12 PM:
    abstract methods CAN have a body, but it's not mandatory...

    <FONT face="Courier New" size=2>D:\Projects\ExploreJava\DailyWtfAbstract>javac DailyWtfAbstract.java
    DailyWtfAbstract.java:3: abstract methods cannot have a body
            public abstract void dummy()
                                 ^
    1 error</FONT>

    I like how the compiler uses almost the exact same wording as the anonymous poster...  except for the "cannot" part, of course.

  • dasgsdgsd (unregistered) in reply to GeekMessage

    I'll never be able to find the web page ever again, but one of the creators of C# stated that boxing/unboxing was probably the biggest mistake they made in the .NET Framework.  There were other alternatives they had and they should have done.

  • Anon (unregistered) in reply to Dam Bugglin
    Anonymous:
    Anonymous:
    We just got rid of a guy here after a month and a half. Not to be age-ist, but he was 59 and typed/poked with his index fingers only. That is when he wasn't copy and pasting (he once c/p'd a 0, yeah the number). He could talk the talk if he wasn't near a computer, and you'd think he had a clue. Afterwards, he'd ask one of the other developers for help doing what you just covered how to do. An update to an existing site was estimated at 40 hours. He spent July on it. And it wasn't done, at least, not correctly/bug free. After he left, I was assigned to finish his latest task. I give you this snippet of vb code that is creating a WHERE clause in some sql.

    sqlString &= "WHERE IsActive = " & 1

    I stopped on this line for 5 straight minutes. Then I walked away from my desk.


    Huh?  How's this a WTF?  That's valid VB.  Besides you don't know what he tried before this... he could have used a variable in place of the 1, and changed it for testing later.  VB will cast the 1 to a string so it's not invalid code...



    Vb will cast the 1 to a string. That's my point. I'm pretty sure he did & 1 because he thought "the db field is a bit, not a string." This is from a query that ALWAYS needs to get only active records and that never changed. The "should we get active or inactive entries?" was never a valid concern. Only active ones are needed in the particular case in point. It may be valid vb, but it's not anything someone with a working brain would write. Maybe you didn't read the part where the guy doesn't know how to type (he copy and pasted a f'ing 0!!). We're talking about someone with zero problem solving skills, who didn't even know what a string delimiter is. This particular example is actually some of his best code. Other things I've run into would take more of an explanation, so I went with an easy to understand example.
  • derby (unregistered) in reply to Hugh

    Not just pliers - waterpump pliers!

    You brits are so wacky ... those are channel lock pliers

  • (cs) in reply to ammoQ

    I have 3 kids (5,3,2) and I still have time to flip through the newest stuff - pick out the stuff I find interesting and dig into the depth of that. I am currently digging through Ruby - my last stuff going back was PHP, Perl, and Java. Having also been bit by the agile movement I taught myself JUnit as well.

    Is it more difficult now with kids? Sure, but my defination of self does not start and end as Father. Among other things am son, husband, father, friend, and self.

    However, even while single I just do not have the personality to jump to a risky company on the off-chance I will strike it rich. I do not mind long hours when necessary, but I simply prefer working at companies with a good history as opposed to pop-up businesses with a single-threaded idea. I also enjoy working at companies with programming teams in the 3-6 range. The reason is that I thrive off of situations where ideas can churn, but things get too big and good ideas get lost to the more aggressive personalities.

    But that is just me.

  • (cs) in reply to Adam
    Anonymous:
    BS-ing a technical interview is easy

    I don't think so. A good technical interview should include specific questions such as "explain the concept of pure virtual functions" or what exactly does the "explicit" keyword do. These things are not in C++ 101.
    Of course, if the manager was a C++ hotshot and is hiring a PHP person, those questions wouldn't be very good when that person is more familiar with terminology like "abstract" and "interface"...
  • BRiaN (unregistered) in reply to dasgsdgsd
    Anonymous:
    Some "programmers" just don't like to learn new things.  And they like to wedge any problem they face into their tiny little paradigm.  It's really sad.


    When you're a hammer, everything looks like a nail.  (It's just soooo hard to accept that some will never be anything but a hammer.)
  • BRiaN (unregistered) in reply to obediah
    obediah:
    1) These people are just bad/lazy programmers. A 50 year old that fuddles around java and pines for COBOL probably took forever to learn COBOL and was probably never particularly good at it. If they were 25 now, they'd still be nearly as useless at Java.

    2) Second is the curse of the rut, usually exacerbated by Family (TM).  Most places aren't very interested in paying employess to tinker with and learn new languages, or even new paradigms. It's easy to get into a position where you are too busy to pick up a new language on the clock. If you decide to find a better job, all the sudden you find out your language is no longer the flavour of the week, and you find yourself being asked to check syntax or discuss the OO quirks of some new language. No worries, learning this kind of stuff is what the time between 5pm and 2am is for right? Enter Family, dun dun dun! Now 5pm to 2am is about spending time with your kids, and paying enough attention to your spouse to keep that ship running smoothly. Your ability to take risks, or pay cuts takes a giant nosedive and you start growing ulcers until before long your 45-60 and pining  java to a bunch of kids that program Quantum++ in 14 parallel dimensions until 4:00 AM every night.


    I don't buy #2 (except possibly in the short term -- new baby, marriage, divorce, etc).  Perhaps if someone worked in an environment where the bar was really high.  In my experience, such folks have plenty of fluff time to keep up to date -- they just happen to be #1ers using the #2 excuse.
  • (cs) in reply to danio
    danio:
    ammoQ:

    public abstract void setCount(Integer int); ... int is of course a reserved word, cannot be used as a parameter name


    WTF kind of language has both an int and an Integer?

    Haskell has both. Issue is that Java has them for crappy reasons ("native types" vs objects) while Haskell has them for more logical/performance reasons (Int is a native/machine integer -- with all the issues that come with it, mostly overflow -- and Integer is an unbound integer akin to Java's BigNum -- with the performances issues associated), and the interfaces are exactly identical (i.e., they're mostly interchangeable)

    Anonymous:

    I do not understand how someone could be an expert in a OO language, and not understand 'protected'.

    Maybe because Java isn't the end of all things in OO, and some (arguably more) OO (than Java) languages don't have protected methods? See Smalltalk or Python for instance. Or Simula, and I'm not really sure about Common Lisp's CLOS.

    On the other hand, I could say that I do not understand how someone could ge an expert in an OO language and not unrestand metaprogramming or properties, and yet no java won't teach you anything about them.

  • Kev (unregistered) in reply to Jud
    Anonymous:

    GoatCheez:
    Mark had FIFTEEN years of experience

    I consider myself to have three years of experience, five times.  I don't have fifteen years of experience with anything because the technology changes so frequently.

    I had a candidate come in recently that had "17.5 years" (I kid you not, right on his resume) of experience.  He even spoke about his extensive amount of time in the field during the interview.  Guess what happened when I handed him the keyboard?  Coding practices from 10+ years ago.  Thanks, I'll take a person with 3 years of experience that keeps current with technology.

    GoatCheez:
    I bet Mark had a CS degree too.

    In case you're wondering, I ignore this section of a resume because it has proven to be completely unuseful in determining qualification.  In my experience, the best candidates are about 50/50 degreed.  The worst come with a sheet of paper to back them up.  May work at some places, but not here.

    Sorry in advance for over-quoting.
    I have 20 years of programming professionally, and longer programming unprofessionally (take that any way you like). While it's true that specific skills become dated or can only have been acquired relatively recently, anyone with a brain, a pulse, and basic aptitude should acquire skills over time that do not date, and which are sharpened by experience. Programming requires the ability to think in a certain way, and the more you do it, the more naturally it comes. You also acquire the ability to recognise certain kinds of problems by smell.Well, something like that.

  • Grovesy (unregistered) in reply to masklinn
    masklinn:
    danio:
    ammoQ:

    public abstract void setCount(Integer int); ... int is of course a reserved word, cannot be used as a parameter name


    WTF kind of language has both an int and an Integer?

    Haskell has both. Issue is that Java has them for crappy reasons ("native types" vs objects) while Haskell has them for more logical/performance reasons (Int is a native/machine integer -- with all the issues that come with it, mostly overflow -- and Integer is an unbound integer akin to Java's BigNum -- with the performances issues associated), and the interfaces are exactly identical (i.e., they're mostly interchangeable)

    Anonymous:

    I do not understand how someone could be an expert in a OO language, and not understand 'protected'.

    Maybe because Java isn't the end of all things in OO, and some (arguably more) OO (than Java) languages don't have protected methods? See Smalltalk or Python for instance. Or Simula, and I'm not really sure about Common Lisp's CLOS.

    On the other hand, I could say that I do not understand how someone could ge an expert in an OO language and not unrestand metaprogramming or properties, and yet no java won't teach you anything about them.

     

    Ok, prehapes I should rephrase that. Someone who claims to be an expert in Java / C# or C++ / vb.net (or any other language that allows hiding of members from everything other than derrives types.

     

    Haskell has both. Issue is that Java has them for crappy reasons ("native types" vs objects) while Haskell has them for more logical/performance reasons (Int is a native/machine integer

    Are they not one of the same reason, it is more peformant in Java to use one over the other just like you said it was in Haskel? (you will have to forgive me, I am not a Java programmer)

  • (cs) in reply to masklinn
    masklinn:
    danio:
    ammoQ:

    public abstract void setCount(Integer int); ... int is of course a reserved word, cannot be used as a parameter name


    WTF kind of language has both an int and an Integer?

    Haskell has both. Issue is that Java has them for crappy reasons ("native types" vs objects)

    Given that the overhead of a Java object includes

    • allocation time
    • heap block overhead
    • more work for the garbage collector
    • a class pointer
    • a mutex
    • a condition variable
    I don't really see what's so crappy about not using them for routine calculations. Java was made to be useful, not to be pure at any cost. Unlike Haskell, which maintains theoretical purity at the expense of being a dog for practical applications.

  • (cs) in reply to cleek
    Anonymous:
    > one can still be an "expert" and not know a great deal about "protected".

    exactly.

    in the absence of inheritance, private and protected are essentially equivalent - and in my experience, even simple inheritance is uncommon. so i'm happy when i see protected or private at all. it tells me the programmer was at least trying to show the rest of us which member vars are open for external manipulation and which are for internal state, instead of making us guess...

    Get/Set functions? icing on the cake.

    not using a member variable in a derived class with the same name as one in the base class ?  priceless.

    In Java, protected variables are also visible to other classes in the same package.

    To reiterate, here are Java's four variable scopes: private int someCount;

    • Visible to objects of the current class.

    int someCount;

    • AKA package-private. Visible to objects of the current class and objects of any class in the same package as the current class.

    protected int someCount;

    • Visible to objects of the current class, objects of derived classes, and objects of any class in the same package as the current class.

    public int someCount;

    • Visible to everyone.

Leave a comment on “The Abstract Candidate”

Log In or post as a guest

Replying to comment #:

« Return to Article