Monday 28 June 2010

Weekly agile links 28th June - 2nd July 2010

Adventures in Accelerated Learning If you're in the business of spreading knowledge in one way or another, if you're a change agent, trainer or coach or you simply want to learn an effective way to tell a tell then you should read this article. I also highly recommend the 2 books mentioned.

Guidelines for Group Collaboration and Emergence Trust, Respect, Participation, Comittment.. A brilliant article by Venessa Miemis.. for me it created a lot broader understanding of something I've already read about elsewhere. Thanks.

12 Things the Best Bosses Believe I believe in certain things about being a great leader so this one naturally caught my attention. I find this to be a Great list with very useful reminders.

Identifying Waste Lean Thinker says “Make less, buy less, use less, throw away less.”. Sounds reasonable to me :)

Kate Oneal: Productivity 2 years old and still very relevant. From XProgramming.

Cultivate Informal Leadership Jurgen Appelo's article gives some practical advice about leadership that is worth having.

Understand Technical Debt by Playing a Game - Packing Peanuts This game sounds great fun and looks like it will demonstrate technical debt. Thanks for sharing Masa!

Risk Management Methodology Ray W. Frohnhoefer provides some useful guidance that can be used to do risk management in agile (I know, I know "agile is risk management" yet I am regularly asked how do you do it?)

A MANAGER’S GUIDE TO GETTING FEEDBACK A new article by Esther Derby. Incidentally I participated in a similar discussion on one of the agile user group boards.

How can we encourage active participation in groups after the original excitement of forming has died down? an article on Collective Self by lori which suggests that self-organizing work groups don’t live on indefinitely. I'd agree with that. Useful ideas about what options are available once you're in this situation.

Making TDD Stick: Problems and Solutions for AdoptersMark Levison's article about TDD is not about 18 months old. Still plenty of relevant ideas, some not always practical. I'd add BDD at the top of the list.

The Estimate Goat The only bad thing about this site is that I have not discovered it earlier. Great tool to give you estimates!

Your Project Needs Business Rules, Not Meetings To be honest I cannot be bothered to read this one right now and hence I will not comment on it. I am including the link as I might need it later and it does sound controversial which usually means there might be some good ideas in it.

Monday 21 June 2010

SQL Server: Searching data in all tables in multiple databases

Recently, I had to deal with a weird issue which was related to possible invalid references stored in a database. I did not know much about this database so in order to remove these instances I wanted to search through all the tables in all the databases for a specific fairly long and definitely unique string value.

Then I came across this article which suggests a great solution for searching within a single database, however I had a fair amount of databases to look through so instead I wanted to see if with a little bit of tweaking I could make it work for multiple databases. It turned out I can and I thought I'd share the result.

So below is a stored procedure that you need somewhere on the server (db not important) that will search through all the tables in each of the databases you supply as a comma delimited string. You could also rework this to be a simple script rather than a stored procedure if that suits you better.

