No More Vegas
patrick — Tue, 2007-09-25 21:20
Well phooey.
Tuesday I ended up calling the consulting agencies that had contacted me about Las Vegas & Oklahoma City & neither had good news.
The agency with the Las Vegas job said that Las Vegas had decided to go a different route. I'm not sure if that means that they decided to outsource, just turn the jobs down, or just wait until they figured out what space they were going to have in the new building. The guy that gave me a tour of the building said if he did get somebody he wasn't sure where he'd put them as he really didn't have any space right then.
The other possibility is that they simply weren't impressed - I was tired from the long days before hand & I hadn't had any caffiene yet. My programming ability didn't impress me much except that I remembered a bit of SQL & I've not done much at all with a database or SQL (other than simple SELECT queries).
Several times when they asked technical questions I wasn't really quite sure what it was they were referring to. Then again, how much can you say until you give the answer away?
I don't remember how exactly the guy phrased his question, but after I asked what he was refering to I discovered that he was referring to the visibility of class methods & members. PHP 5 recognizes 'public', 'private', & 'protected'.
Another doh moment was when they handed me a piece of paper with a class on it & asked me if there was any kind of problem with the code & if so what would I change. Had I been awake, had I actually had my head in code even a couple days prior, had I been given time to actually realize the context... If you've done much OO you'll smack your forehead in seeing my doh. The class was 'Shape' & it calculated the area for both a square & a circle.
The guy gave me a break by asking if I knew what an interface was. At that point I mentally smacked my forehead. My response was, "Oh, duh... you'd make Shape a base class [an interface] that you could extend with other classes such as Square, Circle, etc. with each overriding the area calculation method."
They also had me write an if statement on the white board to check to see if a number was perfectly divisible by 2. I paused on this one - I've dealt with several different languages that all have different ways of calculating the modulus of a number. I've seen '\', '%', & 'mod' used as modulus operators & I was hoping I remembered correctly in that PHP uses the most common - '%'. After that I should have also asked what their preferences for if statements was. There are several ways in which to write this & I used the first without even thinking about writing multiple possibilities out (just some examples) -
if ( $num % 2 == 0 ) { echo 'true' }
if ( !( $num % 2 ) ) { echo 'true' }
( $num % 2 == 0 ? echo 'true' : echo 'false' )
( !( $num % 2 ) ? echo 'true' : echo 'false' )
They also had 2 sample tables with some sample data & wanted me to write a couple of SQL statements. The first I believe was simply selecting records from 1 table where the foreign id matched the id of a given name in the other table. Luckily this was a fairly simple SELECT statement & I think I aced it.
The next was displaying a count of how many records each person had in the table (based simply on ID) where the count was greater than 0. I think I got this 1 nailed, but I'm not sure. From what I remember the WHERE portion of the statement is calculated prior to the GROUP BY and the HAVING portion is calculated after the GROUP BY. So my statement ended up looking something like this -
SELECT COUNT( foreignID ) AS cnt
FROM table_name
GROUP BY foreignID
HAVING cnt > 0;
**********************************
Oklahoma City's response was disturbing. The consulting agency told me that they were looking for some one with a bit more OO experience. I'm not sure where this came from considering my discussion with the interviewer, but this brings up an interesting issue. How do you go about proving how much you know about OOP?
When I first kind of started figuring out OO in Java I started abstracting everything. Everything was an object to an extreme. Abstract classes whether I needed abstracts or not. Interfaces on almost everything. I ended up getting so bogged down on my personal project that I stepped back to take a look & realized how ridiculous it had become. Not only that, but times had changed & the original reason for the project was no longer there so I dropped it.
Since then I no longer abstract or interface just because it may be a good idea somewhere down the road. However, I do try to code with the realization that it may become abstracted farther down the road.
These days I don't have problems with dealing with simple objects & such. Where I run into issues sometimes is advanced programming techniques within certain languages & my fellow programmers. One of my previous jobs I was building alot of JavaScript objects & to do some of the operations I was needing I was doing some advanced child/parent reflection in certain objects & went one of the guys who I considered to be a top notch programmer. His comment was that although it was a good way of doing things out of the programmers that may possibly get stuck maintaining the code he was the only one who could probably figure out what was going on. In other words do something that requires more code, but is easier for Jim Bob who's not to familiar with OOP to figure out.
**********************************
Granted I originally had never thought about moving to Las Vegas, but after doing the research & then flying out there for the interview I was really hoping I'd get that job. The desert seems to be calling to me as I like warm weather & it's heading into winter. Not to mention the environment there was amazing.
Some of the issues I wasn't to excited about possibly having to deal with - i.e. they're slowly making a move from CVS to Subversion. I've used CVS in the past, but I've had alot of issues with it & I've never really figured out how to fix the few broken commits I've had. Subversion on the other hand does atomic commits - it does a rollback if there are any errors in the commit.
**********************************
Oklahoma City sounded like it would be an interesting environment as certain of their apps get a large amount of traffic. It will also be interesting to see how they evolve their business model to reflect the head of IT's belief that the newspaper will be disappearing.
Oh well - you win some, you lose some. I still haven't heard anything on any of the jobs in Kansas City yet.