Monday, July 05, 2010
I'm reading: Why a SQL Developer or a BI Developer should learn .NET ( DotNet )Tweet this !
As of this draft, I work as a Technical Lead for designing applications where Microsoft Business Intelligence Stack of technologies are involved and I specialize in the same, but this has not been my background right from the start of my career. Like every fresh graduate from an average college, I started my career with struggle to find a break in the fiercely competitive Indian IT industry. I was a patron of .NET during those days and spent few years in application programming using .NET. The peak point was when I delivered a .NET based solution as a project lead for fortune 500 company. I completed my Microsoft Certified Solution Developer Track over a period of 2 years, and I worked with applications that involved different BI Tools like Netik (you would not have even heard of it, but it was a very popular tool in the banking domain in those days), Business Objects and others. Some of the reasons why I feel that every database professional need to learn .NET are as below:
1) To protect oneself and your database from becoming slave of application: The general tendency of application developers / architects / designers (in my experience) is that they tend to incline more towards keeping application in shape rather than database since application is the face of the solution to the client, and not the database. Effectively application developers start taking higher precedence in dominating the implementation of requirements. Many a times you being a SQL Developer or a SSRS Reports developer might want to challenge the requirement as you might feel that it can be well implemented inside the application and there is not need to stretch yourself and your database. But you won't be able to back it as you don't understand the .NET programming at all to challenge it.
To give a real life example from my experience, once I was asked to implement a complex logic that would have required use of a CTE to recursively loop a huge dataset, but in fact the application never used that sorting at all since the control that was used to display the same dataset was not able to populate itself based on this sorting. My experience in .NET helped me to detect this gap and make the application team digest that you do not need this from database, and this worked in my as well as my database's benefit.
2) .NET is the programming backbone of Microsoft BI Stack: SSIS and SSRS has controls / components that use either VB.NET and/or C# as the programming language. Also if you want to create a class or control library to extend or create a new control / component, knowledge of .NET is a must.
3) Performance Optimization: This might come as a shock, but I would explain it. During the time when .NET was born, it's class libraries were not as powerful / feature rich as they are today. This evolution has brought new way of data access like ADO.NET Entity Framework, Language Integrated Query, Data Access Application Block and other different ways that I might even not know. When your database performance optimization attempt exhausts, one tries scale hardware as the final way to boost performance. But most of the times, the skills that one lacks is .NET programming skills that can teach application, how to be nice to database.
4) Error control: Yes, again this come as a surprise to many. Application developers might think of database just as a box in which data can be packed up as required. But you as a database professional would know how to keep you database happy. For ex, an application developer might pass blank values where they did not receive any input from the user, but you as a database professional understand that NULL is different from Blank ('') values. If you have an average working knowledge of .NET programming, you would immediately advise the application programmer to use SQLDBNULL constant instead of passing such values.
I am not biased with application / OLTP / BI development or developer role, but I have been in all these roles at some point of time in my career. Being a bridge between application programmers and database developers is a real challenge and a very interesting role in itself. If you have a working level knowledge of application programming using .NET, being a database / BI professional, you can smoothly swing across any streams right from application to data warehouse in a Microsoft based solution. I have been in this role and the experiences have been very interesting. If you have been in such role or want to be in such role, and have any feedback or questions on this, feel free to share it with me.