I hope it does come useful ;)

 /****** Object: StoredProcedure [dbo].[SearchAllTables]  Script Date: 06/18/2010 11:17:56 ******/  
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SearchAllTablesMultipleDbs]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[SearchAllTablesMultipleDbs]
GO
CREATE PROC SearchAllTablesMultipleDbs
(
@SearchStr nvarchar(100),
@DBListCSV nvarchar(1000)
)
AS
BEGIN
-- Copyright © 2010 Plamen Balkanski. All rights reserved.
-- Uses SearchAllTables procedure written by Narayana as a basis for searching data in multiple dbs & tables .
-- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
-- This procedure uses the modified SearchAllTables to allow searching through a list of DBs
-- Note: there is almost no validation so if you use it then ensure you pass existing DB names otherwise it will fail.
SET NOCOUNT ON
DECLARE @idx int
DECLARE @slice nvarchar(1000)
DECLARE @ResultsTable varchar(100)
DECLARE @SqlExec nvarchar(2000)
DECLARE @Delimiter char(1)
-- You can parameterise this one if you want.
SET @Delimiter = ','
SET @ResultsTable = '##MultipleDBSearchResultsTable'
-- drop/recreate the global temp table - note: must be global as otherwise it is not available in the EXECs
EXEC( 'IF (OBJECT_ID(''tempdb..' + @ResultsTable +''') IS NOT NULL) DROP TABLE ['+ @ResultsTable + ']')
EXEC ('CREATE TABLE ' + @ResultsTable + ' (DbName nvarchar(370),ColumnName nvarchar(370), ColumnValue nvarchar(3630))')
-- Split the database names and Run SearchAllTables for each
SELECT @idx = 1
IF len(@DBListCSV)>1 AND @DBListCSV is NOT null
BEGIN
WHILE @idx!= 0
BEGIN
SET @idx = charindex(@Delimiter,@DBListCSV)
IF @idx!=0
SET @slice = left(@DBListCSV,@idx - 1)
ELSE
SET @slice = @DBListCSV
IF(len(@slice)>0)
BEGIN
SELECT @SqlExec =
' USE ' + @slice +
'
DECLARE @SearchStr nvarchar(256)
SET @SearchStr = ''' + @SearchStr + '''
DECLARE @TableName nvarchar(256)
DECLARE @SearchStr2 nvarchar(110)
DECLARE
@ColumnName nvarchar(128),
@DbName nvarchar(256),
@SqlExec2 nvarchar(1000)
SET @TableName = ''''
SET @SearchStr2 =''%'' + @SearchStr + ''%''
WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = ''''
-- In here make sure we reference each database
SELECT DISTINCT @TableName = MIN(QUOTENAME(TABLE_SCHEMA) + ''.'' + QUOTENAME(TABLE_NAME)),
@DbName = MIN(QUOTENAME(TABLE_CATALOG))
FROM ' + @slice +'.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = ''BASE TABLE''
AND QUOTENAME(TABLE_SCHEMA) + ''.'' + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(
OBJECT_ID(
QUOTENAME(TABLE_SCHEMA) + ''.'' + QUOTENAME(TABLE_NAME)
), ''IsMSShipped''
) = 0
WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM ' + @slice +'.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN (''char'', ''varchar'', ''nchar'', ''nvarchar'')
AND QUOTENAME(COLUMN_NAME) > @ColumnName
)
IF @ColumnName IS NOT NULL
BEGIN
SELECT @SqlExec2 =
''INSERT INTO ' + @ResultsTable + ' SELECT '''''' + @DbName + '''''','''''' + @TableName + ''.'' + @ColumnName + '''''', LEFT('' + @ColumnName + '', 3630)
FROM '' + @TableName + '' (NOLOCK) ' +
' WHERE '' + @ColumnName + '' LIKE '''''' + @SearchStr2 + ''''''''
EXEC(@SqlExec2)
END
END
END'
EXEC(@SqlExec)
END
SET @DBListCSV = right(@DBListCSV,len(@DBListCSV) - @idx)
IF len(@DBListCSV) = 0 BREAK
END
END
-- show results
EXEC (' SELECT DISTINCT DbName, ColumnName, ColumnValue FROM ' + @ResultsTable)
END
/*
EXEC SearchAllTablesMultipleDbs 'SearchString', 'DbName1,DbName2'
GO
*/

Weekly agile links 21st - 25th April 2010

Last was a very sad week for me.. :( I was devastated and pretty much off the whole week so just a few links listed.. will see if I can start adding more stuff this week.


Project Failure Modes Root causes of project failure and plenty of other interesting posts on the herding cats blog

Check this out - What a transparency in reporting an issue - lovely:)

WHY PRODUCT OWNERS SHOULD CARE ABOUT QUALITY Roman Pichler has reworked his article that already featured in Weekly Agile Links before.

Kanban case study Financial Services Kanban case study by John Dunion

Wednesday 16 June 2010

Weekly Agile Links 14th-18th June

Some more links from the past week. things continue to be extra busy with plenty going on and finding it difficult to spend time reading.. too bad :(

Lean-agile dogs: Are we chasing the right car? One more Scrum/Kanban article by Pascal Pinck.. some interesting thoughts on what is important.

Business Intelligence Requires Thinking . . . Not Technology Tripp Babbitt talks about business intelligence and maturity levels.

How to read a book in an hour I'm sure it is possible, just haven't quite yet mastered the tricks Jamie Flinchbaugh shares with us...

The Dolt's Guide To Self-Organization Interesting presentation on self organization by Jurgen Apello.

Kanban and Scrum – Intention and Implementation Karl Scotland finally gives the explanation why Scrum and Kanban are like apples and oranges!

AGILE PRINCIPLES REVISITED This is results from a survey asking respondents to rate how important is each of the original agile manifesto principles along with other stuff like what is essential to be considered agile. Interesting idea but they all are .. no really, they are.. Also no mention that being agile based on these results may simply mean nothing.

Animating a Blockbuster: How Pixar Built Toy Story 3 A very Scrum/Agile like process although does not mention the words.. according to e very reliable source who has actually read it ;)

Tuesday 8 June 2010

Weekly Agile Links 7-11th June 2010

Have I said busy in the last weeks? I obviously did not understand the meaning of the word! Anyway, I will still be collecting links and posting them here for the same reasons I started these posts and if it happens that someone finds these useful then even better. Here's my modest collection from last week. Enjoy ;)

Using an Agile Software Process with Offshore Development Martin Fowler writes about his experience with off-shore development in Bangalore. Always interesting to read what he has to say..

A Fundamental Turn Toward Concurrency in Software See, this article is 5 years old and I feel I should have read it a while back.. it is worth a bit of time ;)

June 8, 1637: Descartes Codifies Scientific Method very interesting read by Lisa Grossman

Maximum Viable Product Bradford Cross on product management, looking at some successful products & companies, looks a good read.

Belts and Tools Not Needed to Improve Service Article by Tripp Babbitt related to Systems Thinking Concepts. Generally I like the system thinking ideas.

Tuesday 1 June 2010

Weekly agile links 31st May - 4th June 2010

Another busy week of very little time for links.. hopefully a few good ones below..
just one more week of madness and should be able to provide better quality comments ;)

Enjoy ..

Discovering the DNA of Apple’s Innovation Engine Very interesting research about the relative values of investment in R&D, advertisement, profit per employee and how successful a company is.

New People On Your Project Mark Levison explains why adding more people to a project is a way of slowing your project down

Right.. here's another manifesto suggestion Next step of the Agile Manifesto? What is it? the Manifestos year? Otherwise this one has sensible suggestions.. I agree.

What Motivates People? No huge secrets revealed in this one. PAWEL BRODZINSKI states a truth everyone would sooner or later establish. Once you step on that road of course.. might be better staying off it longer term tbh.

Jeff Bezos and Root Cause Analysis Real 5 whys example (apparently).

SHIFTING THE PATTERN: A SYSTEMS APPROACH TO CHANGE The title kind of explains it.. Esther Derby talks about change and systems thinking..


The "Command and Control" Military Gets Agile Interesting article by Dan Mezick about what happens when the usually inflexible military 'gets' agile

Strategies for Scaling Agile Software Development Scott Ambler explains why Lean thinking is important when looking to scale agile. Perhaps also proves that agile is local optimization?!

Lean Quote of the Day Tim McMahon' lean quote is by John Kotter who reminds us that the root of success involves a sense of urgency