Saturday, November 10, 2012

My Gift to myself : Startup weekend @ Cincinnati

After an year of trying, finally got to gift myself a weekend. Yes it was a long pending gift for some better retrospection and future re-expectation. Deliberately chose a location which was close to 4 hours away to give a enough time to meditate off the normal day today chaos.
I will try to put in the events in my day-o-day format.
Day 1:
Reached Cincinnati and drove directly drove to The Mets center. Location is a massive training facility and with an amazing infrastructure.
Registrations were pushed by 30 mins. Was the third one to check in. There you go the event kicks off

Networking, meet and greet. It was quite electric environment getting built up. Without much expectation I was living every moment and trying to absorb every bit of excitement of being with some nerds and agony of not taken any next steps towards my dreams. But that’s probably is a part of the plan – more or less.
Event unfolds. Usual anchoring starts with an anchor seemingly less prepared but still managing her ground. Quite interestingly,confirmed that she was the last minute pick for the MC. I don’t know what the heck that means…just can take a guess…must be something to do with anchoring the event.

Before the actual Day-1 pitch process there was a good trailer.Picking two random words and creating a startup (pitch) in 15 mins. Our words were “Bludgeoned” & “Princess”. We as a team were quite creative to carve a horny pitch out of the words we chose.
Then starts, the actual pitching process. i have had been intrigued always reading, seeing videos etc and hence  I definitely wanted to try my hands, and not leave any experience untouched in my first Startup weekend. I was one of the 17 pitchers (idea testers). There was couple of cool pitches. I personally like 2 and was quite amazed at the thoughts and catalysts for those.

Around the room, among the 50 current, to be entrepreneurs, I could see, everyone wanted a Developer, Designer on their teams, BUT no mention of tester. Felt this is the moment. So changed my pitch at last moment to give some mileage to the craft I am passionate of.
I think I did a good job of presentation, got a very solid feedback on the idea. But since it was a service driven idea, it was not “SEXY”.During voting, I expectedly got only 2 votes. All the ideas with >6 votes were supposed to create teams.

Now came my pivot. Quickly changed gears when I knew my idea is out of race, started to dig into the 2. I liked the most to be apart. Split up, went with my gut and joined the idea targetting the education of youth. We got together and there you go the actual fun started.
We got into the room and started the actual work I had been looking to. Our team had Ryan (idea owner), Andrew (Developer), Eric (Developer), Suraj (Developer),Mark (still unclear) and myself (Test architect)

After the usual round of introductions, talking about our strengths and weakness we hit the ground running. Spent the 1.5 hours to hash out the ifs and buts, bells and whistles and focus for the next 50 hours or so.
This was probably the meat of the day-1 effort, where we got disciplined and streamlined the features we would working on for the next 48 hours, workflow and prototyping strategy.

Key take away’s personally on Day 1

1.       There is a lot of passion around, so need to get addicted to the same

2.       Ideas are good, but it’s just a first step. Fun is taking the plunge and executing on the idea
Day 2…will be on its way Sunday morning…

 

Wednesday, August 22, 2012

Can Defect Density have an UCL, if so Why it should?

While doing my usual morning readings, in a totally separate context, i had a question that started to haunt me. I tried to ignore but then the urge to think about it got stronger every fleeting minute. Question was/is - About Defect Density? Can DD have a UCL, if so Why it should? I started to retrospect on experience i have gained, learning's i learnt and start to contemplate on various perspectives. My perspective still going strong compells me to say Since LCL & UCL are benchmarks set for a certain metric to track that means they imply . ....At least and At Max. W.r.t DD it is basically the ratio of total number of Valid defects to the total uniquely executed test cases. Considering the two premise, i feel DD is a measure of Code quality more than tester's ability to find defects. From testing perspective, it perfectly makes sense to say that we will find atleast x% defects (read LCL). But when we start to call out that from very same testing perspective this is the Max defects we can find, we start to tread a wrong path. Isn't it? Because there is no heuristics, no model, no methodology to tell the max limit of defects testing team (or tester) can find. If on different platform we can always can calculate the Defect Injection rate (the total minimum # of defects that will be there)...but NEVER MAX. Secondly Even a developer cannot give a commitment to the max defects that can be found in his/ her code. Hence my strong opinion has it that no matter what we can never set a benchmark for Max density (UCL). If thats the case, then WHY is it that while formulating the SOWs, SLAs we always put a LCL & UCL for Defect Density as well. Is it not the time for a challenge to our canned approach? Let me know your thoughts...so that we can create a disruption in the way we have been working all this while... - Manav Ahuja

Friday, June 08, 2012

Online Seniors? What?

There are over 21 million ‘online’ seniors (65+) only in US and can you imagine their digital trend: see below Picture Source:- Forrester Blogs Amazing potential and incredible opportunity....Entrepreneur within is jolting me :-) - Manav Ahuja

Saturday, April 28, 2012

SQL structures in Business Intelligence (BI) Testing - Top "10" learnings

Business Intelligence Systems are designed to provide strategic information for analysis. Some of the features of Business Intelligence Systems are:
1) Database designed for analytical tasks
2) Data from Multiple Source Systems
3) Read-Intensive Data
4) Availability of Current and Historical data
5) Ability for users to initiate reports

A few of the common terms used in BI space are:
a)Source Systems
b)Staging Area
c)Data Extraction, Transformation and Loading (ETL)
d)Enterprise Data-warehouse (EDW)
e)Reporting (Drill through reports)
f)UI components such as – Cubes, Dimensions & Measures
g)FACT tables, Dimension Tables
....etc

