This editorial was originally published on Sept 23, 2008. It is being re-run as Steve is on vacation.
Can developers change the way they build things? Can corporations?
I'd like to think so. After all there are companies and developers that get more efficient as they evolve their development practices. I know that I've gotten better at building software over time, getting more efficient as I learn better ways to actually write code, keep track of changes, quickly build and test, etc. Or maybe it's that I'm more disciplined about working carefully and actually doing things like checking in and out of version control, writing better test cases, and actually following the plan I've setup.
The Capability Maturity Model (CMM) from Carnegie Mellon University that measures the ability of a software development group to better build software. Most software teams rank very low on their scale, requiring much effort to move up the model to a more mature style of development. I'm not sure of those groups at a CMM level or 4 or 5 produce better software than those at level 1, but I'd like to think that they do.
There was a blog post about Agile development, which is a method of software development that I think can help one build software in a quicker and more flexible manner. In the post, which is a look back at an attempt to build a project using this methodology. It didn’t work out, though they did complete the project on time.
It's an interesting read to see a nice self examination of how their culture actually failed them. They couldn't really build Agile software, mostly because of the culture at the company. Despite the desire to change and the buy-in of the technology team, many other factors ended up preventing them from really sticking to their Agile plan.
Well they completed their second project successfully, albeit with some overtime involved. They recognized that they hadn't used the Agile methods and they'd fallen into an Agile Cult instead. It seems the author was a little disappointed in the result, and perhaps in their inability to deliver with Agile methods.
Personally I think that even partially adopting Agile methods results in benefits. Just because you can't deliver incremental releases or change your focus quickly doesn’t mean there aren't benefits. Having a different mindset and trying new techniques can have a lot of benefits for your team. Just thinking about building software differently can let you re-think the way you do things, allowing you to be more self-critical and look for ways to be more efficient.
Constantly trying new methodologies might not sustain you for the long term, but trying different development methodologies can help you find the things that work best in your environment. Once you know what works well, you can then set about changing the culture to become a more efficient software development team.
SQL Prompt 5 is the effortless way to write, edit, and explore SQL. It's packed with features such as code completion, script summaries, and SQL reformatting, that make working with SQL a breeze. Try it now.
‘10 Tips for Efficient Disaster Recovery’
Learn Steve Jones’ disaster recovery lessons, and be better prepared for future disasters, big or small. Read now.
Understanding thousands of lines of code of an existing database is very time-consuming and tedious, prone to inadvertent oversight of key logic points. We are looking at advanced ways to provide greater insight into your code base while reducing the numerous demands placed on the developer. Please help us by completing this short survey to help us define the requirements. More »
Tom Stringer (@SQLife) was working on some HADR testing for a customer to simulate many availability groups and introduce significant load into the system to measure overhead and such. In his quest to do that he was seeing behavior that he couldn’t really explain and so worked with him to uncover what was happening under the covers. More »
First off, I should apologize for not blogging in quite a while. I’ve been traveling extensively and, because traveling can... More »
Question of the Day
Today's Question (by pramod singla):
Out of 4 statements namely 1,2,3,4,5, which of the statement/statements will execute successfully? (select 4)
if object_id('test2') is not null
drop table test2
if object_id('test1') is not null
drop table test1
create table test1 (a int not null primary key);
create table test2 (b int,a int )
insert into test1
create trigger trig_test1
on test1 after insert
insert into test1
insert into test1
declare @temp as table (b int)
insert into test1
select * from @temp
Think you know the answer? Click here, and find out if you are right.
We keep track of your score to give you bragging rights against your peers.
This question is worth
2 points in this category: T-SQL.
Did you miss yesterday's question,
T-SQL? Answer now.
We'd love to give you credit for your own question and answer.
To submit a QOD, simply log in to the
SQL Server 2012 Integration Services Design Patterns is a book of recipes for SQL Server Integration Services (SSIS). Design patterns in the book show how to solve common problems encountered when developing data integration solutions. Because you do not have to build the code from scratch each time, using design patterns improves your efficiency as an SSIS developer. In SSIS Design Patterns, we take you through several of these snippets in detail, providing the technical details of the resolution. Get your copy from Amazon today.
This iTVF will create a tally table of any size with user-defined lower and upper bounds. So if you want a tally table with 100,000 rows that starts at 250,001 and ends at 350,000, just enter the lower and upper bounds as parameters and the function does the rest. As written, it converts any negative number entered as a min parameter into zero. (A max parameter < 1 will generate an error.)
I ran a performance test on this function against a "physical" tally table with 10,000,000 rows using Jeff Moden's test methodology and test data generator. The testing code can be made available on request. This function performs as well or better than the physical tally table.
So if you have an application that requires an upper bound greater than the traditional 10-11,000 rows of the common tally table, or if you need to set a range of row numbers, this function will do that easily with no loss of efficiency.
I want to give credit to Jeff Moden for generating the concept through his articles and research on tally tables; credit to Dwain.c for his keen-eyed suggestions and tweaks; and of course to Brian Bates and his row-generating algorithm without which this function could not have evolved.
Continue control from rollback in trigger to procedure
- Hi Dear,
[code="sql"]CREATE TABLE TestTable
CREATE TRIGGER TestTable_Insert
DECLARE @ID INT
SELECT @ID = [ID]
IF @ID = 1
CREATE PROCEDURE p1
- Okay, a topic that has NOTHING to do with SQL . . .
Came across [url=http://www.sqlservercentral.com/Forums/Topic447796-4-1.aspx]this link[/url] describing the SSC point scoring descriptions,...
Today's Random Word!
When you woke up today, or logged-onto Opera Forums, you may have had a dream, a thought, a scene...
SSIS Scenario Help me ?
- Dear All,
Have a nice day for all.
We have a scenario for out project.we have extract data from oracle sourece to...
Roll back .AddRow() in Script Component?
- Hi all
I have an asynchronous script component which does something like this:
this.DataOutputBuffer.ETLLogPackageExecutionId = ETLLogPackageExecutionId;
//other columns defined here
This newsletter was sent to you because you signed up at SQLServerCentral.com.
Feel free to forward this to any colleagues that you think might be interested.
If you have received this email from a colleague, you can register to receive it here.