Some funny interview or pre-interview experience

By Rajib Bahar at November 28, 2009 09:41
Filed Under: Interesting, SQL, .NET

I have been through my fair share of technical interviews in various roles such .NET/SQL/BI developer. Thanks to putting on many hats in past/present consulting days. Most went well and few are worth a good smile. Please don't think I'm admonishing or looking down upon the people who asked these type of questions. It could happen to any of us (including me). My message is not meant to hurt anyone's feeling/thought/reputation/experience. 

Anyways, some time product-experience-requirement-type-questions can be crafted in funny way. For example, a recruiter may ask you for experience in product that is longer than even the product itself. For example, I was asked about the experience on "SQL Server 2008". I was literally asked "Do you have 10 years of experience on SQL Server 2008?" I felt like I dropped from the sky. At best if I recall correctly, I have used "SQL Server 2008" in 2007 (or later 2006) to try their Community Technology Preview or CTPs (as they are best known). I did correct that recruiter that it's not possible to have that many years of experience unless you were part of the team that developed the product itself or have access to confidential information. Needless to say he and I are good friends. I enjoy bringing him up to speed in my world, and he helps me learn about the business in general. 

Another type of questions involve the GUI. Yes, the dreaded GUI questions. I'll explain it shortly. It was a interview for a "BI Developer Role". They opened the interview by asking me where I can find the subreport button and under which section. I know the general area where that button is. It's on the right hand side on the "Business Development Studio." The 2nd part of that question involving "under which section" annoyed me. This question doesn't take into account "what if I have custom controls?" It'll surely make them rethink as those dynamically compiled controls will appear above and change the ordering of the section. I started considering whether this position will keep me happy. As the IDE itself is dockable so this kind of questions are not as relevant as one deems it to be. It shows that you are more excited about bringing in someone who may be unbalanced on business side of things (while a great technologist in heart). Once in a while I get invited to interview candidates. These are the type of questions I tend to skip. I'd not ask you about Crossword puzzle (though it could serve to show your intellect), philosophy (though it could reveal your personal ethics), or other completely unrelated skill that is not relevant to the job at hand. It may change depending upon the priority and the culture of the organization.

The most interesting type of interviews can happen when both the interviewer and the interviewee were misinformed about the subject area of the interview. In one interview I was instructed to prepare exteremely well for SSIS. So I went well prepared for the SSIS interview, and looked at the basic information on other areas. When the interviewer started, I realized it was a SSRS interview with focus on technologies that was not disclosed to me ahead of the interview. Was I surprised? 

These kind of scenarios may appear outrageous on it's face, but, I usually left those interviews with a smile in my heart and in my person.   

I am interested in learning what others faced. There is plenty of room for all of us to learn.   

 

Agile Philosophy

By Rajib Bahar at November 22, 2009 18:07
Filed Under: Interesting, .NET, SQL

This one quote has been in my mind for a while. I must have seen in someone's blog or update. The quote is “The illiterate of the 21st century will not be those who cannot read and write, but those who cannot learn, unlearn, and relearn.” Now, I remember... It was Michael Coates aka "The Pragmatic Evangelist", who wrote a blog entry on "Learning, Unlearning, and Relearning". That post helped me find the origin of this quote [http://blog.opsan.com/archive/2005/09/21/1588.aspx]. I learned Alvin Toffler is credited with it. He is a writer, journalist, and furturist. Compared to his journey, I feel like, I'm the opposite of an intellectual or outtellectual (is that even a word?) I think I just invented Rajib-ism.

One Guru in the techspace (Farhan Muhammad) told me technology changes every 6-12 months or so. Working as a techie dude, I realized/continue to realize every bit of what he said. I faced it when Visual studio 98, 2002, 2005, 2008, SQL Server 7.0, 2000, 2005, 2008 came out. One may want to point out, how is that 6-12 months gap? Well, these products also affect other dependent products which have to rush out there to make sure their tools of the trade are compatible or have some workaround. In my humble opinion, it's a reasonable generalization. The rule of the game is simple, we must be on the notice and at the edge of the cliff constantly. While most of the products are backward compatible, some times they are not forward compatible. That tends to make the job challenging, risky and rewarding. A solution that I may have written in .NET 1.0 world, will be completely different in the .NET 2.0 or it's successors. Similar thing happens in the SQL Server world. Either the previous solutions/methods/apis are outdated, deprecated, or we have more ways to do the same thing. This is where the learning of new tricks, unlearning of what you knew before, and relearning of how you solve a particular problem happens. A simple analogy would be some one who eats with chop stick. All of a sudden, the fork technology gets released. Now this person has to learn how to eat with the fork with proper balance, as opposed to the chop sticks. When he gets used to the forks, he has no need of the chop sticks. Anyways, I hope I'm not misusing this Toffler quote, like the way Darwin's "survival of the fittest" quote is. I did have few fun and engaging discussion with my college life biology professor on this. Interestingly enough, he's a George Harrison fan, but, I digress. We have to figure out how flexible we are as it relates to the changes.

One of my mentors, once admonished me, "Whatever you do, you must be consistent". I took that lesson to the heart, but, discipling myself to that principle is an ongoing challenge. Sometimes, I follow it quite well, and some times I have room for improvement. I wish I was a better mentee. Some time facts of life gets in the way and things get complicated. These days I try to be consistent by being agile to the challenge or issue at hand. We don't know what kind of facts we will face. As long as we work fairly and in good spirit, everything should move along fine. 

