June 2006


General19 Jun 2006 05:51 am

This morning I attended my first job interview during last 2 years period. I hadn’t arranged it before because I was pretty happy working for my current (still or yet) employer. Actually, I’m working for a large nation wide chain of supermarkets. If your are so curious to know it name you can find it out from my resume.

My start point is:

E0 – my current employer,
S0 – my current salary.
My goal is: to find a new job with more opportunities to become a high skilled Java developer with higher salary.
[TODO: compose a short post about: why do I want to change my current work place, what I seek and what I expect]

To achieve the goal I decided to apply for a set of open vacancies in well established western companies, then attend a few interviews and choose an employer that fits my needs best. As I mentioned before, today was my first meeting.

I’m eager to write down my fresh feelings and emotions because I’m afraid that after a while I forget it or become less interested in analysis of my mistakes. All names of persons and companies are hidden under faceless variable names.
I’m not going to show my attitude to any of employers I’ve dealt with. I’d rather like to investigate my own mistakes, to analyse my actions which potentially could be done in a better way.

What had been done before:

  • arranged my resume
  • reviewed OO basics, GoF design patterns
  • reviewed Java core by reading Bruce Eckel
  • have read a first part of the famous book about modern trends in interviewing techniques How Would You Move Mount Fuji?
  • have taken a bunch of extremely useful advices from my IT friends (special thanks to Alex Getman)
  • read inspirational articles about successful behavior during interview like Top 10 Interview Questions

In spite of great previously planned list, I honestly listed here only those items which I really managed to review.

On the interview

It took near an hour while I was talking with my potential team lead and project manager. To reveal my oral skills I was asked to describe my Master’s Degree thesis. It was my great mistake not to prepare for it. I was going round the mathematical problem and even didn’t said that I developed quite complicated Swing GUI application using Matisse and my custom Chart component. I didn’t touch on interaction through file system of GUI part with program which implemented a mathematical algorithm and written in Fortran. But interviewer swallowed it :) I was doing my Diploma for so long, therefore if I had been prepared for describing it in English today’s morning It would have been my star time. But I haven’t used this incredible chance.
After this tet-a-tet conversation with a project manager we were joined by an team leader. The team leader changed our topic into more technical one. I was asked a few technical questions: hash tables, transactional isolation levels, Ant, some theory like coupling and cohesion, RDBMS indexes (B-tree,…). But I wasn’t asked questions about lots and lots of my strong sides like multithreading, design patterns etc. I didn’t show my analytical attitude in problem solving and wide programming background. The only one reason of such a pity situation is that I didn’t capture their attention and didn’t lead them into my way.

To sum up, I’d like to say that as I understand (I haven’t received their decision yet) the overall effect that I’ve made is quite well. But it was from a point of view on a freshmen, a recently graduated student who are willing to start as a Junior Developer. And as long as I consider myself as an experienced Developer I must learn all my strategical mistakes and get rid of them. I’m feeling that I haven’t revealed all my good qualities. The total effect wasn’t as good as, of course, it could be, in spite of the level of my preparedness. I’m little bit disappointed.

And as a result of my analysis I figured out a few notes: (I suppose, this list as an incomplete and open for extending)

Strong sides:

  • I made an appointed at 9 a.m. when it’s not too hot in the office, it isn’t overcrowded and people are fresh. I was on time, I hadn’t got troubles with transport and wasn’t nervous as I could be in case I was in hurry.
  • I wasn’t nervous about my English conversational skills because I knew that I could more or less clearly explain what I think.
  • I have got quite a lot of developer’s experience and read lots of smart books which encourages me

Weak sides:

  • I hadn’t written a cover letter which would have positioned me as a mature Developer, not as a student as I was seemed afterwards.
  • My resume was transferred via ICQ as a link to my Internet page, so it didn’t lay on the table to HR manager, and wouldn’t stay there. Moreover, it was in plain html what is good for the Internet and open source community, but not for an office manager who don’t know how to print it.
  • When interviewer brought the printed resume, one major page was missed. I had got an extra copy with me, but I didn’t offer it. Probably I forget to do it because I printed it on a home level ink-jet printer.
  • The resume was, mainly, copied from my academic CV. It caused overloading of information about my education and wrong order of paragraphs. The main part which is obviously interested to an employer was hidden in the forest of my diplomas.
  • I hadn’t prepared a brief, clear and impressive messages about almost certainly asked questions: my diploma thesis, my current project, who am I and so on. You know, interview shouldn’t be an improvisation rather a well prepared acting.
  • A big pause after I was asked about my salary expectations in a year period when I’ll probably become a Senior Developer and hilarious arguments to defend my position. It was something like this:

       based on current market affairs and on level of salary which I’m gaining now and on the offer of increase which I’d be offered by my current employer if I told boss about my
    decision to leave company, bla-bla-bla-… BIG PAUSE (I was trying to don’t make mistake and don’t say 8$$ instead of 9$$ :) )

Don’t rely on interviewer’s telepathic skills, when you are saying something, try to ask yourself what of your positive side do you try to show!

Java14 Jun 2006 08:52 am

