Chris Eargle, Telerik Technical Evangelist and Microsoft C# MVP recently shared few life saving tips for developers. Firstly, he advises developers not to make use of weird code constructs which create a difficult to locate bug that prevents the software from working properly.
Chris advocates the need for using a professional version control which helps developers to recover older versions of the source code without any difficulty. However, he suggests you to make sure that the server is running on a separate system.
According to Chris, performance issues come in many shapes and sizes, and they cost users tons of time. Hence, it is advisable to employ a profiler to identify the best target for optimization.
Chris talks about the necessity of using asynchronous calls that may run long and also avoid locking the user interface including cleaning up unmanaged resources by using finally blocks or by using the disposable pattern. If you are unable to identify the reason behind memory leaks, then third party memory profilers can be used to identify the root cause.
"Backups should be stored on premises separate from the original server since fires and other natural calamities may occur at any time," mentions Chris. However, he is of the opinion that backups should not be stored in online file hosting sites since it has an inherent risk associated with it.
In an interview to InfoQ, Chris shared his views on the tips he posted
InfoQ: Do you follow the tips you mentioned in your day to day programming tasks?
When it comes to professional software, I follow my suggestions. I qualify it in this manner because I'm not as stringent when it comes to projects I'm writing for myself or demonstration of a technique.
InfoQ: Can you suggest any fault free backup service for developers?
Backup services come in many flavors, and choosing one depends on one's infrastructural needs. For example, I use a paid GitHub account to maintain my private source repository, as it works well for my needs. When I worked for an insurance company, we backed up servers to tape on-site and stored older backups with a physical storage service off-site. This was to enable quick restorations as needed and protected our data in the case of a physical catastrophe.
There are some great professional data storage services available to any size business. I will address smaller shops in the next session.
I think one should be careful when considering any form of backup to be fault free. There are obvious risks and hidden risks, and care must be taken to reduce one’s overall risk to an endurable level based on acceptable cost for doing so.Here's an example of a hidden risk. Many people used MegaUpload as an online back up provider. When MegaUpload (currently MEGA) was ceased by the government for copyright abuse allegations, many people didn't anticipate that their legitimate data would also be ceased. To further complicate matters, the government refused to release the data, and everyone who stored information there without another system in place lost everything.
InfoQ: What is your opinion about using SkyDrive for backup storage?
SkyDrive and similar cloud storage sites are great for shops with a low amount of data. The maximum capacity offered by SkyDrive is 100 GB (paid), making it inappropriate for the enterprise.
InfoQ: You work for Telerik and recommended JustDecompile. Can you suggest any other decompiler tool?
Other .NET decompilation tools are in competition with a product I represent, and it is a conflict of interest for me to endorse another one.
InfoQ: Do you think Visual Studio 2012 has performance issues when installed in older computers?
My experience is that Visual Studio 2012 performs better on older computers than previous versions.
InfoQ: Nowadays, developers make use of several third party tools for their applications. Can you share any tips which developers should follow while choosing/selecting a .NET component tool?
You should always choose tools that enhance your productivity the most, and this is influenced by many characteristics such as features, user experience, and whether it inhibits the developer’s current environment (e.g. by being obtrusive). Choosing components is similar, but the focus typically shifts from its impact on the developer to how it impacts the end user. There's also a matter of technology when selecting components.For example, since I tend to write websites using ASP.NET MVC, Kendo UI is far preferable to me than ASP.NET AJAX RadControls. However, someone using ASP.NET WebForms would be better off with the latter. You can make both work in either environment, but code should be maintainable, and a clean implementation goes a long way to achieving that.