DLL Dilemma

By Rajib Bahar at November 20, 2009 06:10
Filed Under: Interesting

We all have some form of inner-gadget-freak inside. Sometime that entity manages to go overboard by installing every sort of interesting application on the laptop/desktop. Yes, I admit having multiple database servers running off of my laptop, and few open source servers as well. It's all good until the system is bloated and can not handle anymore. Does it ring a bell? Then you start noticing your laptop is the loudest voice in important meetings, lectures, or other related gatherings. That's when we get the motivation to start unloading every application on the system.  Along the way we manage to get rid of important system dll files. Then we probably crash our system or buy a new laptop. Now, the question is does it repeat for you every 6 to 12 months?

 

Here is a site I have used in the past in resolving DLL issues [http://www.dll-files.com/]. Hope it helps and please be extra careful in utilizing it (check for version, publisher, and other critical details). It's possible instead of fixing your issue, you may end up building new ones.

Search for data on any given database and on any column

By Rajib Bahar at November 18, 2009 15:47
Filed Under:
In some of my previous project, I had to find out whether a particular data existed on anywhere in any database. By that I mean, if I wanted to find out whether a particular data, for example, "manager" made in to any table. It's a trivial issue if you know the database table structure and column names. What if you did not have that benefit and wanted to do a massive manhunt for the data? I have written similar script such as the one below, and forgot to keep track of it in my library. Finally, my slowly deteriorating and dull memory served as a motivation for this post. The way it works is a) by getting list of all available databases, b) using dynamic sql to capture tables and column information, c) comparing sought after data against any column that can be converted to varchar type. If you need more explanation then comment please. 
 
Here is the snippet:
 

SET NOCOUNT ON

 

DECLARE @SoughtAfterValue VARCHAR(8000)

 

SET @SoughtAfterValue ='Manager'

 

DECLARE @Tmp TABLE

(

      ID INT IDENTITY(1,1)

    , DBName VARCHAR(255)

)

 

INSERT INTO @Tmp(DBName)

SELECT name

FROM sys.sysdatabases

 

DECLARE @i INT

DECLARE @total INT

 

SET @i = 1

 

SELECT @total = COUNT(*)

FROM @Tmp

 

DECLARE @sql Nvarchar(max)

 

WHILE @i <= @total

BEGIN

 

            set @sql= N'

            use ' +(

                SELECTDBName FROM @Tmp WHEREID = @i

            ) + '

           

            DECLARE @TmpQry TABLE

            (

                    ID INT IDENTITY(1, 1)

                  , Qry VARCHAR(8000)

            )

           

       

        if exists

                  ( SELECT

                  *

        FROM INFORMATION_SCHEMA.COLUMNS

            WHERE TABLE_CATALOG = '''

        +

            (

                SELECTDBName FROM @Tmp WHEREID = @i

            )

        + '''

            )

            BEGIN

 

            INSERT INTO @TmpQry (Qry)

        SELECT

                  ''SELECT CAST('' +COLUMN_NAME + '' AS VARCHAR(8000))[Result] '' +

                ''FROM '

            +

            (

                SELECTDBName FROM @Tmp WHEREID = @i

            )

                  + '..' + ''' + TABLE_NAME  

                  + '' WHERE CAST('' +COLUMN_NAME + '' AS VARCHAR(8000)) like ''''%' +@SoughtAfterValue + '%''''''

                   

        FROM INFORMATION_SCHEMA.COLUMNS

            WHERE DATA_TYPE NOT IN

            (

                  ''binary'',''varbinary'', ''image'', ''geography'', ''geometry'', ''timestamp'',

                  ''xml'',''hierarchyid'', ''sql_variant''

            )

 

            END

 

            DECLARE @i INT

            DECLARE @Total INT

            DECLARE @CurrentQryVARCHAR(8000)

            DECLARE @CurrentQry2VARCHAR(8000)

           

            SET @i = 1

 

            SELECT @Total = COUNT(*) FROM@TmpQry

           

            WHILE @i <= @Total

            BEGIN

                 

                  SELECT @CurrentQry = Qry     

                  FROM @TmpQry WHERE ID =@i

           

                  SET @CurrentQry2 = ''ifexists('' + @CurrentQry +  '') begin select ''''''+ REPLACE(@CurrentQry,'''''''', '''''''''''') + '''''' [Query Ran] '' + @CurrentQry + '' end''

 

                  exec(@CurrentQry2)

 

                  SET @i = @i + 1

 

                  CONTINUE

            END

           

      '

 

exec(@sql)

 

      SET @i = @i + 1

      CONTINUE   

END

  

AdventureWorks 2008R2 November CTP Beta is out

By Rajib Bahar at November 18, 2009 06:06
Filed Under: SQL

Two weeks ago I struggled to get the "AdventureWorks 2008" to work on my "SQL 2008 R2" server. I ended up building a 2005 version of it. It appears they have released a beta version of it for the R2 release at CodePlex. Help yourself at your own learning venture.

http://msftdbprodsamples.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24854

 I'll update this entry and/or have a followup entry as time permits to share my experience.

Tag cloud

Month List