With the basics out of the way, lets jump on to core of the post – Top 10 potshots for solid SQL Structures:

1.Alias Names should be consistent across different SQL’s and should be sensible. Have a standard for alias names. For example –All fact tables should have alias names starting with ‘F’ and all dimension tables should have alias names starting with ‘D’. This enhances debugging

a.Fact_Company FCOM
b.Dim_Company DCOM

2.Use ‘ISNULL’ clause whenever there is data comparison between 2 columns. The SQL server does not compare NULL values. Hence if the NULL value is converted to some numeric/text value we can compare those records as well

3.Add appropriate comments wherever required

4.To make the SQL statements more readable, start each clause on a new line and indent when needed. Following is an example:
SELECT EMPID, FIRSTNAME
FROM DBO.EMPLOYEE
WHERE TITLE LIKE SALARY% AND COUNTRY=‘ABC’

5.Use DISTINCT clause only in SELECT statements if there is a possibility of duplicate rows. The DISTINCT clause creates a lot of extra work for SQL server and reduces the physical resources of other SQL statements.

6.Avoid ‘NOT IN’ condition as far as possible because it offers poor performance. Instead use one of the following
a.Use EXISTS or NOT EXISTS
b.Perform a LEFT OUTER JOIN and check for NULL condition

SELECT STG_EMP.EMP_ID
FROM DBO.STG_EMPLOYEE STG_EMP
WHERE EMP_ID NOT IN (SELECT EMPLOYEE_ID FROM DBO.DIM_EMPLOYEE)

Runs Slower Than

SELECT STG_EMP.EMP_ID,DIM_EMP.EMPLOYEE_ID
FROM DBO.STG_EMPLOYEE STG_EMP LEFT OUTER JOIN DBO.DIM_EMPLOYEE DIM_EMP
ON STG_EMP.EMP_ID=EDW.EDW_EMPLOYEE_ID
WHERE EMPLOYEE_ID IS NULL

7.Avoid using ORDER BY in the SELECT statements unless it is really needed because it adds a lot of extra overhead

8.UNION combines the result sets of 2 or more "select" queries. It removes duplicate rows between the various "select" statements whereas “UNION ALL” query returns all rows (even if the row exists in more than one of the "select" statements). Use UNION ALL instead of UNION when you are sure that the result sets of select queries are distinct. This prevents the UNION statement from trying to sort the data and remove duplicates, which hurts performance.

9.Avoid using SELECT *. Always write the required column names after the SELECT statement, like:

SELECT EMPLOYEEID, FIRSTNAME

This decreases the unnecessary disk I/O

10.When there is a choice of using the IN or the EXISTS clause in SQL, prefer using the EXISTS clause, as it is usually more efficient and performs faster. Consider the following example

SELECT STG_EMP.EMP_ID
FROM DBO.STG_EMPLOYEE STG_EMP
WHERE EMP_ID IN (SELECT EMPLOYEE_ID FROM DBO.DIM_EMPLOYEE)

is less efficient than

SELECT STG_EMP.EMP_ID
FROM DBO.STG_EMPLOYEE STG_EMP
WHERE EXISTS ( SELECT 1 FROM DBO.DIM_EMPLOYEE DIM_EMP
WHERE DIM_EMP. EMPLOYEE_ID = STG_EMP.EMP_ID)

Bonus Tip - When there is a choice of using the IN or the BETWEEN clauses in your Transact-SQL, use the BETWEEN clause, as it is much more efficient.

Disclaimer: The best practices listed are a result of my learning’s from encounters with seasoned DWBI geeks.

-Manav Ahuja

Thursday, January 12, 2012

Testabulous 2012

Wow, what a hiatus it has been. Almost an year since i last posted. With dawn of new year, atleast i hope to work on one of my resolutions - to blog as frequently as 1/month and not 1/Year.

With that promise, lets break the hiatus with a new year note to our community.

This post has been unique right from the point when I thought I need to break monotony with a new year wish to the this point when I am penning without a concrete plan. I am letting my thoughts wander and just don’t want to say “Wish you an interesting new year”.

Alright, taking a leaf from Stevie’s (Steve Jobs) presentation style, I will ask(and answer) three questions to help carve an ecstatic 2012 for the testing community we all are championing.

1.Whom are you serving daily?

My thoughts: You are serving the testing artists, who look for better thoughts, those who enjoy the better thoughts and those who think we have better thoughts.

2. Who the hell cares about the testing artists?

My thoughts: I do and daily remind myself to do that! I believe Testing is a craft…only a few respect, most others think “Anyone can do testing”

3. When testing industry has crossed $13B USD(source Internet), why still people think “It’s just freaking QA/testing(used interchangeably)” or "Anyone can do testing"?

My thoughts: I feel it’s the mindset that have existed for ages. Remember the old 70’s – 80’s (atleast that’s what I do), common perception for teaching was similar, it was considered to be the worst but easiest option available to people who could not become Engineer/Doctor/CA(in some pockets of our society though). Maybe, that upbringing is so ingrained that people have not outgrown the rusty thoughts. With premise remaining same, the teaching has just been replaced by QA/Testing in IT industry. These people who are at helm think, anyone can do QA/testing because it’s just freaking QA/testing.

I am sure, above three questions must have provoked some thoughts and maybe ignited some passion to help our community. It’s because each one of us have the authority and responsibility to help our community garner much needed respect. I hope we will see QA/testing become poster child of IT industry during our lifetime.

Wishing you and your family an un-parallel 2012.

Thanks for your time,

- Manav