Saturday, November 03, 2012

Visual Studio 2010 best extensions

Developers are mostly lazy. Nobody wants to do the same things every day. Doing the same activities can be very boring and non productive. Of course modern IDE should have multiple funcionalities that can improve speed of coding and development but it's really hard to satisfy all users at once.

Below I present my favourite extensions to Visual Studio 2010. Working without them would be much slower and frustrating. This set isn't focused mainly to any of the Visual Studio project type but I've been using them mainly in web development - ASP.NET MVC and WCF projects.

CodeMaid

Visual Studio default formatting engine isn't the best solution out there. It is very unefficient when formatting mixed html and C# (Razor). This extension is trying to focus this problem. In my opinion it's definitely better than default engine but in the field of formatting razor views there are still some things to do and fix. But when it comes to formatting pure C# I think we can't find better solution.

Collapse Solution

Very small extension - it adds one option in solution context menu - when we can collapse all projects in solution. It can spare our time when we have solution with big number of projects inside.

Go To Definition

I've been working a long time with Java and PHP and for these technologies I've mainly used NetBeans IDE. I don't want to start a war which is better Eclipse or NetBeans but I've used to one feature when exploring code in NetBeans: CTRL + click on the identifier is opening definition of a class, interface etc. I don't know why this feature was mapped to F12 in Visual Studio. F12 is far far away from normal hands position - CTRL is better choice for this. This extension is simply adding CTRL + click functionality to the Visual Studio.

Indent Guides

When we are looking to code that is indented several times it's hard to tell which ending bracket is matching an opening bracket. This another simple exntesion fixes this problem by adding lines from opening to closing bracket. No more guessing!

ItalicComments

There is a best practise saying that code should explaing itself without the need of comments or when you think that something should be commented it's probably been bad written. Whatever the case might be everybody is working from time to time with comments. For quick distinction between code and comments this extension is making them italic. I know this is a little cosmetic change but I prefer it to look like that.

Spell Checker

Staying in comments topic they should be written in spoken language so I think they should have a spell checker binded to. This extension is doing this exact thing. I may be a pedantic person but I really don't like typos in ANY text.

VS10x Code Map v2

Making our way through big files (I know that classes with number of methods have bad metrics and etc.) can be frustrating. By default we have a selector with list of methods, fields and properties, but to select something we have to scroll through which isn't effective when we have a long list. Better solution is having this list opened all the time when we simply click one element on the it and we don't need to scroll at all. This extension adds code map window which simplifies exploring code. It has couple of useful configuration options which can help better organize showed code map.

VS10x Method Block Highlighter

Very simple extension which allows us to simply colorize code - it can be helpful when editing code in several places in one file at once.

VSCommands for Visual Studio 2010

The last but definitely not least extension on the list. Frankly speaking my favourite one. I really like "Locate in Solution" feature which is very helpful when we want to locate currently edited file in the solution explorer. I don't like this feature from Visual Studio because we can either turn this on or off - we don't have this on-demand localization - it's really annoying when solution explorer is jumping every time we change a file. Apart from this we can edit project and solution files - which can spare us having another editing tool.

Of course everybody have his or her own best practises and favourite extensions, but I feel comfortable working with mentioned set.


Friday, November 02, 2012

Interviews as a way to improve your skills

Living in IT world isn't easy. Staying in touch with most recent technologies and any updates from the IT world requires a lot of time and energy. How to quickly gain knowledge how to improve our skills to be more attractive? Solution is very easy: go to as many interviews as you can - to as many companies as you can. Of course I mean in the industry of our interest. There are a lot of free benefits from this:
  • we can quickly gain knowledge about what's new going on - what new technologies are currently mostly used, what key knowledge is important
  • we're getting used to stressful conversations about our carrier and personality - it would be no surprises later
  • we can take free tests on different technologies
Having all this three points we can quickly identify our weak points and in which areas we need to improve ourselves. Of course this technique is rather considered in long-term (a year or more) but can be very benefitial.

Mainly we can easily get through the first step of recruitment in any company, beacuse it's rather being done by someone that can barely judge our true skills (no offence). Usually this first contact person we are speaking with, knows nothing about technology and IT. It's easy to pass this first step because it's mainly being done by recruitment and human resources companies.

Second (optional) step is harder - we are speaking (usually by the phone) with someone from our potential employer. It depends on company but mainly this person knows much more about candidate requirements and technology. But it's relatively easy to pass also this step. Of course we must have some knowledge about given topic, but mainly there are questions about what we've been doing in our previous company.

Last step is the most difficult one - we have an interview with technical person - lead programmer or somebody similar - master technical guru of the company / team. Here we have the essentials. We are being asked to solve difficult problems - we can identify where are our weak points. Typically we're taking some tests - we can check what we need to learn, and what we're really good at. After all, even when we've failed at some tasks we can ask questions about how it should be done and what is the answer.

Tests and questions are usually similar between companies, so it's easy to learn just by doing them. I had a situation that I had scheduled four interviews in a row in one day (the third step ones). First one was a disaster - I know that I really didn't fit to that position but I wanted to try for fun. I learned a good lesson from it, asked couple of questions and left unemployed but smarter. The next two interviews haven't gone as bad as the first but still I was not satisfied with the results. Before the last one I'd been after session of three exhausting recruitment sessions on which I'd learned a big set of new things and solutions. It's payed me a lot, because on this last one I've been asked similar questions to these from the three earlier (failed) conversations - it was just a piece of cake to asnwer to all of them.

One day of intense interviews can give you a lot of experience. It's really worth sending cv to big number of companies from time to time. Actually regular searching through job offers can even give you some knowledge about what capabilities are most wanted on the job market.