Yesterday night Kiev’s Java community was enjoying a great atmosphere which was established at the most fashionable place I’d never visited before – Orangerea Club (the penthouse part of the Mandarin Plasa center). EPAM Systems held BEA Forum with Peter Cooper-Ellis, executive vice president of the WebLogic Server Business Unit, as a guest star.

The event began a little bit after 7 p.m. and programmers could leave their work places without any hurry. I mean the programmers whose working day is 6am – 9pm like me. I came there right in time. At the entrance I was disappointed when I was asked by security guards to show my clothes in my bag. I don’t like such rudeness at all. And I think that their actions are not allowed by our Law. Their faces were showing that my disapproval didn’t care them at all. Ok, I swallowed it and quickly jumped into an elevator. While I was increasing distance from the ground, a gorgeous downtown scenery of tall, colorful buildings mixed with charming old houses was being revealed to my eyes. Before I was at the highest floor, I’d managed a brief conversation with another Java addicted person who I’d never seen before. We went upstairs a few floors more through dark chill out zone, and eventually discovered light and friendly looking white-colored large room with wide windows instead of walls. In other words we were at the penthouse. The sun was setting and Kiev was perfect.

I registered for conference and got a few useful sheets with related information and two vouchers that could be used for drinking beer and wine. Firstly, I found my co-worker which had already been there for 10 minutes to share my idea that Java rocks today :) We got a beer and continue socializing with our friends from university, and previous works. Unfortunately I don’t know the major part of the community, therefore I felt a little bit lonely there. It seemed to me that everybody had a great fun talking to each other and sipping juices. They’re laughing and enjoying themselves. As a background sound entertainment was playing a well known rock band “Nochnoy Kvartal”.

When visitors became hot enough, the main part started. After brief introduction of the EPAM representer, Peter started his speech. The presentation was mainly dedicated to the WebLogic application server. Peter mentioned that he had been with this server from the early beginning when BEA bought WebLogic company. As I’m not familiar with WebLogic I just listened carefully him and looking at slides shown at a wide-diagonal plasma monitor. Slides described the key points of the latest version of the cutting edge BEA product. I’m not going to describe here more particular aspects of presentation because as I understood he promised to upload it to the Internet.

After presentation he passionately was giving answers on developers questions. The audience showed deep interest in the main topic. I wanted to ask a question about clustering abilities of the considered application server, but shyness prevented me from that. I hesitated to do it for a few minutes and decided to ask Peter when he was alone. But it didn’t happen because of crowd of programmers who was discussing with him something. Ok, Peter, I’ll ask you next time.

As the last part of performance they organized a lottery with big range of valuable gifts. In spite of the fact that I didn’t win any one of them, it brings me lots of emotions, and I’m really happy that I stayed there and hadn’t left before.

I think that such events could form stronger Java community here that we actually have. What I noticed not depending on the event was people behavior. In comparison with previous gathering I saw a more mature Java community. Nowadays, Java developers in Kiev are not visiting such events only for eagerly seeking job but rather for relax and for fun. I figure out that it is a great sign, and I hope that one day we will host something like JavaOne :)

Java Rocks!!!

Java12 Jun 2006 11:54 pm

If you are tired of coping with errors like:

  • DBCP problem “Name jdbc is not bound in this Context”,
  • Cannot create JDBC driver of class ” for connect URL ‘null’,

take a few deep breaths, relax and check out this information:
The most probable cause of your problems is misconfiguring Resource section when you tried to bind a connection pool as JNDI resource. To improve this situations, you might find proper solution using this steps:

  • Check whether you’ve installed Tomcat 5.5. If you have, be aware that resource configuration in 5.5 version has changed. Here is an example of META-INF/context.xml file:
    [code lang="xml"]

    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="oracle.jdbc.OracleDriver"
    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
    url="jdbc:oracle:thin:@127.0.0.1:1522:ORADB"
    username="scott"
    password="tiger"
    maxActive="150"
    maxIdle="30"
    maxWait="10000"
    removeAbandoned="true"
    validationQuery="select dummy from dual"
    />

    [/code]

    (This file will be used by Tomcat as context description for this web application by renaming and copying it into /conf/Catalina/webapp-10.10.xml)

  • Check a WEB-INF/web.xml file of the installed web application, it should contain:
    [code lang="xml"]

    ...............

    Oracle database
    jdbc/webappdb
    javax.sql.DataSource
    Container


    [/code]
  • Put your JDBC driver (e.g. ojdbc14.jar for Oracle) in $TOMCAT_HOME$/common/lib directory.

RESOURCES:

Java12 Jun 2006 10:30 am

I’ve recently faced a problem with overriding static method. I wanted to do something like this:
[code lang="java"]
class A{
protected static void putUsefulInfo(InfoStorage storage){
storage.put(new Info("A"));
storage.put(new Info("B"));
storage.put(new Info("C"));
}
}

class B extends A{
protected static void putUsefulInfo(InfoStorage storage){
A.putUsefulInfo(storage);
storage.put(new Info("D"));
storage.put(new Info("E"));
}

}
[/code]

As a result, I figured out that in ordinary way it is impossible to use polymorphism. An overriden method is just hidden. I’m not going to paraphrase another useful articles, just visit them.

RESOURCES: