13. October 2009 17:24
This is my opinion on choosing a programming language and technology.
I was working on this project last night and it occurred to me there are so many different options out there within development on how to create and deploy an application. I'm not only taking about .NET. You have PHP, MySQL, Oracle, Java, MS SQL, ASP.NET, WPF, WCF, Silverlight, XML, CSS, Javascript, and the list goes on and on. And not to mention all of the javascript libraries you can choose from! I think from what I just listed, I'm a web guy :-) (that is an entire different topic with me). I'm sort of bias towards the web as I think it's a great environment for maintenance and deployment.
I will stick more with the .NET stuff since that is my choice of language when it comes to development. However, when it comes to backend data storage I have used Informix, DB2, Oracle, MySQL and MS SQL. I will say MS SQL is my strength and the others I have listed were mostly for read only queries (except DB2). We can't forget using XML as a data storage method as well.
So how does one choose which path or direction to take when developing an application? Well in my opinion it comes down to a few things. 1) You are forced to go a direction because a business has already invested time and money into a technology they have chosen or 2) You can take it upon yourself to learn about technologies and how they interact with each other. I personally emphasize on 2 because it can help with 1 as well. When I say "learn about technologies" I do not mean learn how to develop in all of them. That's kind of an impossible task if you ask me. I mean read about new technologies, and techniques within those technologies, to see the possible advantages and disadvantages.
I think most people will get caught up in just a few technologies and think that is the way to go for all applications. I think this is the biggest mistake someone can make. Then again I have chosen .NET for all my applications (except backend) so I could be wrong in some of the applications I have created. With me, I started with C++ because of education and started with .NET in the business world. However I will say, and truly believe, because I started with C++, learning any other language is not too difficult, just takes a little time.
So back to my emphasis on point number 2 above. I feel educating yourself on a daily basis is the best thing someone can do in this field. I personally take 1-2 hours out of my day and read something new about technology, or something new within a technology I am already working with. For example, yesterday I was reading about how to do grouping within a Silverlight 3 data grid. I just don't stick with programming languages either. I read about anything technology. Examples are smart phones, new TV's, game consoles, dvd players, laptops, desktops, voip, space and science, social networking, etc... I think reading about stuff you don't deal with on a day-to-day basis helps keep your eyes open as to what other options you have when creating applications and choosing a technology for the application.
So what is my personal path for development? Well right now I am still with the .NET languages and don't see myself switching anytime soon. However, I encompass all aspects of the .NET language as needed. I will admit, I love the .NET languages. And I love seeing more and more open source stuff being created for it as well. I wish I had more time myself to contribute more to the community and open source community. However, as an example, the project I am working on now I chose to use these main technologies: ASP.NET 3.5 SP1, AjaxToolkit, WCF, Silverlight 3 and MS SQL 2005. Silverlight 3 will be for the backend administration interface while ASP.NET and the AJAXToolkit will be used for the front end with the WCF Service and MS SQL 2005 taking care of the middle tier and backend.
In conclusion to this random rambling of mine, I don't think there is a correct path to stay on. You have to be able to adapt to the new technologies and not be afraid to try them out. Although I know point number 1 is tough to get around, but to better yourself, team, and others around you, I feel number 2 is extremely important. Choosing number 2 not only makes yourself better as an independent developer, but also as a developer for whatever business you are working for. Being able to give insight as to what other options are out there I feel is critical when making a decision on how to spend money and time. Now I know doing something in a new technology may take more time up front, but usually you save in the long run if done correctly.
End of rambling....