THE SQL Server Blog Spot on the Web

Welcome to - The SQL Server blog spot on the web Sign in | |
in Search

Jamie Thomson

This is the blog of Jamie Thomson, a data mangler in London working for Dunnhumby

Why a SQL or BI developer should learn .Net

Siddharth Mehta posted a nice blog post today entitled Why a SQL developer of BI developer should learn .Net in which he outlined four reasons that he thinks make it beneficial for SQL Server developers to have an appreciation of .Net. Those reasons being:

  •  To protect oneself and your database from becoming slave of application
  • .NET is the programming backbone of Microsoft BI Stack
  • Performance Optimization
  • Error control

Siddharth explains his reasoning and I wouldn't disagree with any of it however I would add a reason that I think is even more important than those. The reason I like to have an appreciation of .Net isn't so that I can write .Net code per se, its so that I can speak the same language as the .Net guys on my team. When they're throwing around their fancy acronymns, frameworks and goodness knows what else I don't enjoy being clueless about what they're talking about, I want to be able to join in and offer an opinion. For that reason I make a point of learning as much .Net related material as I have time to, even if I'm never going to use it.

Its a point I've argued with a number of people in the past, most notably my good friend and colleague Rich Griffin who is a Silverlight developer (and MVP). Rich vehemently made the point that a database developer's domain is the database and everything above that is preserve the .Net guys. The two are architecturally seperate so why does one type of developer need to know about the other? (I'm paraphrasing but I believe that was the gist of what he was saying).

I disagreed, I'm of the opinion that knowing how the other guys on my team work and understanding their needs of me makes me a better team member. I'm often reminded of a quote I remember the great dutch footballer Denis Bergkamp making during an interview. He was talking about his early days at Ajax and he said (again, I'm paraphrasing):

During training sessions they used to make us strikers swap positions with the defenders. It wasn't so that we would be able to play in defence if we ever had to, it was so that we would know how a defender thinks!

That quote has always stuck with me and its one I like to trot out from time to time as I think that ethos can be applied to our way of working too.

 Do you have any thoughts about this? I'd be interested to hear from any .Net devs that have the same opinions that Rich did.



Published Monday, July 5, 2010 1:59 PM by jamiet
Filed under:

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS



Daniel Auger said:

I think your reasoning is sound.

In an ideal world, the database design shouldn't affect the application design and vice versa. However, in the real world, we often have to make decisions and tradeoffs in order to have an app that can scale. Therefore, I personally think both application coders and database devs/DBAs should understand the other technology enough to know when it is appropriate to do something less than optimal on one side because the benefits on the other side will make up for it.

I personally am a C# guy, but knowing TSQL and SQL Server to some degree of depth has really helped me as a developer. Having this knowledge has also helped me to relate to, and communicate with, the DBAs I work with. I think the reverse would be true for any DBA.

In addition to learning .NET, I would encourage DBAs to keep an eye on trending architectural strategies such as Not Only SQL (NOSql), command query separation (CQRS), event sourcing, etc... As time goes on, I'm sure many developers are going to advocate doing away with the traditional "one true enterprise database" etc... If the DBAs are not up to speed on these architectures, the wrong choice could be made.

July 5, 2010 2:06 PM

Cade Roux said:

Absolutely agree on avoiding compartmentalization which comes from expecting team members to wear blinders.

DBAs, database developers, client developers - all need to have some understanding of the viewpoints of the other parts of the architecture.

A DBA who doesn't understand developers will cause developers to work around the DBA instead of with the DBA. etc. etc.

At which point the system will lose cohesion.  I would say it is the responsibility of the architect to create a structure and a vision/road map which ensure that developers in the different roles work so that their component of the system is in harmony with the overall architecture and not overreaching the design.

Ultimately an architect is balancing the needs of maintenance, cohesion, coupling, etc.

So, for example, if a developer says that the database needs to be a dumb repository and the architect was relying on the database layer as a consistent data services, then the final result is not going to meet the expectations of the architect.

July 6, 2010 1:23 AM

Ben E said:

I completely agree - it's nice to hear someone from a data-centric background say it.

The appreciation of integration is especially useful when working with products like SharePoint - which require .NET skills to customise, but are mainly sold to decision makers because of their BI capability.

I'm actually a .NET developer who fell into BI by accident - before that I was an Access developer, which was a useful apprenticeship in appreciating that the life cycle also includes BI assets (e.g. reports).  The fact is that they are not completely separate worlds and an understanding of both leads to much more robust architectures and agile applications.

July 6, 2010 2:21 AM

WIDBA said:

Agree with you on the need for some cross training.

Coming from a development background to the land of data has proven useful many times.  Having general knowledge of .NET architecture, patterns and the data access technologies has proven useful as LINQ/ORM type stuff becomes more prevalent and a part of mainstream data access.  The ability to work with the development teams and talk their language (to some degree) has proven useful when I want to work on tuning/profiling the generated code.  It would seem that they are more willing to come to the table to talk performance, etc than if we were separatists and just played departmental politics.  (DBA says no, they say procs cause their deployments to be late, etc)

Talking their language, and learning ancillary technologies just buys more "cred" with the "arty" .net types :)

July 6, 2010 11:04 AM

LEverest said:

Great points, Jamie. Thanks for sharing!


July 7, 2010 10:41 AM

Koen said:

Another good point for a BI guy to learn .NET is so that you can develop your own scripts in the Script Component/Task in SSIS.

I've learned myself VB.NET right before I started working in BI, and now I'm "the .NET guy" of our team when it comes to scripting in SISS :)

July 14, 2010 3:11 AM

Kristian said:

Cross discipline knowledge is also extremely useful for determining where a piece of functionality is best implemented - rather than seeing only nails just because I'm a hammer, one can identify when it's time to use a different tool, even if that might require a different carpenter.

And yes, my home is currently being renovated :-)

July 16, 2010 10:01 AM

cb said:

Agreed, I consider myself a C# developer, but do a fair amount of database development too, such as SSIS.

Specialization can make you a one trick pony.

Of course there is something to be said for being good at what you do and if you don't have the extra time then at least be good at your primary role.

July 21, 2010 5:12 PM

Jitendra said:

Yes,truely agree,It encourages me more to learn .Net.

We can develop SSIS custom components for different uses and whole object model (like dynamic SSAS object creation and processing) is there to see and program for smart/automation application.

August 9, 2010 8:22 AM

khawla said:

nice comment,and also i agree with it

June 16, 2012 1:22 PM

JJ said:

Hi everyone,

I am a BI developer, and would like to gain some .Net skills for MS BI stack. Any suggestions in terms of books / materials to get me started? Thanks.

December 9, 2012 8:46 PM

Leave a Comment


This Blog


Privacy Statement